docs/unix-phil

annotate unix-phil-slides2.ms @ 60:9934520e19af

Added tag version of seminar presentation for changeset eba2e5b8d36f
author meillo@marmaro.de
date Sun, 18 Apr 2010 10:37:24 +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