# HG changeset patch # User meillo@marmaro.de # Date 1268049538 -3600 # Node ID e8adc3571e8cb318250b2aaa1fbc0238f17c1a1d # Parent b368ff5cdb5fd2b4cbecc5e3a02f339473cad5c4 rework diff -r b368ff5cdb5f -r e8adc3571e8c unix-phil-slides.ms --- a/unix-phil-slides.ms Sun Mar 07 22:40:05 2010 +0100 +++ b/unix-phil-slides.ms Mon Mar 08 12:58:58 2010 +0100 @@ -12,25 +12,25 @@ markus schnalke -.S "goals of this talk +.S "Goals of this talk .I -introduce the Unix Phil +Introduce the Unix Phil .I -show that most modern software is crap +Show that most modern software is crap .I -explain why the Unix Phil leads to better software +Explain why the Unix Phil leads to better software .I -convince you that good software is of matter +Convince you that good software is of matter .sp 2 .I -make you think +Make you think -.S "roadmap +.S "Roadmap .I Historical background .I -What is the Unix Philosophy? +What is the Unix Phil? .I The Unix Phil after Gancarz .I @@ -40,9 +40,9 @@ -.S "me and the UP +.S "How I learned about it .LP -first contact: through the suckless project +First contact through dwm (suckless project) .LP ``cat -v Considered Harmful'' .LP @@ -51,52 +51,54 @@ ``The Unix Programming Environment'' .sp 1 .LP -better understanding through digging in the past +Better understanding through digging in the past -.P "historical background +.P "Historical background -.S "historical background -.I -the late 60s and early 70s -.I -operating systems are complex -.I -MULTICS just failed -.I +.S "Historical background +.LP +The late 60s and early 70s +.LP +Operating systems are complex +.LP Brooks' ``The Mythical Man-Month'' -.I -a lot of different hardware -.I -limited computing power -.I -textual input and output (line printers) +.LP +MULTICS had just failed +.LP +A lot of different hardware +.LP +Limited computing power +.LP +Textual input and output (line printers) -.S "everything is a file +.S "Everything is a file .LP -is the(?) basic concept in Unix (and even more in Plan9) +Is the(?) basic concept in Unix (and even more in Plan9) .LP -made simple operating systems possible +Made simple operating systems possible .LP -it is not covered by the Unix Phil; the Unix Phil is on a different level +It is not covered by the Unix Phil +.br +The Unix Phil is on a different level .sp 2 .LP Unix is mainly two things: .I -an operating system (system calls) +An operating system (system calls) .I -a toolchest (coreutils) +A toolchest (coreutils) -.P "What is the Unix Phil +.P "What is the Unix Phil? @@ -113,12 +115,12 @@ Common things of classic Unix tools. .sp 2 .LP -difficult to define +Difficult to define .S "Unix Phil vs. SW dev processes .LP -the Unix Phil +The Unix Phil .I much: *what* to program .I @@ -185,7 +187,7 @@ Make every program a filter. .sp 1 .LP -plus ten lesser tenets +Plus ten lesser tenets @@ -195,153 +197,117 @@ .S "Small is beautiful -.I -small software is easier to understand, write, maintain -.I -less lines of code contain less bugs -.I -monsters are large +.LP +Small software is easier to understand, write, maintain +.LP +Less lines of code contain less bugs +.LP +Monsters are large .S "Make each program do one thing well -.I -programs with many functions are large -.I -one thing is easier to understand -.I -often straight forward to implement -.I -reusable +.LP +Programs with many functions are large +.LP +One thing is easier to understand +.LP +Often straight forward to implement +.LP +Reusable .S "Build a prototype as soon as possible -.I -shows the quality of the design -.I -shows the problems of the software -.I -the best way to shape a software -.I -users find bugs +.LP +Shows the quality of the design +.LP +Shows the problems of the software +.LP +The best way to shape a software +.LP +Users find bugs .S "Choose portability over efficiency -.I -(comes from incompatible hardware in history) -.I -use is most important -.I -availability -.I -only needs to be fast enough +.LP +(Originates in a lot of incompatible hardware in history) +.LP +Use is most important +.LP +Availability +.LP +Only needs to be fast enough .S "Store data in flat text files .LP -binary data is machine dependent +Binary data is machine-dependent .LP -human readable data is: +Human readable data is: .I -is very likely supported +As generic as possible .I -good to port +Is very likely supported .I -many tools work on it (Unix toolchest) +Many tools work on it (Unix toolchest) .I -as generic as possible +Directly editable by humans .LP -processing needs only to be fast enough +Processing needs only to be fast enough .S "Use software leverage to your advantage .LP -what do we have computers for? +What do we have computers for? .LP -make best use of computing power +Make best use of computing power .LP -reduce development effort +Reduce development effort .S "Use shell scripts to increase leverage and portability .LP -was very important in history +Was very important in history .LP -high level languages +High level languages .LP -prototyping +Prototyping .LP -quick hacks +Quick hacks .S "Avoid captive user interfaces .LP -don't assume the user to be human +Don't assume the user to be human .LP -exclude the user whenever possible +Exclude the user whenever possible .LP -automate +Automate .S "Make every program a filter .LP -programs transform data +Programs transform data .LP -combine programs +Combine programs .LP -have one common interface - - - -.S "a different POV -.I -pipes -.I -interface design -.I -the toolchest approach -.I -a powerful shell -.I -worse is better -.I -upgrowth and survival +Have one common interface .P "real world examples -.S "various -.LP -who uses -.CW "grep -R -? - -.sp 1 -.LP -.CW "cat -v - -.sp 1 -.LP -pagers are taken for granted - -.sp 1 -.LP -what about the readline? - - - .S "find -printf .LP How to reformat the output of find(1) to have ``FILENAME PATH'' instead of ``PATH/FILENAME''? .LP -the ``easy'' way: +The ``easy'' way: \f(CWfind /dir -printf "%P %h\en"\fP .LP -the ``good'' way: +The ``good'' way: .br .CW "\s-1find /dir | sed 's,\e(.*\e)/\e(.*\e),\e2 \e1,' @@ -350,82 +316,114 @@ the path to be manipulated further. +.S "various +.LP +Who uses +.CW "grep -R +? +.sp 1 +.LP +.CW "cat -v + +.sp 1 +.LP +Pagers are taken for granted + +.sp 1 +.LP +What about the readline? + + + .S "MH / nmh .LP -a Mail User Agent (MUA) +A Mail User Agent (MUA) .LP -is a toolchest +Is a toolchest .LP -work with mails like with generic files +Work with mails like with generic files .LP -the only(?) MUA that follows the Unix Phil +The only(?) MUA that follows the Unix Phil .LP -has a very special feeling +Has a very special feeling .S "uzbl .LP -a web browser that adheres to the Unix Phil +A web browser that adheres to the Unix Phil .LP -a young project (about 1 year) +A young project (about 1 year) .LP -central question: what is the one task a web browser covers? +Central question: +.br +What is the one task a web browser covers? .LP -makes very visible use of software leverage +Makes very visible use of software leverage .LP -suffers hard from our broken web +Suffers hard from our broken web -.P "more than software dev guidelines +.P "Some final thoughts -.S "say no +.S "Say no! .LP -in today's computer world, the Unix Phil is much of asceticism +In today's computer world, the Unix Phil is often asceticism .LP -one needs to abjure a lot of ``nice'' features +One needs to abjure a lot of ``nice'' features +.LP +Actually it is abjuring the bad solutions .LP IMO that leads to a valuable attitude +.LP +.sp 2 +Transfer it to your everyday life -.S "avoid complexity +.S "Avoid complexity .LP -avoid complexity first and foremost +Avoid complexity first and foremost .LP -complexity is the ``boss enemy'', software developers fight against +Complexity is the ``boss enemy'', software developers fight against .LP -strive for simplicity, clarity, generality +Strive for simplicity, clarity, generality +.LP +.sp 2 +Transfer it to your everyday life -.S "good solutions +.S "Good solutions .LP -we don't need just solutions, we need good ones +We don't need just solutions, we need good ones .LP -today, we can make almost everything possible, +Today, we can make almost everything possible, but we still cannot make it good +.LP +.sp 2 +Transfer it to your everyday life -.S "live it +.S "Live it! .LP -the Unix Phil is not just a few guidelines +The Unix Phil is not just a few guidelines .LP -you cannot follow just some of the tenets +You cannot follow just some of the tenets .LP -you will not understand the Unix Phil when you don't engage with it +You will not understand the Unix Phil when you don't engage with it .sp 3 .LP .ce -it's a philosophy \(en live it! +It's a philosophy \(en live it! -.P "literature +.P "Appendix -.S literature +.S Literature .I ``\fBThe Unix Philosophy\fP'' by Mike Gancarz @@ -456,19 +454,22 @@ .S .LP -this talk was prepared using tools of the Heirloom project: +This talk was prepared using tools of the Heirloom project: .CW \s-2http://heirloom.sf.net\s+2 .LP -the slides macros are based on +The slides macros are based on .br .CW \s-2http://repo.cat-v.org/troff-slider/\s+2 .sp .LP -the slides are available on my website +The slides are available on my website .CW \s-2http://marmaro.de/docs\s+2 and on .CW \s-2http://ulm.ccc.de/ChaosSeminar/\s+2 .sp +.LP +See my paper on the topic, too. +.sp 2 2010-03-08