docs/unix-phil
changeset 24:2335f5658fca
added poster and slides
author | meillo@marmaro.de |
---|---|
date | Fri, 05 Mar 2010 23:56:48 +0100 |
parents | f0511a56416e |
children | e6ac51dc18bf |
files | cs-2010-03_poster.ms makefile slides unix-phil-slides.ms |
diffstat | 4 files changed, 461 insertions(+), 1 deletions(-) [+] |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/cs-2010-03_poster.ms Fri Mar 05 23:56:48 2010 +0100 1.3 @@ -0,0 +1,56 @@ 1.4 +.fp 1 R pplr8a.afm uplr8a.pfb 1.5 +.fp 2 I pplri8a.afm uplri8a.pfb 1.6 +.fp 3 B pplb8a.afm uplb8a.pfb 1.7 +.fp 4 BI pplbi8a.afm uplbi8a.pfb 1.8 +.fi 1.9 +.ad b 1.10 +.hy 14 1.11 +.de P 1.12 +.br 1.13 +.sp 0.8 1.14 +.. 1.15 + 1.16 +.sp 1i 1.17 +.ps 30 1.18 +.vs 32 1.19 +ChaosSeminar 1.20 +.br 1.21 +des CCC Ulm 1.22 + 1.23 +.sp 1.0i 1.24 +.ps 44 1.25 +.ft BI 1.26 +.ce 1.27 +Die Unix Philosophie 1.28 + 1.29 +.sp 0.7i 1.30 +.ft R 1.31 +.ps 18 1.32 +.vs 20 1.33 +.nr PD 10p 1.34 +Ein Vortrag von \fBMarkus Schnalke\fP 1.35 +über die wahre Genialität von Unix. 1.36 +.P 1.37 +Unix ist ein beeindruckendes Betriebssystem und eine 1.38 +erstklassige Programmsammlung. 1.39 +Doch dies ist beides letztlich nur eine Folge. 1.40 +\fIDas eigentlich besondere an Unix ist seine Philosophie.\fP 1.41 +Die Unix Philosophie ist eine Sammlung von Konzepte und 1.42 +Designziele die in Unix umgesetzt wurden. 1.43 +.P 1.44 +Dieser Vortrag wird die Unix Philosophie vorstellen 1.45 +und erklären weshalb sie zu hervorragender Software führt. 1.46 +.P 1.47 +Neben den rein technischen Aspekten bietet die 1.48 +Unix Philosophie aber auch Anreize für das tägliche Leben. 1.49 +Sie ist mehr als Richtlinien um gute Software zu erzeugen, 1.50 +sie ist eine Inspiration in vielerlei Hinsicht. 1.51 + 1.52 +.sp 1i 1.53 +.ps 30 1.54 +.vs 36 1.55 +.ce 2 1.56 +Montag, 08. März 1.57 +.br 1.58 +20:00 Uhr, H20 1.59 +.br
2.1 --- a/makefile Tue Mar 02 14:34:07 2010 +0100 2.2 +++ b/makefile Fri Mar 05 23:56:48 2010 +0100 2.3 @@ -1,7 +1,10 @@ 2.4 -all: unix-phil.ps unix-phil.txt 2.5 +all: unix-phil.ps unix-phil.txt unix-phil-slides.ps 2.6 2.7 unix-phil.ps: unix-phil.ms 2.8 sh -c "`doctype unix-phil.ms`" >unix-phil.ps 2.9 2.10 unix-phil.txt: unix-phil.ms 2.11 sh -c "`doctype -n unix-phil.ms`" >unix-phil.txt 2.12 + 2.13 +unix-phil-slides.ps: unix-phil-slides.ms 2.14 + sed -n '/./p' unix-phil-slides.ms | hl troff -ms slides - | hl dpost | insline 1 "%%BoundingBox: 0 0 600 450" >unix-phil-slides.ps
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 3.2 +++ b/slides Fri Mar 05 23:56:48 2010 +0100 3.3 @@ -0,0 +1,62 @@ 3.4 +.pl 7i 3.5 + 3.6 +.fp 1 R H 3.7 +.fp 2 I HI 3.8 +.fp 3 B HB 3.9 +.fp 4 BI HX 3.10 + 3.11 +.nr PS 16 3.12 +.nr VS 20p 3.13 +.nr PD 12p 3.14 + 3.15 +.ds CH " 3.16 + 3.17 +.am TL 3.18 +.sp 0.7i 3.19 +.ps 24 3.20 +.vs 28p 3.21 +.. 3.22 +.am AU 3.23 +.\"'sp 4.0i 3.24 +.\".ps 14 3.25 +.\".vs 20p 3.26 +.. 3.27 + 3.28 + 3.29 +.de P 3.30 +.ds CH " 3.31 +.bp 3.32 +\& 3.33 +.sp 1.4i 3.34 +.ce 1 3.35 +\s+8\fB\\$1\fP\s-8 3.36 +.na 3.37 +.. 3.38 + 3.39 +.de S 3.40 +.ds CH \s+2\f3\\$1\fP\s-2 3.41 +.bp 3.42 +.LP 3.43 +.na 3.44 +.. 3.45 + 3.46 +.de I 3.47 +.if !"\\$1"" .ds BX \\$1 3.48 +.if "\\$1"" .ds BX \(bu 3.49 +.IP \\*(BX 3.50 +.. 3.51 + 3.52 +.de CW 3.53 +\&\f(CW\\$1\fP\\$2 3.54 +.. 3.55 + 3.56 + 3.57 + 3.58 +.\" .nr PO 0.5i \" page offset = left margin 3.59 +.\" .nr HM 1i \" header margin 3.60 +.\" .nr PS 12 3.61 +.\" .nr VS 14p 3.62 +.\" .nr PD 6p 3.63 +.\" .nr LL 6.5i 3.64 +.\" .pl 15c 3.65 +.\" .ds RF "
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 4.2 +++ b/unix-phil-slides.ms Fri Mar 05 23:56:48 2010 +0100 4.3 @@ -0,0 +1,339 @@ 4.4 +.TL 4.5 +\fR\s-6Why\s0\fP 4.6 +.br 4.7 +the Unix Philosophy 4.8 +.br 4.9 +.vs -4 4.10 +\fR\s-6(still) matters\s0\fP 4.11 +.AU 4.12 +.ft R 4.13 +.sp 1.2i 4.14 +.ps 11 4.15 +markus schnalke <meillo@marmaro.de> 4.16 + 4.17 + 4.18 +.S "goals of this talk 4.19 +.I 4.20 +introduce the Unix Phil 4.21 +.I 4.22 +explain why most modern software is crap 4.23 +.I 4.24 +explain why the Unix Phil leads to better software 4.25 +.I 4.26 +convince you that good software is of matter 4.27 +.sp 2 4.28 +.I 4.29 +make you think 4.30 + 4.31 + 4.32 +.S "roadmap 4.33 +.I 4.34 +Historical background 4.35 +.I 4.36 +What is the Unix Philosophy? 4.37 +.I 4.38 +The Unix Phil after Gancarz 4.39 +.I 4.40 +Discussion on real world examples 4.41 +.I 4.42 +The Unix Phil is more than software dev guidelines 4.43 + 4.44 + 4.45 + 4.46 +.S "me and the UP 4.47 +.LP 4.48 +first contact: through the suckless project 4.49 +.LP 4.50 +``cat -v Considered Harmful'' 4.51 +.LP 4.52 +``The Unix and the Echo'' 4.53 +.LP 4.54 +``The Unix Programming Environment'' 4.55 +.sp 1 4.56 +.LP 4.57 +better understanding through digging in the past 4.58 + 4.59 + 4.60 + 4.61 + 4.62 + 4.63 +.P "historical background 4.64 + 4.65 + 4.66 + 4.67 + 4.68 +.S "historical background 4.69 +.I 4.70 +the late 60s and early 70s 4.71 +.I 4.72 +operating systems are complex 4.73 +.I 4.74 +MULTICS just failed 4.75 +.I 4.76 +Brooks' ``The Mythical Man-Month'' 4.77 +.I 4.78 +a lot of different hardware 4.79 +.I 4.80 +limited computing power 4.81 +.I 4.82 +textual input and output (line printers) 4.83 + 4.84 + 4.85 +.S "everything is a file 4.86 +.LP 4.87 +is the(?) basic concept in Unix (and even more in Plan9) 4.88 +.LP 4.89 +made simple operating systems possible 4.90 +.LP 4.91 +it is not covered by the Unix Phil; the Unix Phil is on a different level 4.92 +.sp 2 4.93 +.LP 4.94 +Unix is mainly two things: 4.95 +.I 4.96 +an operating system (system calls) 4.97 +.I 4.98 +a toolchest (coreutils) 4.99 + 4.100 + 4.101 + 4.102 +.P "What is the Unix Phil 4.103 + 4.104 + 4.105 + 4.106 +.S "What is the Unix Phil *itself*? 4.107 +.LP 4.108 +``The Unix philosophy is a set of cultural norms and philosophical 4.109 +approaches to developing software based on the experience of 4.110 +leading developers of the Unix operating system.'' 4.111 +(wikipedia) 4.112 +.sp 2 4.113 +.LP 4.114 +How the inventors of Unix write software. 4.115 +.LP 4.116 +Common things of classic Unix tools. 4.117 +.sp 2 4.118 +.LP 4.119 +difficult to define 4.120 + 4.121 + 4.122 +.S "Unix Phil vs. SW dev processes 4.123 +.LP 4.124 +the Unix Phil 4.125 +.I 4.126 +much: *what* to program 4.127 +.I 4.128 +few: *how* to program 4.129 + 4.130 +.LP 4.131 +Software developments processes: 4.132 +.I 4.133 +few: *what* to program 4.134 +.I 4.135 +much: *how* to program 4.136 + 4.137 +.sp 2 4.138 +.LP 4.139 +Extreme Programming is like the Unix Phil 4.140 +but with more *how* than *what*, 4.141 +and with formalisms 4.142 + 4.143 + 4.144 + 4.145 + 4.146 + 4.147 +.S "What is the Unix Phil? 4.148 +.I 4.149 +Doug McIlroy (1978) 4.150 +.I 4.151 +Mike Gancarz: ``The Unix Philosophy'' (1994) 4.152 +.I 4.153 +Eric S. Raymond: ``The Art of Unix Programming'' (2003) 4.154 +.sp 2 4.155 +.I 4.156 +Richard Gabriel: ``Worse is Better'' (1989) 4.157 + 4.158 + 4.159 +.S "Doug McIlroy 4.160 +.LP 4.161 +This is the Unix philosophy: 4.162 +.I 4.163 +Write programs that do one thing and do it well. 4.164 +.I 4.165 +Write programs to work together. 4.166 +.I 4.167 +Write programs to handle text streams, because that is a universal interface. 4.168 + 4.169 + 4.170 +.S "Mike Gancarz: ``The Unix Philosophy'' 4.171 +.I 4.172 +Small is beautiful. 4.173 +.I 4.174 +Make each program do one thing well. 4.175 +.I 4.176 +Build a prototype as soon as possible. 4.177 +.I 4.178 +Choose portability over efficiency. 4.179 +.I 4.180 +Store data in flat text files. 4.181 +.I 4.182 +Use software leverage to your advantage. 4.183 +.I 4.184 +Use shell scripts to increase leverage and portability. 4.185 +.I 4.186 +Avoid captive user interfaces. 4.187 +.I 4.188 +Make every program a filter. 4.189 +.sp 1 4.190 +.LP 4.191 +plus ten lesser tenets 4.192 + 4.193 + 4.194 + 4.195 + 4.196 +.P "The Unix Phil after Gancarz 4.197 + 4.198 +.S "Small is beautiful. 4.199 +.LP 4.200 +foo 4.201 + 4.202 + 4.203 +.S "Make each program do one thing well. 4.204 +.LP 4.205 +foo 4.206 + 4.207 + 4.208 +.S "Build a prototype as soon as possible. 4.209 +.LP 4.210 +foo 4.211 + 4.212 + 4.213 +.S "Choose portability over efficiency. 4.214 +.LP 4.215 +foo 4.216 + 4.217 + 4.218 +.S "Store data in flat text files. 4.219 +.LP 4.220 +foo 4.221 + 4.222 + 4.223 +.S "Use software leverage to your advantage. 4.224 +.LP 4.225 +foo 4.226 + 4.227 + 4.228 +.S "Use shell scripts to increase leverage and portability. 4.229 +.LP 4.230 +foo 4.231 + 4.232 + 4.233 +.S "Avoid captive user interfaces. 4.234 +.LP 4.235 +foo 4.236 + 4.237 + 4.238 +.S "Make every program a filter. 4.239 +.LP 4.240 +foo 4.241 + 4.242 + 4.243 + 4.244 + 4.245 + 4.246 +.P "real world examples 4.247 + 4.248 + 4.249 +.S "various 4.250 +.LP 4.251 +who uses 4.252 +.CW "grep -R 4.253 +? 4.254 + 4.255 +.sp 1 4.256 +.LP 4.257 +.CW "cat -v 4.258 + 4.259 +.sp 1 4.260 +.LP 4.261 +pagers are taken for granted 4.262 + 4.263 +.sp 1 4.264 +.LP 4.265 +what about the readline? 4.266 + 4.267 + 4.268 + 4.269 +.S "find -printf 4.270 +.LP 4.271 +How to reformat the output of find(1) to have ``FILENAME PATH'' 4.272 +instead of ``PATH/FILENAME''? 4.273 + 4.274 +.LP 4.275 +the ``easy'' way: 4.276 +\f(CWfind /dir -printf "%P %h\en"\fP 4.277 + 4.278 +.LP 4.279 +the ``good'' way: 4.280 +.br 4.281 +.CW "\s-1find /dir | sed 's,\e(.*\e)/\e(.*\e),\e2 \e1,' 4.282 + 4.283 +.LP 4.284 +The difference shows off when one wants, for instance, 4.285 +the path to be manipulated further. 4.286 + 4.287 + 4.288 +.S "MH / nmh 4.289 +.LP 4.290 +a Mail User Agent (MUA) 4.291 + 4.292 + 4.293 +.S "uzbl 4.294 +.LP 4.295 +a web browser that adheres to the Unix Phil 4.296 + 4.297 + 4.298 + 4.299 + 4.300 + 4.301 +.P "more than software dev guidelines 4.302 + 4.303 + 4.304 + 4.305 + 4.306 + 4.307 +.P "literature 4.308 + 4.309 + 4.310 +.S literature 4.311 +.I 4.312 +``\fBText Processing and Typesetting with Unix\fP'' 4.313 +by Barron and Rees 4.314 +explains everything pretty good (focus on 4.315 +.CW nroff ) 4.316 +.I 4.317 +``\fBHeirloom Documentation Tools Nroff/Troff User's Manual\fP'' 4.318 +by Ossanna, Kernighan, and Ritter 4.319 +is more a technical reference 4.320 +.I 4.321 +Various documents collected on 4.322 +.CW \s-2http://troff.org\s+2 4.323 + 4.324 + 4.325 +.S 4.326 +.LP 4.327 +this talk was prepared using tools of the Heirloom project: 4.328 +.CW \s-2http://heirloom.sf.net\s+2 4.329 +.LP 4.330 +the slides macros are based on 4.331 +.br 4.332 +.CW \s-2http://repo.cat-v.org/troff-slider/\s+2 4.333 +.sp 4.334 + 4.335 +.LP 4.336 +the slides are available on my website 4.337 +.CW \s-2http://marmaro.de/docs\s+2 4.338 +and on 4.339 +.CW \s-2http://ulm.ccc.de/ChaosSeminar/\s+2 4.340 +.sp 4.341 + 4.342 +2010-03-08