docs/unix-phil

changeset 27:e8adc3571e8c

rework
author meillo@marmaro.de
date Mon, 08 Mar 2010 12:58:58 +0100
parents b368ff5cdb5f
children faff9ea75591
files unix-phil-slides.ms
diffstat 1 files changed, 156 insertions(+), 155 deletions(-) [+]
line diff
     1.1 --- a/unix-phil-slides.ms	Sun Mar 07 22:40:05 2010 +0100
     1.2 +++ b/unix-phil-slides.ms	Mon Mar 08 12:58:58 2010 +0100
     1.3 @@ -12,25 +12,25 @@
     1.4  markus schnalke <meillo@marmaro.de>
     1.5  
     1.6  
     1.7 -.S "goals of this talk
     1.8 +.S "Goals of this talk
     1.9  .I
    1.10 -introduce the Unix Phil
    1.11 +Introduce the Unix Phil
    1.12  .I
    1.13 -show that most modern software is crap
    1.14 +Show that most modern software is crap
    1.15  .I
    1.16 -explain why the Unix Phil leads to better software
    1.17 +Explain why the Unix Phil leads to better software
    1.18  .I
    1.19 -convince you that good software is of matter
    1.20 +Convince you that good software is of matter
    1.21  .sp 2
    1.22  .I
    1.23 -make you think
    1.24 +Make you think
    1.25  
    1.26  
    1.27 -.S "roadmap
    1.28 +.S "Roadmap
    1.29  .I
    1.30  Historical background
    1.31  .I
    1.32 -What is the Unix Philosophy?
    1.33 +What is the Unix Phil?
    1.34  .I
    1.35  The Unix Phil after Gancarz
    1.36  .I
    1.37 @@ -40,9 +40,9 @@
    1.38  
    1.39  
    1.40  
    1.41 -.S "me and the UP
    1.42 +.S "How I learned about it
    1.43  .LP
    1.44 -first contact: through the suckless project
    1.45 +First contact through dwm (suckless project)
    1.46  .LP
    1.47  ``cat -v Considered Harmful''
    1.48  .LP
    1.49 @@ -51,52 +51,54 @@
    1.50  ``The Unix Programming Environment''
    1.51  .sp 1
    1.52  .LP
    1.53 -better understanding through digging in the past
    1.54 +Better understanding through digging in the past
    1.55  
    1.56  
    1.57  
    1.58  
    1.59  
    1.60 -.P "historical background
    1.61 +.P "Historical background
    1.62  
    1.63  
    1.64  
    1.65  
    1.66 -.S "historical background
    1.67 -.I
    1.68 -the late 60s and early 70s
    1.69 -.I
    1.70 -operating systems are complex
    1.71 -.I
    1.72 -MULTICS just failed
    1.73 -.I
    1.74 +.S "Historical background
    1.75 +.LP
    1.76 +The late 60s and early 70s
    1.77 +.LP
    1.78 +Operating systems are complex
    1.79 +.LP
    1.80  Brooks' ``The Mythical Man-Month''
    1.81 -.I
    1.82 -a lot of different hardware
    1.83 -.I
    1.84 -limited computing power
    1.85 -.I
    1.86 -textual input and output (line printers)
    1.87 +.LP
    1.88 +MULTICS had just failed
    1.89 +.LP
    1.90 +A lot of different hardware
    1.91 +.LP
    1.92 +Limited computing power
    1.93 +.LP
    1.94 +Textual input and output (line printers)
    1.95  
    1.96  
    1.97 -.S "everything is a file
    1.98 +.S "Everything is a file
    1.99  .LP
   1.100 -is the(?) basic concept in Unix (and even more in Plan9)
   1.101 +Is the(?) basic concept in Unix (and even more in Plan9)
   1.102  .LP
   1.103 -made simple operating systems possible
   1.104 +Made simple operating systems possible
   1.105  .LP
   1.106 -it is not covered by the Unix Phil; the Unix Phil is on a different level
   1.107 +It is not covered by the Unix Phil
   1.108 +.br
   1.109 +The Unix Phil is on a different level
   1.110  .sp 2
   1.111  .LP
   1.112  Unix is mainly two things:
   1.113  .I
   1.114 -an operating system (system calls)
   1.115 +An operating system (system calls)
   1.116  .I
   1.117 -a toolchest (coreutils)
   1.118 +A toolchest (coreutils)
   1.119  
   1.120  
   1.121  
   1.122 -.P "What is the Unix Phil
   1.123 +.P "What is the Unix Phil?
   1.124  
   1.125  
   1.126  
   1.127 @@ -113,12 +115,12 @@
   1.128  Common things of classic Unix tools.
   1.129  .sp 2
   1.130  .LP
   1.131 -difficult to define
   1.132 +Difficult to define
   1.133  
   1.134  
   1.135  .S "Unix Phil vs. SW dev processes
   1.136  .LP
   1.137 -the Unix Phil
   1.138 +The Unix Phil
   1.139  .I
   1.140  much: *what* to program
   1.141  .I
   1.142 @@ -185,7 +187,7 @@
   1.143  Make every program a filter.
   1.144  .sp 1
   1.145  .LP
   1.146 -plus ten lesser tenets
   1.147 +Plus ten lesser tenets
   1.148  
   1.149  
   1.150  
   1.151 @@ -195,153 +197,117 @@
   1.152  
   1.153  
   1.154  .S "Small is beautiful
   1.155 -.I
   1.156 -small software is easier to understand, write, maintain
   1.157 -.I
   1.158 -less lines of code contain less bugs
   1.159 -.I
   1.160 -monsters are large
   1.161 +.LP
   1.162 +Small software is easier to understand, write, maintain
   1.163 +.LP
   1.164 +Less lines of code contain less bugs
   1.165 +.LP
   1.166 +Monsters are large
   1.167  
   1.168  
   1.169  .S "Make each program do one thing well
   1.170 -.I
   1.171 -programs with many functions are large
   1.172 -.I
   1.173 -one thing is easier to understand
   1.174 -.I
   1.175 -often straight forward to implement
   1.176 -.I
   1.177 -reusable
   1.178 +.LP
   1.179 +Programs with many functions are large
   1.180 +.LP
   1.181 +One thing is easier to understand
   1.182 +.LP
   1.183 +Often straight forward to implement
   1.184 +.LP
   1.185 +Reusable
   1.186  
   1.187  
   1.188  .S "Build a prototype as soon as possible
   1.189 -.I
   1.190 -shows the quality of the design
   1.191 -.I
   1.192 -shows the problems of the software
   1.193 -.I
   1.194 -the best way to shape a software
   1.195 -.I
   1.196 -users find bugs
   1.197 +.LP
   1.198 +Shows the quality of the design
   1.199 +.LP
   1.200 +Shows the problems of the software
   1.201 +.LP
   1.202 +The best way to shape a software
   1.203 +.LP
   1.204 +Users find bugs
   1.205  
   1.206  
   1.207  .S "Choose portability over efficiency
   1.208 -.I
   1.209 -(comes from incompatible hardware in history)
   1.210 -.I
   1.211 -use is most important
   1.212 -.I
   1.213 -availability
   1.214 -.I
   1.215 -only needs to be fast enough
   1.216 +.LP
   1.217 +(Originates in a lot of incompatible hardware in history)
   1.218 +.LP
   1.219 +Use is most important
   1.220 +.LP
   1.221 +Availability
   1.222 +.LP
   1.223 +Only needs to be fast enough
   1.224  
   1.225  
   1.226  .S "Store data in flat text files
   1.227  .LP
   1.228 -binary data is machine dependent
   1.229 +Binary data is machine-dependent
   1.230  .LP
   1.231 -human readable data is:
   1.232 +Human readable data is:
   1.233  .I
   1.234 -is very likely supported
   1.235 +As generic as possible
   1.236  .I
   1.237 -good to port
   1.238 +Is very likely supported
   1.239  .I
   1.240 -many tools work on it (Unix toolchest)
   1.241 +Many tools work on it (Unix toolchest)
   1.242  .I
   1.243 -as generic as possible
   1.244 +Directly editable by humans
   1.245  .LP
   1.246 -processing needs only to be fast enough
   1.247 +Processing needs only to be fast enough
   1.248  
   1.249  
   1.250  .S "Use software leverage to your advantage
   1.251  .LP
   1.252 -what do we have computers for?
   1.253 +What do we have computers for?
   1.254  .LP
   1.255 -make best use of computing power
   1.256 +Make best use of computing power
   1.257  .LP
   1.258 -reduce development effort
   1.259 +Reduce development effort
   1.260  
   1.261  
   1.262  .S "Use shell scripts to increase leverage and portability
   1.263  .LP
   1.264 -was very important in history
   1.265 +Was very important in history
   1.266  .LP
   1.267 -high level languages
   1.268 +High level languages
   1.269  .LP
   1.270 -prototyping
   1.271 +Prototyping
   1.272  .LP
   1.273 -quick hacks
   1.274 +Quick hacks
   1.275  
   1.276  
   1.277  .S "Avoid captive user interfaces
   1.278  .LP
   1.279 -don't assume the user to be human
   1.280 +Don't assume the user to be human
   1.281  .LP
   1.282 -exclude the user whenever possible
   1.283 +Exclude the user whenever possible
   1.284  .LP
   1.285 -automate
   1.286 +Automate
   1.287  
   1.288  
   1.289  .S "Make every program a filter
   1.290  .LP
   1.291 -programs transform data
   1.292 +Programs transform data
   1.293  .LP
   1.294 -combine programs
   1.295 +Combine programs
   1.296  .LP
   1.297 -have one common interface
   1.298 -
   1.299 -
   1.300 -
   1.301 -.S "a different POV
   1.302 -.I
   1.303 -pipes
   1.304 -.I
   1.305 -interface design
   1.306 -.I
   1.307 -the toolchest approach
   1.308 -.I
   1.309 -a powerful shell
   1.310 -.I
   1.311 -worse is better
   1.312 -.I
   1.313 -upgrowth and survival
   1.314 +Have one common interface
   1.315  
   1.316  
   1.317  
   1.318  .P "real world examples
   1.319  
   1.320  
   1.321 -.S "various
   1.322 -.LP
   1.323 -who uses
   1.324 -.CW "grep -R
   1.325 -?
   1.326 -
   1.327 -.sp 1
   1.328 -.LP
   1.329 -.CW "cat -v
   1.330 -
   1.331 -.sp 1
   1.332 -.LP
   1.333 -pagers are taken for granted
   1.334 -
   1.335 -.sp 1
   1.336 -.LP
   1.337 -what about the readline?
   1.338 -
   1.339 -
   1.340 -
   1.341  .S "find -printf
   1.342  .LP
   1.343  How to reformat the output of find(1) to have ``FILENAME PATH''
   1.344  instead of ``PATH/FILENAME''?
   1.345  
   1.346  .LP
   1.347 -the ``easy'' way:
   1.348 +The ``easy'' way:
   1.349  \f(CWfind /dir -printf "%P %h\en"\fP
   1.350  
   1.351  .LP
   1.352 -the ``good'' way:
   1.353 +The ``good'' way:
   1.354  .br
   1.355  .CW "\s-1find /dir | sed 's,\e(.*\e)/\e(.*\e),\e2 \e1,'
   1.356  
   1.357 @@ -350,82 +316,114 @@
   1.358  the path to be manipulated further.
   1.359  
   1.360  
   1.361 +.S "various
   1.362 +.LP
   1.363 +Who uses
   1.364 +.CW "grep -R
   1.365 +?
   1.366 +.sp 1
   1.367 +.LP
   1.368 +.CW "cat -v
   1.369 +
   1.370 +.sp 1
   1.371 +.LP
   1.372 +Pagers are taken for granted
   1.373 +
   1.374 +.sp 1
   1.375 +.LP
   1.376 +What about the readline?
   1.377 +
   1.378 +
   1.379 +
   1.380  .S "MH / nmh
   1.381  .LP
   1.382 -a Mail User Agent (MUA)
   1.383 +A Mail User Agent (MUA)
   1.384  .LP
   1.385 -is a toolchest
   1.386 +Is a toolchest
   1.387  .LP
   1.388 -work with mails like with generic files
   1.389 +Work with mails like with generic files
   1.390  .LP
   1.391 -the only(?) MUA that follows the Unix Phil
   1.392 +The only(?) MUA that follows the Unix Phil
   1.393  .LP
   1.394 -has a very special feeling
   1.395 +Has a very special feeling
   1.396  
   1.397  
   1.398  .S "uzbl
   1.399  .LP
   1.400 -a web browser that adheres to the Unix Phil
   1.401 +A web browser that adheres to the Unix Phil
   1.402  .LP
   1.403 -a young project (about 1 year)
   1.404 +A young project (about 1 year)
   1.405  .LP
   1.406 -central question: what is the one task a web browser covers?
   1.407 +Central question:
   1.408 +.br
   1.409 +What is the one task a web browser covers?
   1.410  .LP
   1.411 -makes very visible use of software leverage
   1.412 +Makes very visible use of software leverage
   1.413  .LP
   1.414 -suffers hard from our broken web
   1.415 +Suffers hard from our broken web
   1.416  
   1.417  
   1.418  
   1.419  
   1.420  
   1.421 -.P "more than software dev guidelines
   1.422 +.P "Some final thoughts
   1.423  
   1.424  
   1.425 -.S "say no
   1.426 +.S "Say no!
   1.427  .LP
   1.428 -in today's computer world, the Unix Phil is much of asceticism
   1.429 +In today's computer world, the Unix Phil is often asceticism
   1.430  .LP
   1.431 -one needs to abjure a lot of ``nice'' features
   1.432 +One needs to abjure a lot of ``nice'' features
   1.433 +.LP
   1.434 +Actually it is abjuring the bad solutions
   1.435  .LP
   1.436  IMO that leads to a valuable attitude
   1.437 +.LP
   1.438 +.sp 2
   1.439 +Transfer it to your everyday life
   1.440  
   1.441  
   1.442 -.S "avoid complexity
   1.443 +.S "Avoid complexity
   1.444  .LP
   1.445 -avoid complexity first and foremost
   1.446 +Avoid complexity first and foremost
   1.447  .LP
   1.448 -complexity is the ``boss enemy'', software developers fight against
   1.449 +Complexity is the ``boss enemy'', software developers fight against
   1.450  .LP
   1.451 -strive for simplicity, clarity, generality
   1.452 +Strive for simplicity, clarity, generality
   1.453 +.LP
   1.454 +.sp 2
   1.455 +Transfer it to your everyday life
   1.456  
   1.457  
   1.458 -.S "good solutions
   1.459 +.S "Good solutions
   1.460  .LP
   1.461 -we don't need just solutions, we need good ones
   1.462 +We don't need just solutions, we need good ones
   1.463  .LP
   1.464 -today, we can make almost everything possible,
   1.465 +Today, we can make almost everything possible,
   1.466  but we still cannot make it good
   1.467 +.LP
   1.468 +.sp 2
   1.469 +Transfer it to your everyday life
   1.470  
   1.471  
   1.472 -.S "live it
   1.473 +.S "Live it!
   1.474  .LP
   1.475 -the Unix Phil is not just a few guidelines
   1.476 +The Unix Phil is not just a few guidelines
   1.477  .LP
   1.478 -you cannot follow just some of the tenets
   1.479 +You cannot follow just some of the tenets
   1.480  .LP
   1.481 -you will not understand the Unix Phil when you don't engage with it
   1.482 +You will not understand the Unix Phil when you don't engage with it
   1.483  .sp 3
   1.484  .LP
   1.485  .ce
   1.486 -it's a philosophy \(en live it!
   1.487 +It's a philosophy \(en live it!
   1.488  
   1.489  
   1.490  
   1.491 -.P "literature
   1.492 +.P "Appendix
   1.493  
   1.494  
   1.495 -.S literature
   1.496 +.S Literature
   1.497  .I
   1.498  ``\fBThe Unix Philosophy\fP''
   1.499  by Mike Gancarz
   1.500 @@ -456,19 +454,22 @@
   1.501  
   1.502  .S
   1.503  .LP
   1.504 -this talk was prepared using tools of the Heirloom project:
   1.505 +This talk was prepared using tools of the Heirloom project:
   1.506  .CW \s-2http://heirloom.sf.net\s+2
   1.507  .LP
   1.508 -the slides macros are based on
   1.509 +The slides macros are based on
   1.510  .br
   1.511  .CW \s-2http://repo.cat-v.org/troff-slider/\s+2
   1.512  .sp
   1.513  
   1.514  .LP
   1.515 -the slides are available on my website
   1.516 +The slides are available on my website
   1.517  .CW \s-2http://marmaro.de/docs\s+2
   1.518  and on
   1.519  .CW \s-2http://ulm.ccc.de/ChaosSeminar/\s+2
   1.520  .sp
   1.521 +.LP
   1.522 +See my paper on the topic, too.
   1.523  
   1.524 +.sp 2
   1.525  2010-03-08