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