docs/unix-phil
annotate unix-phil-slides.ms @ 24:2335f5658fca
added poster and slides
author | meillo@marmaro.de |
---|---|
date | Fri, 05 Mar 2010 23:56:48 +0100 |
parents | |
children | e6ac51dc18bf |
rev | line source |
---|---|
meillo@24 | 1 .TL |
meillo@24 | 2 \fR\s-6Why\s0\fP |
meillo@24 | 3 .br |
meillo@24 | 4 the Unix Philosophy |
meillo@24 | 5 .br |
meillo@24 | 6 .vs -4 |
meillo@24 | 7 \fR\s-6(still) matters\s0\fP |
meillo@24 | 8 .AU |
meillo@24 | 9 .ft R |
meillo@24 | 10 .sp 1.2i |
meillo@24 | 11 .ps 11 |
meillo@24 | 12 markus schnalke <meillo@marmaro.de> |
meillo@24 | 13 |
meillo@24 | 14 |
meillo@24 | 15 .S "goals of this talk |
meillo@24 | 16 .I |
meillo@24 | 17 introduce the Unix Phil |
meillo@24 | 18 .I |
meillo@24 | 19 explain why most modern software is crap |
meillo@24 | 20 .I |
meillo@24 | 21 explain why the Unix Phil leads to better software |
meillo@24 | 22 .I |
meillo@24 | 23 convince you that good software is of matter |
meillo@24 | 24 .sp 2 |
meillo@24 | 25 .I |
meillo@24 | 26 make you think |
meillo@24 | 27 |
meillo@24 | 28 |
meillo@24 | 29 .S "roadmap |
meillo@24 | 30 .I |
meillo@24 | 31 Historical background |
meillo@24 | 32 .I |
meillo@24 | 33 What is the Unix Philosophy? |
meillo@24 | 34 .I |
meillo@24 | 35 The Unix Phil after Gancarz |
meillo@24 | 36 .I |
meillo@24 | 37 Discussion on real world examples |
meillo@24 | 38 .I |
meillo@24 | 39 The Unix Phil is more than software dev guidelines |
meillo@24 | 40 |
meillo@24 | 41 |
meillo@24 | 42 |
meillo@24 | 43 .S "me and the UP |
meillo@24 | 44 .LP |
meillo@24 | 45 first contact: through the suckless project |
meillo@24 | 46 .LP |
meillo@24 | 47 ``cat -v Considered Harmful'' |
meillo@24 | 48 .LP |
meillo@24 | 49 ``The Unix and the Echo'' |
meillo@24 | 50 .LP |
meillo@24 | 51 ``The Unix Programming Environment'' |
meillo@24 | 52 .sp 1 |
meillo@24 | 53 .LP |
meillo@24 | 54 better understanding through digging in the past |
meillo@24 | 55 |
meillo@24 | 56 |
meillo@24 | 57 |
meillo@24 | 58 |
meillo@24 | 59 |
meillo@24 | 60 .P "historical background |
meillo@24 | 61 |
meillo@24 | 62 |
meillo@24 | 63 |
meillo@24 | 64 |
meillo@24 | 65 .S "historical background |
meillo@24 | 66 .I |
meillo@24 | 67 the late 60s and early 70s |
meillo@24 | 68 .I |
meillo@24 | 69 operating systems are complex |
meillo@24 | 70 .I |
meillo@24 | 71 MULTICS just failed |
meillo@24 | 72 .I |
meillo@24 | 73 Brooks' ``The Mythical Man-Month'' |
meillo@24 | 74 .I |
meillo@24 | 75 a lot of different hardware |
meillo@24 | 76 .I |
meillo@24 | 77 limited computing power |
meillo@24 | 78 .I |
meillo@24 | 79 textual input and output (line printers) |
meillo@24 | 80 |
meillo@24 | 81 |
meillo@24 | 82 .S "everything is a file |
meillo@24 | 83 .LP |
meillo@24 | 84 is the(?) basic concept in Unix (and even more in Plan9) |
meillo@24 | 85 .LP |
meillo@24 | 86 made simple operating systems possible |
meillo@24 | 87 .LP |
meillo@24 | 88 it is not covered by the Unix Phil; the Unix Phil is on a different level |
meillo@24 | 89 .sp 2 |
meillo@24 | 90 .LP |
meillo@24 | 91 Unix is mainly two things: |
meillo@24 | 92 .I |
meillo@24 | 93 an operating system (system calls) |
meillo@24 | 94 .I |
meillo@24 | 95 a toolchest (coreutils) |
meillo@24 | 96 |
meillo@24 | 97 |
meillo@24 | 98 |
meillo@24 | 99 .P "What is the Unix Phil |
meillo@24 | 100 |
meillo@24 | 101 |
meillo@24 | 102 |
meillo@24 | 103 .S "What is the Unix Phil *itself*? |
meillo@24 | 104 .LP |
meillo@24 | 105 ``The Unix philosophy is a set of cultural norms and philosophical |
meillo@24 | 106 approaches to developing software based on the experience of |
meillo@24 | 107 leading developers of the Unix operating system.'' |
meillo@24 | 108 (wikipedia) |
meillo@24 | 109 .sp 2 |
meillo@24 | 110 .LP |
meillo@24 | 111 How the inventors of Unix write software. |
meillo@24 | 112 .LP |
meillo@24 | 113 Common things of classic Unix tools. |
meillo@24 | 114 .sp 2 |
meillo@24 | 115 .LP |
meillo@24 | 116 difficult to define |
meillo@24 | 117 |
meillo@24 | 118 |
meillo@24 | 119 .S "Unix Phil vs. SW dev processes |
meillo@24 | 120 .LP |
meillo@24 | 121 the Unix Phil |
meillo@24 | 122 .I |
meillo@24 | 123 much: *what* to program |
meillo@24 | 124 .I |
meillo@24 | 125 few: *how* to program |
meillo@24 | 126 |
meillo@24 | 127 .LP |
meillo@24 | 128 Software developments processes: |
meillo@24 | 129 .I |
meillo@24 | 130 few: *what* to program |
meillo@24 | 131 .I |
meillo@24 | 132 much: *how* to program |
meillo@24 | 133 |
meillo@24 | 134 .sp 2 |
meillo@24 | 135 .LP |
meillo@24 | 136 Extreme Programming is like the Unix Phil |
meillo@24 | 137 but with more *how* than *what*, |
meillo@24 | 138 and with formalisms |
meillo@24 | 139 |
meillo@24 | 140 |
meillo@24 | 141 |
meillo@24 | 142 |
meillo@24 | 143 |
meillo@24 | 144 .S "What is the Unix Phil? |
meillo@24 | 145 .I |
meillo@24 | 146 Doug McIlroy (1978) |
meillo@24 | 147 .I |
meillo@24 | 148 Mike Gancarz: ``The Unix Philosophy'' (1994) |
meillo@24 | 149 .I |
meillo@24 | 150 Eric S. Raymond: ``The Art of Unix Programming'' (2003) |
meillo@24 | 151 .sp 2 |
meillo@24 | 152 .I |
meillo@24 | 153 Richard Gabriel: ``Worse is Better'' (1989) |
meillo@24 | 154 |
meillo@24 | 155 |
meillo@24 | 156 .S "Doug McIlroy |
meillo@24 | 157 .LP |
meillo@24 | 158 This is the Unix philosophy: |
meillo@24 | 159 .I |
meillo@24 | 160 Write programs that do one thing and do it well. |
meillo@24 | 161 .I |
meillo@24 | 162 Write programs to work together. |
meillo@24 | 163 .I |
meillo@24 | 164 Write programs to handle text streams, because that is a universal interface. |
meillo@24 | 165 |
meillo@24 | 166 |
meillo@24 | 167 .S "Mike Gancarz: ``The Unix Philosophy'' |
meillo@24 | 168 .I |
meillo@24 | 169 Small is beautiful. |
meillo@24 | 170 .I |
meillo@24 | 171 Make each program do one thing well. |
meillo@24 | 172 .I |
meillo@24 | 173 Build a prototype as soon as possible. |
meillo@24 | 174 .I |
meillo@24 | 175 Choose portability over efficiency. |
meillo@24 | 176 .I |
meillo@24 | 177 Store data in flat text files. |
meillo@24 | 178 .I |
meillo@24 | 179 Use software leverage to your advantage. |
meillo@24 | 180 .I |
meillo@24 | 181 Use shell scripts to increase leverage and portability. |
meillo@24 | 182 .I |
meillo@24 | 183 Avoid captive user interfaces. |
meillo@24 | 184 .I |
meillo@24 | 185 Make every program a filter. |
meillo@24 | 186 .sp 1 |
meillo@24 | 187 .LP |
meillo@24 | 188 plus ten lesser tenets |
meillo@24 | 189 |
meillo@24 | 190 |
meillo@24 | 191 |
meillo@24 | 192 |
meillo@24 | 193 .P "The Unix Phil after Gancarz |
meillo@24 | 194 |
meillo@24 | 195 .S "Small is beautiful. |
meillo@24 | 196 .LP |
meillo@24 | 197 foo |
meillo@24 | 198 |
meillo@24 | 199 |
meillo@24 | 200 .S "Make each program do one thing well. |
meillo@24 | 201 .LP |
meillo@24 | 202 foo |
meillo@24 | 203 |
meillo@24 | 204 |
meillo@24 | 205 .S "Build a prototype as soon as possible. |
meillo@24 | 206 .LP |
meillo@24 | 207 foo |
meillo@24 | 208 |
meillo@24 | 209 |
meillo@24 | 210 .S "Choose portability over efficiency. |
meillo@24 | 211 .LP |
meillo@24 | 212 foo |
meillo@24 | 213 |
meillo@24 | 214 |
meillo@24 | 215 .S "Store data in flat text files. |
meillo@24 | 216 .LP |
meillo@24 | 217 foo |
meillo@24 | 218 |
meillo@24 | 219 |
meillo@24 | 220 .S "Use software leverage to your advantage. |
meillo@24 | 221 .LP |
meillo@24 | 222 foo |
meillo@24 | 223 |
meillo@24 | 224 |
meillo@24 | 225 .S "Use shell scripts to increase leverage and portability. |
meillo@24 | 226 .LP |
meillo@24 | 227 foo |
meillo@24 | 228 |
meillo@24 | 229 |
meillo@24 | 230 .S "Avoid captive user interfaces. |
meillo@24 | 231 .LP |
meillo@24 | 232 foo |
meillo@24 | 233 |
meillo@24 | 234 |
meillo@24 | 235 .S "Make every program a filter. |
meillo@24 | 236 .LP |
meillo@24 | 237 foo |
meillo@24 | 238 |
meillo@24 | 239 |
meillo@24 | 240 |
meillo@24 | 241 |
meillo@24 | 242 |
meillo@24 | 243 .P "real world examples |
meillo@24 | 244 |
meillo@24 | 245 |
meillo@24 | 246 .S "various |
meillo@24 | 247 .LP |
meillo@24 | 248 who uses |
meillo@24 | 249 .CW "grep -R |
meillo@24 | 250 ? |
meillo@24 | 251 |
meillo@24 | 252 .sp 1 |
meillo@24 | 253 .LP |
meillo@24 | 254 .CW "cat -v |
meillo@24 | 255 |
meillo@24 | 256 .sp 1 |
meillo@24 | 257 .LP |
meillo@24 | 258 pagers are taken for granted |
meillo@24 | 259 |
meillo@24 | 260 .sp 1 |
meillo@24 | 261 .LP |
meillo@24 | 262 what about the readline? |
meillo@24 | 263 |
meillo@24 | 264 |
meillo@24 | 265 |
meillo@24 | 266 .S "find -printf |
meillo@24 | 267 .LP |
meillo@24 | 268 How to reformat the output of find(1) to have ``FILENAME PATH'' |
meillo@24 | 269 instead of ``PATH/FILENAME''? |
meillo@24 | 270 |
meillo@24 | 271 .LP |
meillo@24 | 272 the ``easy'' way: |
meillo@24 | 273 \f(CWfind /dir -printf "%P %h\en"\fP |
meillo@24 | 274 |
meillo@24 | 275 .LP |
meillo@24 | 276 the ``good'' way: |
meillo@24 | 277 .br |
meillo@24 | 278 .CW "\s-1find /dir | sed 's,\e(.*\e)/\e(.*\e),\e2 \e1,' |
meillo@24 | 279 |
meillo@24 | 280 .LP |
meillo@24 | 281 The difference shows off when one wants, for instance, |
meillo@24 | 282 the path to be manipulated further. |
meillo@24 | 283 |
meillo@24 | 284 |
meillo@24 | 285 .S "MH / nmh |
meillo@24 | 286 .LP |
meillo@24 | 287 a Mail User Agent (MUA) |
meillo@24 | 288 |
meillo@24 | 289 |
meillo@24 | 290 .S "uzbl |
meillo@24 | 291 .LP |
meillo@24 | 292 a web browser that adheres to the Unix Phil |
meillo@24 | 293 |
meillo@24 | 294 |
meillo@24 | 295 |
meillo@24 | 296 |
meillo@24 | 297 |
meillo@24 | 298 .P "more than software dev guidelines |
meillo@24 | 299 |
meillo@24 | 300 |
meillo@24 | 301 |
meillo@24 | 302 |
meillo@24 | 303 |
meillo@24 | 304 .P "literature |
meillo@24 | 305 |
meillo@24 | 306 |
meillo@24 | 307 .S literature |
meillo@24 | 308 .I |
meillo@24 | 309 ``\fBText Processing and Typesetting with Unix\fP'' |
meillo@24 | 310 by Barron and Rees |
meillo@24 | 311 explains everything pretty good (focus on |
meillo@24 | 312 .CW nroff ) |
meillo@24 | 313 .I |
meillo@24 | 314 ``\fBHeirloom Documentation Tools Nroff/Troff User's Manual\fP'' |
meillo@24 | 315 by Ossanna, Kernighan, and Ritter |
meillo@24 | 316 is more a technical reference |
meillo@24 | 317 .I |
meillo@24 | 318 Various documents collected on |
meillo@24 | 319 .CW \s-2http://troff.org\s+2 |
meillo@24 | 320 |
meillo@24 | 321 |
meillo@24 | 322 .S |
meillo@24 | 323 .LP |
meillo@24 | 324 this talk was prepared using tools of the Heirloom project: |
meillo@24 | 325 .CW \s-2http://heirloom.sf.net\s+2 |
meillo@24 | 326 .LP |
meillo@24 | 327 the slides macros are based on |
meillo@24 | 328 .br |
meillo@24 | 329 .CW \s-2http://repo.cat-v.org/troff-slider/\s+2 |
meillo@24 | 330 .sp |
meillo@24 | 331 |
meillo@24 | 332 .LP |
meillo@24 | 333 the slides are available on my website |
meillo@24 | 334 .CW \s-2http://marmaro.de/docs\s+2 |
meillo@24 | 335 and on |
meillo@24 | 336 .CW \s-2http://ulm.ccc.de/ChaosSeminar/\s+2 |
meillo@24 | 337 .sp |
meillo@24 | 338 |
meillo@24 | 339 2010-03-08 |