docs/unix-phil
annotate unix-phil-slides2.ms @ 58:38261031d742
improved slides
author | meillo@marmaro.de |
---|---|
date | Fri, 16 Apr 2010 11:56:44 +0200 |
parents | 7678e37ceffc |
children |
rev | line source |
---|---|
meillo@56 | 1 .ps 11 |
meillo@56 | 2 .ce |
meillo@56 | 3 Seminar ``Software Analysis'' |
meillo@56 | 4 .TL |
meillo@56 | 5 \fR\s-6Why\s0\fP |
meillo@56 | 6 .br |
meillo@56 | 7 the Unix Philosophy |
meillo@56 | 8 .br |
meillo@56 | 9 .vs -4 |
meillo@56 | 10 \fR\s-6still matters\s0\fP |
meillo@56 | 11 .AU |
meillo@56 | 12 .ft R |
meillo@56 | 13 .sp .5i |
meillo@56 | 14 .sp .5i |
meillo@56 | 15 .ps 11 |
meillo@56 | 16 markus schnalke <meillo@marmaro.de> |
meillo@56 | 17 |
meillo@56 | 18 |
meillo@58 | 19 |
meillo@56 | 20 .S "Software design |
meillo@56 | 21 .rs |
meillo@56 | 22 .sp |
meillo@56 | 23 .LP |
meillo@56 | 24 \&... is about quality |
meillo@56 | 25 .I |
meillo@56 | 26 Good design \(-> good quality |
meillo@56 | 27 .I |
meillo@56 | 28 Bad design \(-> problems |
meillo@56 | 29 .sp |
meillo@56 | 30 .LP |
meillo@56 | 31 \&... and consistency |
meillo@56 | 32 .LP |
meillo@56 | 33 .sp 2 |
meillo@56 | 34 Unix Phil = guidelines for good design |
meillo@56 | 35 |
meillo@56 | 36 |
meillo@56 | 37 |
meillo@58 | 38 .S "Unix Phil and Software dev processes |
meillo@58 | 39 .rs |
meillo@58 | 40 .sp |
meillo@58 | 41 .LP |
meillo@58 | 42 The Unix Phil: |
meillo@58 | 43 .I |
meillo@58 | 44 mostly *what* |
meillo@58 | 45 .sp |
meillo@58 | 46 .LP |
meillo@58 | 47 Software dev processes: |
meillo@58 | 48 .I |
meillo@58 | 49 mostly *how* |
meillo@58 | 50 .sp 2 |
meillo@58 | 51 .LP |
meillo@58 | 52 Extreme Programming and the Unix Phil |
meillo@58 | 53 are good friends |
meillo@58 | 54 |
meillo@58 | 55 |
meillo@58 | 56 |
meillo@56 | 57 .S "The Unix Phil *itself* |
meillo@56 | 58 .rs |
meillo@56 | 59 .sp |
meillo@56 | 60 .LP |
meillo@56 | 61 Wikipedia: |
meillo@56 | 62 .ce 99 |
meillo@56 | 63 .sp |
meillo@56 | 64 The Unix philosophy is |
meillo@56 | 65 a set of cultural norms and philosophical approaches |
meillo@56 | 66 to developing software |
meillo@56 | 67 based on the experience |
meillo@56 | 68 of leading developers of the Unix operating system. |
meillo@56 | 69 .sp |
meillo@56 | 70 |
meillo@56 | 71 |
meillo@58 | 72 |
meillo@58 | 73 .S Motivation |
meillo@56 | 74 .rs |
meillo@56 | 75 .sp |
meillo@56 | 76 .LP |
meillo@58 | 77 .ce |
meillo@58 | 78 Write the best possible programs for yourself |
meillo@58 | 79 .sp 3 |
meillo@56 | 80 .LP |
meillo@58 | 81 .ce |
meillo@58 | 82 Avoid \fBcomplexity\fP first and foremost! |
meillo@56 | 83 .LP |
meillo@58 | 84 .ce |
meillo@58 | 85 Exploit software \fBleverage\fP! |
meillo@56 | 86 |
meillo@56 | 87 |
meillo@56 | 88 |
meillo@56 | 89 .S "The Unix Phil by Doug McIlroy (1978) |
meillo@56 | 90 .rs |
meillo@56 | 91 .sp |
meillo@56 | 92 .LP |
meillo@56 | 93 This is the Unix philosophy: |
meillo@56 | 94 .I |
meillo@56 | 95 Write programs that do one thing and do it well. |
meillo@56 | 96 .I |
meillo@56 | 97 Write programs to work together. |
meillo@56 | 98 .I |
meillo@56 | 99 Write programs to handle text streams, because that is a universal interface. |
meillo@56 | 100 |
meillo@56 | 101 |
meillo@58 | 102 |
meillo@56 | 103 .S "The Unix Phil by Mike Gancarz (1995) |
meillo@56 | 104 .rs |
meillo@56 | 105 .sp .2v |
meillo@56 | 106 .I |
meillo@56 | 107 Small is beautiful. |
meillo@56 | 108 .I |
meillo@56 | 109 Make each program do one thing well. |
meillo@56 | 110 .I |
meillo@56 | 111 Build a prototype as soon as possible. |
meillo@56 | 112 .I |
meillo@56 | 113 Choose portability over efficiency. |
meillo@56 | 114 .I |
meillo@56 | 115 Store data in flat text files. |
meillo@56 | 116 .I |
meillo@56 | 117 Use software leverage to your advantage. |
meillo@56 | 118 .I |
meillo@56 | 119 Use shell scripts to increase leverage and portability. |
meillo@56 | 120 .I |
meillo@56 | 121 Avoid captive user interfaces. |
meillo@56 | 122 .I |
meillo@56 | 123 Make every program a filter. |
meillo@56 | 124 .sp 1 |
meillo@56 | 125 .LP |
meillo@56 | 126 Plus ten lesser tenets |
meillo@56 | 127 |
meillo@56 | 128 |
meillo@56 | 129 |
meillo@56 | 130 .S "Case studies |
meillo@56 | 131 .LP |
meillo@56 | 132 .B "MH / nmh |
meillo@56 | 133 .LP |
meillo@56 | 134 The only MUA that is a toolchest |
meillo@56 | 135 .LP |
meillo@56 | 136 Makes use of the powerful shell |
meillo@56 | 137 .LP |
meillo@56 | 138 Great example of applied Unix Phil |
meillo@58 | 139 .sp |
meillo@56 | 140 .LP |
meillo@56 | 141 .B uzbl |
meillo@56 | 142 .LP |
meillo@56 | 143 A web browser that adheres to the Unix Phil |
meillo@56 | 144 .LP |
meillo@56 | 145 Central question: |
meillo@56 | 146 .br |
meillo@56 | 147 What is the one thing a web browser should do well? |
meillo@56 | 148 .LP |
meillo@56 | 149 Makes very visible use of software leverage |
meillo@56 | 150 |
meillo@56 | 151 |
meillo@56 | 152 |
meillo@56 | 153 .S "Why? |
meillo@56 | 154 .rs |
meillo@56 | 155 .sp |
meillo@56 | 156 .LP |
meillo@56 | 157 .ce |
meillo@56 | 158 We don't need just any solutions, we need good ones |
meillo@56 | 159 .sp 3 |
meillo@56 | 160 .LP |
meillo@56 | 161 .ce |
meillo@58 | 162 \fBComplexity\fP is the ``boss enemy'' of software developers |
meillo@56 | 163 .LP |
meillo@56 | 164 .ce |
meillo@58 | 165 \fBLeverage\fP is the largest unique benefit of software |
meillo@58 | 166 |
meillo@56 | 167 |
meillo@56 | 168 |
meillo@56 | 169 .S "Further reading |
meillo@56 | 170 .LP |
meillo@56 | 171 The paper to the slides |
meillo@56 | 172 .sp |
meillo@56 | 173 .LP |
meillo@56 | 174 My talk on this topic at the ChaosSeminar of CCC Ulm |
meillo@56 | 175 .CW \s-2http://ulm.ccc.de/ChaosSeminar/2010/03_UnixPhil\s0 |
meillo@56 | 176 .sp |
meillo@56 | 177 .LP |
meillo@56 | 178 Mike Gancarz' book |
meillo@56 | 179 \fI``The Unix Philosophy''\fP |
meillo@56 | 180 .sp |
meillo@56 | 181 .LP |
meillo@56 | 182 \fI``cat -v Considered Harmful''\fP |
meillo@56 | 183 by Pike and Kernighan |
meillo@56 | 184 .CW \s-2http://harmful.cat-v.org/cat-v/\s+2 |
meillo@56 | 185 |
meillo@56 | 186 |
meillo@58 | 187 |
meillo@56 | 188 .S Colophon |
meillo@56 | 189 .LP |
meillo@56 | 190 The paper and slides were prepared with: |
meillo@56 | 191 .br |
meillo@56 | 192 .CW "vi sed awk refer troff dpost spell make hg |
meillo@56 | 193 .sp |
meillo@56 | 194 .LP |
meillo@56 | 195 Most of the tools are from |
meillo@56 | 196 .CW \s-2http://heirloom.sf.net\s0 |
meillo@56 | 197 .LP |
meillo@56 | 198 The `slides' macros are based on |
meillo@56 | 199 .br |
meillo@56 | 200 .CW \s-2http://repo.cat-v.org/troff-slider/\s0 |
meillo@56 | 201 .sp 2 |
meillo@56 | 202 .LP |
meillo@56 | 203 The paper, the slides, and the complete sources are available on my website |
meillo@56 | 204 .CW \s-2http://marmaro.de/docs\s+2 |
meillo@56 | 205 .sp 3 |
meillo@56 | 206 2010-04-16 |