1 00:00:06,320 --> 00:00:11,499 [Music] 2 00:00:15,759 --> 00:00:20,480 uh now to get to why you are actually 3 00:00:17,920 --> 00:00:22,640 here this morning brian kernighan 4 00:00:20,480 --> 00:00:25,199 brian kernighan received his phd from 5 00:00:22,640 --> 00:00:26,960 princeton in 1969 and was in the 6 00:00:25,199 --> 00:00:29,199 computing science research center at 7 00:00:26,960 --> 00:00:30,960 bill labs until 2000. 8 00:00:29,199 --> 00:00:32,800 he is now a professor of the computer 9 00:00:30,960 --> 00:00:35,120 science department at princeton where he 10 00:00:32,800 --> 00:00:36,480 writes short programs and longer books 11 00:00:35,120 --> 00:00:39,120 the latter are better than the former 12 00:00:36,480 --> 00:00:41,120 and certainly lead less maintenance 13 00:00:39,120 --> 00:00:44,559 brian will be speaking to you about the 14 00:00:41,120 --> 00:00:47,840 early days of unix at bill labs i'd like 15 00:00:44,559 --> 00:00:47,840 to hand over to brian now 16 00:00:49,030 --> 00:00:52,209 [Music] 17 00:00:52,879 --> 00:00:55,520 okay 18 00:00:53,840 --> 00:00:58,399 thank you very much miles i'm going to 19 00:00:55,520 --> 00:01:00,399 assume that i'm properly on the air 20 00:00:58,399 --> 00:01:02,640 and also thank you to the incredible 21 00:01:00,399 --> 00:01:04,479 collection of tech support staff who are 22 00:01:02,640 --> 00:01:07,439 behind the scenes here 23 00:01:04,479 --> 00:01:09,040 who in principal are making it all work 24 00:01:07,439 --> 00:01:11,920 um so it's 25 00:01:09,040 --> 00:01:14,479 genuinely a real pleasure to be with you 26 00:01:11,920 --> 00:01:15,920 either today in the morning which is in 27 00:01:14,479 --> 00:01:18,720 most of australia 28 00:01:15,920 --> 00:01:20,960 or in the late afternoon as it is where 29 00:01:18,720 --> 00:01:22,640 i am in new jersey it would be wonderful 30 00:01:20,960 --> 00:01:24,479 to be back in australia 31 00:01:22,640 --> 00:01:27,280 but that's not going to happen in the 32 00:01:24,479 --> 00:01:30,000 near future so in fact this is where i 33 00:01:27,280 --> 00:01:31,280 am i'm in princeton new jersey which is 34 00:01:30,000 --> 00:01:34,560 roughly 35 00:01:31,280 --> 00:01:36,880 oh 75 kilometers southwest of new york 36 00:01:34,560 --> 00:01:39,200 city so that places it 37 00:01:36,880 --> 00:01:41,119 um i've only been in australia watching 38 00:01:39,200 --> 00:01:43,600 something i would love to remedy 39 00:01:41,119 --> 00:01:45,119 in the future but it's a long way to 40 00:01:43,600 --> 00:01:46,640 sydney which is the place that i spent 41 00:01:45,119 --> 00:01:50,000 most of my time 42 00:01:46,640 --> 00:01:52,560 visiting when i was in australia in the 43 00:01:50,000 --> 00:01:54,720 galley 1984 or something like that long 44 00:01:52,560 --> 00:01:56,079 time ago something that obviously should 45 00:01:54,720 --> 00:01:56,960 be remedied 46 00:01:56,079 --> 00:01:58,960 so 47 00:01:56,960 --> 00:02:02,880 one of the reasons that i can talk to 48 00:01:58,960 --> 00:02:04,640 you uh so easily from my home in 49 00:02:02,880 --> 00:02:06,799 new jersey in the united states today is 50 00:02:04,640 --> 00:02:08,560 that we have the internet uh to connect 51 00:02:06,799 --> 00:02:11,599 us and of course most of the software 52 00:02:08,560 --> 00:02:14,160 that runs uh on the internet that runs 53 00:02:11,599 --> 00:02:17,280 our computers that supports the kind of 54 00:02:14,160 --> 00:02:20,400 remote conferencing systems like the one 55 00:02:17,280 --> 00:02:22,640 we're using here is based on unix and 56 00:02:20,400 --> 00:02:23,360 linux the operating systems that we all 57 00:02:22,640 --> 00:02:25,120 know 58 00:02:23,360 --> 00:02:26,879 so the unix operating system was 59 00:02:25,120 --> 00:02:28,000 actually created 60 00:02:26,879 --> 00:02:30,239 um 61 00:02:28,000 --> 00:02:33,120 just over 50 years ago 62 00:02:30,239 --> 00:02:35,360 at bell labs in new jersey not too far 63 00:02:33,120 --> 00:02:37,040 from where i am so here's another 64 00:02:35,360 --> 00:02:38,879 version of that map new york to 65 00:02:37,040 --> 00:02:41,120 princeton there and bell labs is 66 00:02:38,879 --> 00:02:42,879 essentially exactly where the x is 67 00:02:41,120 --> 00:02:47,200 somewhat west of 68 00:02:42,879 --> 00:02:49,840 new york somewhat north of princeton um 69 00:02:47,200 --> 00:02:52,319 so what i'm going to do today is to talk 70 00:02:49,840 --> 00:02:54,879 mostly about the early history of unix 71 00:02:52,319 --> 00:02:57,519 you know how it came about how it 72 00:02:54,879 --> 00:03:00,720 grew over that early years and maybe 73 00:02:57,519 --> 00:03:02,000 talk a bit about the evolution of 74 00:03:00,720 --> 00:03:03,680 unix 75 00:03:02,000 --> 00:03:05,360 perhaps teaches us something about how 76 00:03:03,680 --> 00:03:07,760 software development can be done 77 00:03:05,360 --> 00:03:10,400 effectively and perhaps how to manage 78 00:03:07,760 --> 00:03:12,400 people and processes to make them as 79 00:03:10,400 --> 00:03:14,640 productive as possible 80 00:03:12,400 --> 00:03:18,400 so 81 00:03:14,640 --> 00:03:21,360 what is buildlabs um what was it 82 00:03:18,400 --> 00:03:24,720 let me give you a little bit of history 83 00:03:21,360 --> 00:03:28,400 so in 19 sorry 1885 boy you lose track 84 00:03:24,720 --> 00:03:30,959 of time um in 1885 um att the american 85 00:03:28,400 --> 00:03:33,680 telephone and telegraph company 86 00:03:30,959 --> 00:03:34,480 was founded and essentially over the 87 00:03:33,680 --> 00:03:37,519 next 88 00:03:34,480 --> 00:03:40,239 30-ish years it came to pro 89 00:03:37,519 --> 00:03:42,480 provide telephone service for the entire 90 00:03:40,239 --> 00:03:44,720 united states 91 00:03:42,480 --> 00:03:46,239 and it was a big complicated operation 92 00:03:44,720 --> 00:03:48,080 to do that sort of thing and the company 93 00:03:46,239 --> 00:03:49,920 realized quite early that they needed 94 00:03:48,080 --> 00:03:52,239 technical expertise to be able to 95 00:03:49,920 --> 00:03:54,799 provide this basically highly technical 96 00:03:52,239 --> 00:03:56,159 service and so they created a part of 97 00:03:54,799 --> 00:03:58,319 the company which they called bell 98 00:03:56,159 --> 00:04:00,720 telephone laboratories 99 00:03:58,319 --> 00:04:02,640 to do research to figure out how to do 100 00:04:00,720 --> 00:04:04,400 things better so that telephone service 101 00:04:02,640 --> 00:04:06,239 could be improved 102 00:04:04,400 --> 00:04:08,560 and that was originally in new york city 103 00:04:06,239 --> 00:04:11,439 very close to the uh right on the hudson 104 00:04:08,560 --> 00:04:13,680 river on the west side of new york um 105 00:04:11,439 --> 00:04:16,320 in 1925 and then it was moved to 106 00:04:13,680 --> 00:04:20,479 suburban new jersey um 107 00:04:16,320 --> 00:04:22,560 x marks the spot in about 1960. 108 00:04:20,479 --> 00:04:25,199 and so this is what bell labs looked 109 00:04:22,560 --> 00:04:28,479 like from the air at the murray hill new 110 00:04:25,199 --> 00:04:30,479 jersey location in 1961 111 00:04:28,479 --> 00:04:32,639 and you can see it's a 112 00:04:30,479 --> 00:04:34,960 pretty big place you get a sense of the 113 00:04:32,639 --> 00:04:37,840 scale from the size of the cars in the 114 00:04:34,960 --> 00:04:39,440 parking lot scattered around it 115 00:04:37,840 --> 00:04:42,720 and 116 00:04:39,440 --> 00:04:45,520 the operation at murray hill basically 117 00:04:42,720 --> 00:04:48,240 did research in primarily physical 118 00:04:45,520 --> 00:04:49,520 sciences things like physics chemistry 119 00:04:48,240 --> 00:04:51,280 and materials 120 00:04:49,520 --> 00:04:53,600 and there were about 3 000 people 121 00:04:51,280 --> 00:04:55,680 working in research in this 122 00:04:53,600 --> 00:04:57,680 operation at least a thousand of whom 123 00:04:55,680 --> 00:05:00,000 had phd so you can think of it as a very 124 00:04:57,680 --> 00:05:01,280 large specialized university but without 125 00:05:00,000 --> 00:05:04,080 students 126 00:05:01,280 --> 00:05:05,600 and an awful lot of important uh 127 00:05:04,080 --> 00:05:07,440 inventions came out of that the most 128 00:05:05,600 --> 00:05:09,520 obvious one is the transistor perhaps 129 00:05:07,440 --> 00:05:11,680 but the laser fiber optics and a wide 130 00:05:09,520 --> 00:05:13,520 variety of other things and over the 131 00:05:11,680 --> 00:05:16,240 years depending on how you count them 132 00:05:13,520 --> 00:05:19,600 all eight 10 12 nobel prize winners as 133 00:05:16,240 --> 00:05:21,360 well did work at bell labs um so that 134 00:05:19,600 --> 00:05:24,800 was just the research part then there 135 00:05:21,360 --> 00:05:26,400 were roughly call it 25 000 people at 136 00:05:24,800 --> 00:05:27,919 peak in 137 00:05:26,400 --> 00:05:31,520 a part of company that was also called 138 00:05:27,919 --> 00:05:34,000 bell labs which focused on development 139 00:05:31,520 --> 00:05:35,440 that is taking things from research and 140 00:05:34,000 --> 00:05:36,720 trying to convert them into things that 141 00:05:35,440 --> 00:05:38,639 would actually 142 00:05:36,720 --> 00:05:41,120 be useful in the 143 00:05:38,639 --> 00:05:43,520 providing telephone service 144 00:05:41,120 --> 00:05:46,639 and then bell labs was a small part of 145 00:05:43,520 --> 00:05:48,960 att at its peak at t had well over 146 00:05:46,639 --> 00:05:53,240 excuse me a million employees and so it 147 00:05:48,960 --> 00:05:53,240 was a very very large operation 148 00:05:53,360 --> 00:05:57,840 as i said most of the work at bell labs 149 00:05:55,840 --> 00:05:59,360 was in the hard sciences physics and 150 00:05:57,840 --> 00:06:01,919 chemistry and things like that but there 151 00:05:59,360 --> 00:06:03,840 was also quite a bit of work in uh 152 00:06:01,919 --> 00:06:04,800 mathematical things and communication 153 00:06:03,840 --> 00:06:06,960 theory 154 00:06:04,800 --> 00:06:09,440 and here are two of the perhaps the most 155 00:06:06,960 --> 00:06:11,680 important people who worked in that area 156 00:06:09,440 --> 00:06:14,560 uh claude shannon uh the creator of 157 00:06:11,680 --> 00:06:17,440 information theory who i never met um 158 00:06:14,560 --> 00:06:19,039 and dick hamming the creator of among 159 00:06:17,440 --> 00:06:20,800 other things error correcting codes who 160 00:06:19,039 --> 00:06:22,160 i knew extremely well 161 00:06:20,800 --> 00:06:24,880 for many years 162 00:06:22,160 --> 00:06:27,039 it's actually kind of intriguing that 163 00:06:24,880 --> 00:06:29,120 claude shannon and dick hamming actually 164 00:06:27,039 --> 00:06:30,160 shared an office once and if you can 165 00:06:29,120 --> 00:06:32,000 imagine 166 00:06:30,160 --> 00:06:32,960 an amazing experience what that must 167 00:06:32,000 --> 00:06:34,479 have been 168 00:06:32,960 --> 00:06:38,800 around there 169 00:06:34,479 --> 00:06:38,800 so anyway i actually uh went to 170 00:06:38,960 --> 00:06:42,800 bell labs 171 00:06:40,560 --> 00:06:42,800 in 172 00:06:42,880 --> 00:06:48,720 1967 i guess it was there were about 25 173 00:06:46,479 --> 00:06:50,319 people there doing research in what was 174 00:06:48,720 --> 00:06:52,400 called the computing science research 175 00:06:50,319 --> 00:06:54,800 center that had been newly created by 176 00:06:52,400 --> 00:06:56,800 spinning off some people from the 177 00:06:54,800 --> 00:06:58,720 mathematics research center which is 178 00:06:56,800 --> 00:07:02,080 where shannon had been although he had 179 00:06:58,720 --> 00:07:04,639 since moved on to mit they worked on 180 00:07:02,080 --> 00:07:07,440 things like programming languages uh 181 00:07:04,639 --> 00:07:10,080 tools operating systems things like that 182 00:07:07,440 --> 00:07:12,639 and they were mostly located on the top 183 00:07:10,080 --> 00:07:14,160 floor of what was called building two 184 00:07:12,639 --> 00:07:15,919 and so building two you can see two 185 00:07:14,160 --> 00:07:18,160 little red dots there and you can see 186 00:07:15,919 --> 00:07:19,840 the arrows pointing at parts of that so 187 00:07:18,160 --> 00:07:21,440 they were on the fifth floor of that 188 00:07:19,840 --> 00:07:24,000 building 189 00:07:21,440 --> 00:07:27,039 and i arrived there in the summer of 190 00:07:24,000 --> 00:07:29,840 1967 as an intern you know one of these 191 00:07:27,039 --> 00:07:32,080 lowly people 192 00:07:29,840 --> 00:07:35,120 the red dots are my offices the first 193 00:07:32,080 --> 00:07:36,880 one was in 1967 and it was next door to 194 00:07:35,120 --> 00:07:38,960 dick hamming and so this is kind of an 195 00:07:36,880 --> 00:07:42,560 interesting way to start a career to put 196 00:07:38,960 --> 00:07:45,759 it mildly um and uh 197 00:07:42,560 --> 00:07:47,840 i spent the summer of 67 there i came 198 00:07:45,759 --> 00:07:49,120 back for another summer in 68 and then i 199 00:07:47,840 --> 00:07:51,360 came 200 00:07:49,120 --> 00:07:54,639 permanently uh in 201 00:07:51,360 --> 00:07:56,000 1969 and my office in that entire period 202 00:07:54,639 --> 00:07:56,960 of time 203 00:07:56,000 --> 00:07:58,720 was 204 00:07:56,960 --> 00:08:01,039 at the other red dot 205 00:07:58,720 --> 00:08:02,960 further along the corridor 206 00:08:01,039 --> 00:08:04,879 so 207 00:08:02,960 --> 00:08:06,960 very interesting kind of operation and 208 00:08:04,879 --> 00:08:09,039 an amazing place to be 209 00:08:06,960 --> 00:08:11,440 the people who were in the computing 210 00:08:09,039 --> 00:08:13,680 science research center at that time or 211 00:08:11,440 --> 00:08:16,879 as i said working on various kinds of 212 00:08:13,680 --> 00:08:20,160 software like programming languages and 213 00:08:16,879 --> 00:08:21,599 especially operating systems and so 214 00:08:20,160 --> 00:08:23,599 in 215 00:08:21,599 --> 00:08:26,720 1961 216 00:08:23,599 --> 00:08:28,560 mit created a system called ctss the 217 00:08:26,720 --> 00:08:30,879 compatible time sharing system and it 218 00:08:28,560 --> 00:08:32,080 was led by fernando corbetto 219 00:08:30,879 --> 00:08:35,519 corby 220 00:08:32,080 --> 00:08:37,680 uh who was an amazing nice guy 221 00:08:35,519 --> 00:08:42,640 and very very forward-thinking kind of 222 00:08:37,680 --> 00:08:44,640 computer person so ctss created in 1961 223 00:08:42,640 --> 00:08:46,880 was a time sharing system that is a 224 00:08:44,640 --> 00:08:49,680 system where there was a single computer 225 00:08:46,880 --> 00:08:52,640 and people accessed it from 226 00:08:49,680 --> 00:08:54,880 basically remote devices sort of like 227 00:08:52,640 --> 00:08:56,880 cloud computing before there was such an 228 00:08:54,880 --> 00:08:59,279 idea 229 00:08:56,880 --> 00:09:01,360 it was such a success that 230 00:08:59,279 --> 00:09:04,000 people at mit said we could do this 231 00:09:01,360 --> 00:09:06,160 better and so they designed a system 232 00:09:04,000 --> 00:09:08,399 which was called multix the multiplexed 233 00:09:06,160 --> 00:09:10,320 information and computing service and 234 00:09:08,399 --> 00:09:12,560 the idea really was 235 00:09:10,320 --> 00:09:14,320 an information utility something like 236 00:09:12,560 --> 00:09:16,320 cloud computing today and it was going 237 00:09:14,320 --> 00:09:18,800 to be new and improved and better in 238 00:09:16,320 --> 00:09:21,760 every single possible respect 239 00:09:18,800 --> 00:09:24,800 so this was a big job and so mit 240 00:09:21,760 --> 00:09:27,440 enlisted the services of 241 00:09:24,800 --> 00:09:30,000 two other organizations one was general 242 00:09:27,440 --> 00:09:33,120 electric which at the time made 243 00:09:30,000 --> 00:09:35,200 computers big computers 244 00:09:33,120 --> 00:09:38,080 and the other was bell labs which at the 245 00:09:35,200 --> 00:09:40,000 time had a great deal of expertise in 246 00:09:38,080 --> 00:09:43,279 programming languages and operating 247 00:09:40,000 --> 00:09:45,120 systems so what you have there is three 248 00:09:43,279 --> 00:09:47,600 different institutions geographically 249 00:09:45,120 --> 00:09:49,360 separated by very wide distance roughly 250 00:09:47,600 --> 00:09:52,080 the distance from sydney to perth let's 251 00:09:49,360 --> 00:09:53,760 say in the case of general electric 252 00:09:52,080 --> 00:09:55,519 and 253 00:09:53,760 --> 00:09:57,920 very different organizations a 254 00:09:55,519 --> 00:09:59,600 university a research lab and a profit 255 00:09:57,920 --> 00:10:02,160 making company and you don't have to be 256 00:09:59,600 --> 00:10:04,079 much of a student of institutions to 257 00:10:02,160 --> 00:10:06,640 realize that this was kind of a recipe 258 00:10:04,079 --> 00:10:07,600 for things not working super well 259 00:10:06,640 --> 00:10:10,240 um 260 00:10:07,600 --> 00:10:12,560 multix was late it didn't at least in 261 00:10:10,240 --> 00:10:15,920 the early days worked well and so in 262 00:10:12,560 --> 00:10:18,640 1969 handwriting on the wall bell labs 263 00:10:15,920 --> 00:10:20,800 withdrew from the project 264 00:10:18,640 --> 00:10:23,360 and this left people like the folks on 265 00:10:20,800 --> 00:10:25,600 the bottom row there with nothing to do 266 00:10:23,360 --> 00:10:27,839 they had gotten a taste for really nice 267 00:10:25,600 --> 00:10:30,399 computing environment 268 00:10:27,839 --> 00:10:32,399 they had understood what kinds of things 269 00:10:30,399 --> 00:10:34,800 could be done with computing in a 270 00:10:32,399 --> 00:10:36,560 variety of ways but they didn't have any 271 00:10:34,800 --> 00:10:39,680 resources anymore 272 00:10:36,560 --> 00:10:44,399 and so they spent quite a bit of time 273 00:10:39,680 --> 00:10:48,000 in 1969 trying to convince management to 274 00:10:44,399 --> 00:10:51,760 buy another computer a big computer so 275 00:10:48,000 --> 00:10:54,560 that they could work on um 276 00:10:51,760 --> 00:10:57,920 you know providing information utility 277 00:10:54,560 --> 00:10:59,920 uh management once bitten twice shy said 278 00:10:57,920 --> 00:11:02,320 uh and they stalled they continued to 279 00:10:59,920 --> 00:11:05,040 stall so in the meantime 280 00:11:02,320 --> 00:11:06,720 ken thompson dennis ritchie doug mcelroy 281 00:11:05,040 --> 00:11:09,040 and others spent their time thinking 282 00:11:06,720 --> 00:11:11,040 about what would be an interesting 283 00:11:09,040 --> 00:11:12,480 way to build a system that people would 284 00:11:11,040 --> 00:11:15,760 like to use 285 00:11:12,480 --> 00:11:18,000 and ken thompson um not theorizing but 286 00:11:15,760 --> 00:11:20,079 just going and doing things found what 287 00:11:18,000 --> 00:11:21,120 has been traditionally called a little 288 00:11:20,079 --> 00:11:22,959 used 289 00:11:21,120 --> 00:11:25,839 pdp seven 290 00:11:22,959 --> 00:11:28,720 so this was a machine that was first 291 00:11:25,839 --> 00:11:32,079 released by deck in 1965 292 00:11:28,720 --> 00:11:34,399 it was by 1969 obsolete and that's 293 00:11:32,079 --> 00:11:35,600 probably the reason why it was little 294 00:11:34,399 --> 00:11:37,519 used 295 00:11:35,600 --> 00:11:39,279 but ken did some experiments with 296 00:11:37,519 --> 00:11:41,920 basically he was trying to see whether 297 00:11:39,279 --> 00:11:43,680 you could make file systems run better 298 00:11:41,920 --> 00:11:45,600 with some of the designs for file 299 00:11:43,680 --> 00:11:48,959 systems that they had been doing 300 00:11:45,600 --> 00:11:51,600 on blackboards would actually make sense 301 00:11:48,959 --> 00:11:53,040 and so what he did and i asked him about 302 00:11:51,600 --> 00:11:54,560 this um 303 00:11:53,040 --> 00:11:55,760 because it was sort of folklore and i 304 00:11:54,560 --> 00:11:57,680 wanted to get it straight from the 305 00:11:55,760 --> 00:11:59,600 horse's mouth so sometime after he and i 306 00:11:57,680 --> 00:12:01,200 had both retired from the labs i sent 307 00:11:59,600 --> 00:12:02,079 him mail saying gee ken i heard this 308 00:12:01,200 --> 00:12:03,760 story 309 00:12:02,079 --> 00:12:04,959 what do you have to say and this is what 310 00:12:03,760 --> 00:12:06,720 he said 311 00:12:04,959 --> 00:12:10,079 that unix was a file system 312 00:12:06,720 --> 00:12:11,760 implementation to test throughput okay 313 00:12:10,079 --> 00:12:13,360 it was hard to get data loaded up he 314 00:12:11,760 --> 00:12:16,079 could read and write but you know it was 315 00:12:13,360 --> 00:12:17,680 impossible and so but his wife bonnie 316 00:12:16,079 --> 00:12:20,320 was going off to visit 317 00:12:17,680 --> 00:12:22,240 family in san diego california across 318 00:12:20,320 --> 00:12:25,760 the country and was going to be away for 319 00:12:22,240 --> 00:12:27,839 three weeks and so ken said to himself 320 00:12:25,760 --> 00:12:29,040 you know all it needs is a couple of 321 00:12:27,839 --> 00:12:31,360 things 322 00:12:29,040 --> 00:12:34,000 fundamentally an exact call 323 00:12:31,360 --> 00:12:36,399 trivial a shell an editor an assembler 324 00:12:34,000 --> 00:12:38,480 okay a week each 325 00:12:36,399 --> 00:12:40,240 and that was the original version of 326 00:12:38,480 --> 00:12:42,160 unix now this is a definition of 327 00:12:40,240 --> 00:12:44,079 software productivity which i suspect 328 00:12:42,160 --> 00:12:46,399 most people here have never encountered 329 00:12:44,079 --> 00:12:47,760 before i certainly haven't and the whole 330 00:12:46,399 --> 00:12:50,000 thing was done on a machine which is 331 00:12:47,760 --> 00:12:51,040 infinitesimal it had 8 332 00:12:50,000 --> 00:12:54,480 k 333 00:12:51,040 --> 00:12:56,000 16-bit were 18-bit words okay so half of 334 00:12:54,480 --> 00:12:59,200 that was the kernel and the other half 335 00:12:56,000 --> 00:13:00,639 was users being swapped in and out 336 00:12:59,200 --> 00:13:02,160 pretty amazing 337 00:13:00,639 --> 00:13:04,480 um 338 00:13:02,160 --> 00:13:06,160 so the pdp-7 was what we'd call i guess 339 00:13:04,480 --> 00:13:09,120 proto-unix 340 00:13:06,160 --> 00:13:12,399 useful but very very limited and so ken 341 00:13:09,120 --> 00:13:14,480 and dennis spent some of their time 342 00:13:12,399 --> 00:13:16,480 continuing this lobbying for can we get 343 00:13:14,480 --> 00:13:20,320 a bigger computer management continue to 344 00:13:16,480 --> 00:13:22,160 waffle and stall but finally 345 00:13:20,320 --> 00:13:24,880 the group managed to cobble together 346 00:13:22,160 --> 00:13:28,160 enough money to get the brand new at 347 00:13:24,880 --> 00:13:30,000 that time pdp 11. that 348 00:13:28,160 --> 00:13:31,920 released this machine in early i think 349 00:13:30,000 --> 00:13:33,680 1971 350 00:13:31,920 --> 00:13:35,920 and bell labs got one of the very 351 00:13:33,680 --> 00:13:37,440 earliest of those it cost fifty thousand 352 00:13:35,920 --> 00:13:40,160 dollars at the time which is still a 353 00:13:37,440 --> 00:13:43,839 chunk of money but not a huge amount 354 00:13:40,160 --> 00:13:45,760 and the the value proposition to use a 355 00:13:43,839 --> 00:13:47,440 phrase was that 356 00:13:45,760 --> 00:13:49,519 the people who were interested in this 357 00:13:47,440 --> 00:13:51,920 would write a basically a document 358 00:13:49,519 --> 00:13:54,079 preparation system that would may enable 359 00:13:51,920 --> 00:13:56,320 the bell labs patent department to 360 00:13:54,079 --> 00:13:58,240 produce patent applications in the 361 00:13:56,320 --> 00:14:00,720 official required form 362 00:13:58,240 --> 00:14:03,600 far more easily than could be done with 363 00:14:00,720 --> 00:14:06,720 commercial word processing systems and 364 00:14:03,600 --> 00:14:09,199 so that is a very famous picture uh pr 365 00:14:06,720 --> 00:14:12,399 picture of course of canon dennis in 366 00:14:09,199 --> 00:14:15,199 front of the pdp 1120 can is seated 367 00:14:12,399 --> 00:14:16,720 dennis is standing 368 00:14:15,199 --> 00:14:18,320 and you can see a lot of things about 369 00:14:16,720 --> 00:14:20,720 old computing including the fact that 370 00:14:18,320 --> 00:14:24,399 those were model 33 teletypes were rolls 371 00:14:20,720 --> 00:14:26,480 of paper and things like that 372 00:14:24,399 --> 00:14:28,480 but that was enough to build a what 373 00:14:26,480 --> 00:14:30,480 would be called the first version of 374 00:14:28,480 --> 00:14:34,320 unix the first edition which appeared in 375 00:14:30,480 --> 00:14:36,399 1971 but at that point the system was in 376 00:14:34,320 --> 00:14:39,360 use by real people it was completely 377 00:14:36,399 --> 00:14:40,880 self-supporting it was recognizably unix 378 00:14:39,360 --> 00:14:42,959 if you logged into it today you would 379 00:14:40,880 --> 00:14:45,760 say oh yeah i recognize that 380 00:14:42,959 --> 00:14:47,920 it supported multiple independent users 381 00:14:45,760 --> 00:14:50,639 so it was a time sharing system and it 382 00:14:47,920 --> 00:14:53,360 was really well documented it had the 383 00:14:50,639 --> 00:14:55,680 famous man page style like this so this 384 00:14:53,360 --> 00:14:59,279 is the man page for the cat command 385 00:14:55,680 --> 00:15:01,199 notice the date november 3rd 1971 386 00:14:59,279 --> 00:15:03,519 and that cat command still exists to 387 00:15:01,199 --> 00:15:06,480 this day that is how you 388 00:15:03,519 --> 00:15:08,240 do things like copy a file print a file 389 00:15:06,480 --> 00:15:12,399 and things like that 390 00:15:08,240 --> 00:15:14,320 it introduced even the famous bugs 391 00:15:12,399 --> 00:15:16,240 section a little cat appears to have no 392 00:15:14,320 --> 00:15:18,560 bugs at this point maybe that's no 393 00:15:16,240 --> 00:15:21,279 longer true and so that's the beginning 394 00:15:18,560 --> 00:15:23,519 if you like of unix 395 00:15:21,279 --> 00:15:23,519 now 396 00:15:23,920 --> 00:15:27,440 there was an early market forecast i 397 00:15:26,639 --> 00:15:29,440 guess 398 00:15:27,440 --> 00:15:31,600 the second edition of the unix 399 00:15:29,440 --> 00:15:34,079 programmer's manual which appeared 400 00:15:31,600 --> 00:15:35,839 sort of seven or eight months later said 401 00:15:34,079 --> 00:15:38,959 that the number of unix installations 402 00:15:35,839 --> 00:15:40,399 has grown to 10 with more expected 403 00:15:38,959 --> 00:15:42,639 okay and 404 00:15:40,399 --> 00:15:44,880 we wouldn't be here today if um things 405 00:15:42,639 --> 00:15:47,920 hadn't gone slightly better than that 406 00:15:44,880 --> 00:15:50,399 what followed then was a sequence of 407 00:15:47,920 --> 00:15:53,120 very rapid evolution with a new edition 408 00:15:50,399 --> 00:15:57,199 of the unix system roughly every six to 409 00:15:53,120 --> 00:15:58,160 eight months for some years 410 00:15:57,199 --> 00:16:00,480 and 411 00:15:58,160 --> 00:16:01,440 most of what i'm going to say in those 412 00:16:00,480 --> 00:16:02,639 dates 413 00:16:01,440 --> 00:16:05,360 is uh 414 00:16:02,639 --> 00:16:07,759 based on in fact the historical record 415 00:16:05,360 --> 00:16:09,360 which is maintained by this wonderful 416 00:16:07,759 --> 00:16:11,199 operation called the eunuchs heritage 417 00:16:09,360 --> 00:16:13,279 society which is of course based in 418 00:16:11,199 --> 00:16:15,680 australia worked by warren toomey and 419 00:16:13,279 --> 00:16:17,519 others and the unix heritage society has 420 00:16:15,680 --> 00:16:19,920 been collecting 421 00:16:17,519 --> 00:16:22,000 historical documents uh 422 00:16:19,920 --> 00:16:24,959 code actually you can download versions 423 00:16:22,000 --> 00:16:26,399 of the code from many many early 424 00:16:24,959 --> 00:16:27,839 unix systems 425 00:16:26,399 --> 00:16:29,680 and um 426 00:16:27,839 --> 00:16:31,680 basically it's just a historical record 427 00:16:29,680 --> 00:16:33,839 and it's a very active group i literally 428 00:16:31,680 --> 00:16:36,399 got mail from a friend 429 00:16:33,839 --> 00:16:38,160 asking me to weigh in on some discussion 430 00:16:36,399 --> 00:16:40,240 of document preparation systems that's 431 00:16:38,160 --> 00:16:42,000 going on i got mail from him about the 432 00:16:40,240 --> 00:16:43,360 discussion going on in the unix heritage 433 00:16:42,000 --> 00:16:45,120 society 434 00:16:43,360 --> 00:16:47,040 about three hours ago i haven't gotten 435 00:16:45,120 --> 00:16:49,759 around to answering that but 436 00:16:47,040 --> 00:16:51,920 so it's very very active and interesting 437 00:16:49,759 --> 00:16:53,600 group and if you haven't done it go for 438 00:16:51,920 --> 00:16:56,000 it and uh 439 00:16:53,600 --> 00:16:57,600 appreciate the work done in australia on 440 00:16:56,000 --> 00:16:58,480 this 441 00:16:57,600 --> 00:16:59,199 okay 442 00:16:58,480 --> 00:17:00,880 so 443 00:16:59,199 --> 00:17:02,160 among the other things that happened 444 00:17:00,880 --> 00:17:03,920 with 445 00:17:02,160 --> 00:17:05,520 those early days of unix the first 446 00:17:03,920 --> 00:17:07,600 versions of unix were of course written 447 00:17:05,520 --> 00:17:11,839 in assembly language uh first on the 448 00:17:07,600 --> 00:17:13,520 pdb7 and then on the pdp-11 um but one 449 00:17:11,839 --> 00:17:16,160 of the lessons that had been learned in 450 00:17:13,520 --> 00:17:18,079 the multix environment was that it was 451 00:17:16,160 --> 00:17:20,000 possible to write code in high-level 452 00:17:18,079 --> 00:17:20,959 languages and that was obviously a lot 453 00:17:20,000 --> 00:17:22,000 easier 454 00:17:20,959 --> 00:17:24,160 and so 455 00:17:22,000 --> 00:17:26,079 one of the big big 456 00:17:24,160 --> 00:17:27,600 contributions there was of course the 457 00:17:26,079 --> 00:17:30,000 development of the c programming 458 00:17:27,600 --> 00:17:33,440 language by dennis ritchie in roughly 459 00:17:30,000 --> 00:17:36,320 the period 1972 or 1973. 460 00:17:33,440 --> 00:17:38,880 the multisystem had been 461 00:17:36,320 --> 00:17:40,400 explored a language 462 00:17:38,880 --> 00:17:42,320 pl1 463 00:17:40,400 --> 00:17:43,919 but that turned out to be too big and 464 00:17:42,320 --> 00:17:46,240 complicated 465 00:17:43,919 --> 00:17:48,160 and so a lot of multics code was written 466 00:17:46,240 --> 00:17:50,160 in a language called bcpl which was done 467 00:17:48,160 --> 00:17:53,600 by martin richards at the university of 468 00:17:50,160 --> 00:17:55,360 cambridge uh ken thompson took bcpl 469 00:17:53,600 --> 00:17:57,039 which was already a fairly minimal 470 00:17:55,360 --> 00:17:58,720 language and stripped it down even 471 00:17:57,039 --> 00:18:02,160 further into a language which he called 472 00:17:58,720 --> 00:18:05,919 b and dennis then 473 00:18:02,160 --> 00:18:08,720 derived c from that basically bcpl and b 474 00:18:05,919 --> 00:18:10,400 were typeless languages c had different 475 00:18:08,720 --> 00:18:13,200 data types to reflect the fact that the 476 00:18:10,400 --> 00:18:14,720 pdb11 had different data types supported 477 00:18:13,200 --> 00:18:16,640 by hardware 478 00:18:14,720 --> 00:18:19,039 and so c was a language then for a 479 00:18:16,640 --> 00:18:20,720 system program based on that experience 480 00:18:19,039 --> 00:18:23,280 with baltics 481 00:18:20,720 --> 00:18:24,080 and as i suspect everybody here knows c 482 00:18:23,280 --> 00:18:26,640 is 483 00:18:24,080 --> 00:18:29,280 sufficiently expressive and efficient to 484 00:18:26,640 --> 00:18:32,080 do anything really well and it's in some 485 00:18:29,280 --> 00:18:33,760 sense hit a sweet spot in the design of 486 00:18:32,080 --> 00:18:36,960 programming languages that's been hard 487 00:18:33,760 --> 00:18:38,559 to follow or match ever since and 488 00:18:36,960 --> 00:18:42,080 certainly locally what it did was to 489 00:18:38,559 --> 00:18:44,160 lead to this incredible explosion of 490 00:18:42,080 --> 00:18:47,039 applications most of which were system 491 00:18:44,160 --> 00:18:49,760 programming kinds of things tools and 492 00:18:47,039 --> 00:18:51,440 things that helped programmers do better 493 00:18:49,760 --> 00:18:53,919 some of the obvious ones were yak the 494 00:18:51,440 --> 00:18:55,760 compiler compiler that steve johnson uh 495 00:18:53,919 --> 00:18:58,400 created that made it possible to create 496 00:18:55,760 --> 00:18:59,760 language translators compilers very 497 00:18:58,400 --> 00:19:01,919 easily 498 00:18:59,760 --> 00:19:04,240 lacks a similar program for 499 00:19:01,919 --> 00:19:05,440 lexical analysis which was done by mike 500 00:19:04,240 --> 00:19:07,679 lesk 501 00:19:05,440 --> 00:19:09,600 shortly afterward and those of course 502 00:19:07,679 --> 00:19:12,400 then in turn led to all kinds of 503 00:19:09,600 --> 00:19:13,440 languages and tools document preparation 504 00:19:12,400 --> 00:19:14,320 and so on 505 00:19:13,440 --> 00:19:15,840 so 506 00:19:14,320 --> 00:19:17,360 i think the most important of these 507 00:19:15,840 --> 00:19:20,160 might be the 508 00:19:17,360 --> 00:19:21,760 portable c compiler that steve johnson 509 00:19:20,160 --> 00:19:23,520 did 510 00:19:21,760 --> 00:19:25,679 which led to the portability of the 511 00:19:23,520 --> 00:19:27,280 operating system itself because the 512 00:19:25,679 --> 00:19:30,080 observation is 513 00:19:27,280 --> 00:19:32,160 that if the operating system is written 514 00:19:30,080 --> 00:19:34,400 in a high-level language then in 515 00:19:32,160 --> 00:19:37,760 principle you can move the operating 516 00:19:34,400 --> 00:19:40,320 system to another computer if that other 517 00:19:37,760 --> 00:19:41,760 computer also has a c compiler so i'm 518 00:19:40,320 --> 00:19:42,960 going to come back to that in a couple 519 00:19:41,760 --> 00:19:44,080 of minutes 520 00:19:42,960 --> 00:19:46,720 but there was something else that 521 00:19:44,080 --> 00:19:47,919 happened at about that same time but 522 00:19:46,720 --> 00:19:50,960 the 523 00:19:47,919 --> 00:19:52,320 unix system was up through version three 524 00:19:50,960 --> 00:19:54,720 the third edition was written in 525 00:19:52,320 --> 00:19:55,679 assembly language the fourth 526 00:19:54,720 --> 00:19:58,880 edition 527 00:19:55,679 --> 00:20:01,280 was in c and of course never looked back 528 00:19:58,880 --> 00:20:03,039 since then 529 00:20:01,280 --> 00:20:05,200 something else that came along a little 530 00:20:03,039 --> 00:20:06,400 even before that which is in a way very 531 00:20:05,200 --> 00:20:07,360 characteristic 532 00:20:06,400 --> 00:20:08,480 of 533 00:20:07,360 --> 00:20:10,720 unix 534 00:20:08,480 --> 00:20:13,679 is the invention of pipes 535 00:20:10,720 --> 00:20:13,679 so here is 536 00:20:14,080 --> 00:20:18,159 a paper i don't i guess you'd call it a 537 00:20:16,480 --> 00:20:22,320 white paper or something 538 00:20:18,159 --> 00:20:24,240 that doug michael ray wrote in 1964. 539 00:20:22,320 --> 00:20:27,440 it's kind of hard to read perhaps so 540 00:20:24,240 --> 00:20:29,360 i'll put up a clearer version of it here 541 00:20:27,440 --> 00:20:30,720 but the gist of it is and this is 542 00:20:29,360 --> 00:20:34,080 something that doug had been flogging 543 00:20:30,720 --> 00:20:36,559 for a long time the idea that what you 544 00:20:34,080 --> 00:20:38,960 could do is to have some way of 545 00:20:36,559 --> 00:20:41,280 connecting programs together and his 546 00:20:38,960 --> 00:20:43,039 metaphor was like 547 00:20:41,280 --> 00:20:44,720 couple them like garden hose you just 548 00:20:43,039 --> 00:20:45,600 screw in another segment when there's 549 00:20:44,720 --> 00:20:46,880 something 550 00:20:45,600 --> 00:20:48,320 uh 551 00:20:46,880 --> 00:20:51,039 that you want to do some further 552 00:20:48,320 --> 00:20:53,440 processing on this and so this was 553 00:20:51,039 --> 00:20:56,000 doug's idea 554 00:20:53,440 --> 00:20:58,720 and it didn't actually make it into 555 00:20:56,000 --> 00:21:00,840 working code until some while later but 556 00:20:58,720 --> 00:21:05,200 it fundamentally arrived 557 00:21:00,840 --> 00:21:08,320 um in time for the third edition of unix 558 00:21:05,200 --> 00:21:12,080 system which appeared in early 1973 so 559 00:21:08,320 --> 00:21:15,360 this is a late 1972 invention the idea 560 00:21:12,080 --> 00:21:17,280 of pipes and then pipelines and filters 561 00:21:15,360 --> 00:21:18,960 and of course everybody here knows all 562 00:21:17,280 --> 00:21:21,120 about that stuff and so it's probably 563 00:21:18,960 --> 00:21:23,520 hard to imagine just what an incredible 564 00:21:21,120 --> 00:21:25,840 revolution it was in the way you thought 565 00:21:23,520 --> 00:21:27,840 about programming at the time it was one 566 00:21:25,840 --> 00:21:30,320 of those things where i still remember 567 00:21:27,840 --> 00:21:32,000 this idea of gee you could connect the 568 00:21:30,320 --> 00:21:34,480 output of one program to the input of 569 00:21:32,000 --> 00:21:37,600 another it's really easy and you can do 570 00:21:34,480 --> 00:21:38,720 really neat things without any work 571 00:21:37,600 --> 00:21:40,480 so who 572 00:21:38,720 --> 00:21:42,400 remember it's a time sharing system so 573 00:21:40,480 --> 00:21:43,760 lots and lots of users potentially on 574 00:21:42,400 --> 00:21:46,159 the same machine 575 00:21:43,760 --> 00:21:47,919 so who gives you a list of the users one 576 00:21:46,159 --> 00:21:50,880 line per user 577 00:21:47,919 --> 00:21:52,480 grab our pattern searching program 578 00:21:50,880 --> 00:21:53,840 let's look for all of the user's name 579 00:21:52,480 --> 00:21:55,440 joe 580 00:21:53,840 --> 00:21:58,320 and how many of those are there we'll 581 00:21:55,440 --> 00:22:00,159 run it into word count which and so who 582 00:21:58,320 --> 00:22:01,679 produces a bunch of lines grep selects 583 00:22:00,159 --> 00:22:03,280 some of them a word count tells you how 584 00:22:01,679 --> 00:22:07,200 many lines there are and that's the 585 00:22:03,280 --> 00:22:08,159 number of times that joe is logged in 586 00:22:07,200 --> 00:22:10,159 so 587 00:22:08,159 --> 00:22:12,240 when the pipe mechanism came on and it 588 00:22:10,159 --> 00:22:13,919 was really really trivial ken says that 589 00:22:12,240 --> 00:22:15,760 it took him less than an hour to put it 590 00:22:13,919 --> 00:22:19,679 into the operating system because all 591 00:22:15,760 --> 00:22:19,679 the other mechanisms were already there 592 00:22:19,919 --> 00:22:24,960 it might have taken others longer than 593 00:22:21,440 --> 00:22:27,440 that um but people started to invent 594 00:22:24,960 --> 00:22:28,960 interesting ideas 595 00:22:27,440 --> 00:22:31,360 and they start and they spend a lot of 596 00:22:28,960 --> 00:22:33,440 time very quickly modifying programs so 597 00:22:31,360 --> 00:22:35,520 that they would actually work in 598 00:22:33,440 --> 00:22:38,960 pipelines so think about the sort 599 00:22:35,520 --> 00:22:41,520 command the sort command takes input 600 00:22:38,960 --> 00:22:44,000 sorts it and then produces output but it 601 00:22:41,520 --> 00:22:46,480 cannot produce any output until it has 602 00:22:44,000 --> 00:22:48,799 seen all of the input so putting it in a 603 00:22:46,480 --> 00:22:50,880 pipeline is in some sense deceptive 604 00:22:48,799 --> 00:22:53,200 right because that's a dead stop in the 605 00:22:50,880 --> 00:22:55,280 pipeline until you've seen all the input 606 00:22:53,200 --> 00:22:57,600 but as a packaging matters and 607 00:22:55,280 --> 00:23:00,960 engineering and making it easy to use 608 00:22:57,600 --> 00:23:03,039 matter you package it as a pipeline as a 609 00:23:00,960 --> 00:23:04,799 program that is just another filter it's 610 00:23:03,039 --> 00:23:07,280 a filter that sorts 611 00:23:04,799 --> 00:23:09,280 and so that kind of insight led to all 612 00:23:07,280 --> 00:23:11,120 kinds of intriguing ideas 613 00:23:09,280 --> 00:23:13,200 the pipeline for detecting spelling 614 00:23:11,120 --> 00:23:15,280 mistakes is due to steve johnson you 615 00:23:13,200 --> 00:23:17,200 take a bunch of files you canonicalize 616 00:23:15,280 --> 00:23:19,679 them in some way like convert uppercase 617 00:23:17,200 --> 00:23:21,440 to lowercase you sort them there's that 618 00:23:19,679 --> 00:23:24,880 dead stop in the pipeline but it doesn't 619 00:23:21,440 --> 00:23:27,120 matter and then you pick out the words 620 00:23:24,880 --> 00:23:28,720 the unique words so if the word th e 621 00:23:27,120 --> 00:23:31,760 appears a bunch of times you only care 622 00:23:28,720 --> 00:23:33,840 about it once and then you compare it to 623 00:23:31,760 --> 00:23:35,280 a dictionary and print the words that 624 00:23:33,840 --> 00:23:38,080 are in the document but not in the 625 00:23:35,280 --> 00:23:39,840 dictionary and there is a first draft of 626 00:23:38,080 --> 00:23:41,840 a program for detecting spelling 627 00:23:39,840 --> 00:23:43,520 mistakes and documents 628 00:23:41,840 --> 00:23:46,240 and how long did it take to produce that 629 00:23:43,520 --> 00:23:49,279 you could practically write that 630 00:23:46,240 --> 00:23:51,360 without even putting it on paper first 631 00:23:49,279 --> 00:23:53,039 and on a larger scale and this is where 632 00:23:51,360 --> 00:23:55,200 stuff that i was more interested in at 633 00:23:53,039 --> 00:23:58,480 the time was the idea that you could 634 00:23:55,200 --> 00:24:00,559 modularize programs by having a sequence 635 00:23:58,480 --> 00:24:02,080 of programs each of which did a part of 636 00:24:00,559 --> 00:24:04,240 the job 637 00:24:02,080 --> 00:24:06,000 but make them work together and so the 638 00:24:04,240 --> 00:24:08,799 part that i was most interested in was 639 00:24:06,000 --> 00:24:10,159 the document preparation tools of t 640 00:24:08,799 --> 00:24:12,159 rough which 641 00:24:10,159 --> 00:24:14,559 basically did formatting think of it as 642 00:24:12,159 --> 00:24:16,000 an early early version of a program like 643 00:24:14,559 --> 00:24:17,279 tech or latex 644 00:24:16,000 --> 00:24:18,559 but then a special program for 645 00:24:17,279 --> 00:24:20,400 mathematics 646 00:24:18,559 --> 00:24:22,400 which lorinda cherry and i did special 647 00:24:20,400 --> 00:24:25,039 program for tables which mike les did 648 00:24:22,400 --> 00:24:26,559 immense of drawing pictures and so on so 649 00:24:25,039 --> 00:24:28,720 all of that idea of taking something 650 00:24:26,559 --> 00:24:30,799 that would be an enormous ball of wax if 651 00:24:28,720 --> 00:24:32,880 it were a single program but instead 652 00:24:30,799 --> 00:24:35,440 it's a sequence of programs that each 653 00:24:32,880 --> 00:24:37,200 does its own thing and they collaborate 654 00:24:35,440 --> 00:24:42,240 to get a job done 655 00:24:37,200 --> 00:24:43,760 and so that idea of basically tools of 656 00:24:42,240 --> 00:24:46,080 thinking about what you're doing is not 657 00:24:43,760 --> 00:24:48,080 so much writing programs but is building 658 00:24:46,080 --> 00:24:49,919 tools that make it possible to do things 659 00:24:48,080 --> 00:24:51,440 very easily is i think one of the 660 00:24:49,919 --> 00:24:53,520 pervasive 661 00:24:51,440 --> 00:24:55,600 ideas in unix one of the things that's 662 00:24:53,520 --> 00:24:57,760 most distinctive and certainly there's a 663 00:24:55,600 --> 00:25:00,320 bunch of these small tools like crap and 664 00:24:57,760 --> 00:25:02,000 deaf and so on there's a shell itself 665 00:25:00,320 --> 00:25:04,720 which is programmable so it's a 666 00:25:02,000 --> 00:25:07,679 programming language whose operators are 667 00:25:04,720 --> 00:25:09,919 programs that makes it easy to combine 668 00:25:07,679 --> 00:25:12,240 programs to do things and then we have 669 00:25:09,919 --> 00:25:13,279 tools for making further tools and 670 00:25:12,240 --> 00:25:14,640 particular 671 00:25:13,279 --> 00:25:16,400 based tools 672 00:25:14,640 --> 00:25:18,240 and then we have more tools that are 673 00:25:16,400 --> 00:25:21,279 programmable and then of course that 674 00:25:18,240 --> 00:25:23,200 leads to languages and so this metaphor 675 00:25:21,279 --> 00:25:26,720 the building blocks i think is in some 676 00:25:23,200 --> 00:25:28,400 sense a very very nice example of how 677 00:25:26,720 --> 00:25:29,760 unix works 678 00:25:28,400 --> 00:25:32,080 and this is 679 00:25:29,760 --> 00:25:34,480 this is a pr photograph from probably 680 00:25:32,080 --> 00:25:36,000 the early 80s or something like that 681 00:25:34,480 --> 00:25:37,600 late 70s 682 00:25:36,000 --> 00:25:39,840 and hiding the background it's hard to 683 00:25:37,600 --> 00:25:42,080 see although i i know of it 684 00:25:39,840 --> 00:25:43,919 is a t-roff document i know because i 685 00:25:42,080 --> 00:25:45,600 provided the t-roth document that's in 686 00:25:43,919 --> 00:25:47,440 the background i have no idea what it 687 00:25:45,600 --> 00:25:48,960 was about 688 00:25:47,440 --> 00:25:50,240 so anyway let me talk for a minute about 689 00:25:48,960 --> 00:25:52,720 graph because it's actually kind of an 690 00:25:50,240 --> 00:25:55,520 interesting story and grep is in a way 691 00:25:52,720 --> 00:25:59,919 the quintessential example of a small 692 00:25:55,520 --> 00:26:01,520 tool that started with unix and 693 00:25:59,919 --> 00:26:03,360 in some sense was the place where we 694 00:26:01,520 --> 00:26:05,679 started to think that what we're doing 695 00:26:03,360 --> 00:26:07,840 is building tools 696 00:26:05,679 --> 00:26:09,279 it was created by ken thompson literally 697 00:26:07,840 --> 00:26:13,039 overnight 698 00:26:09,279 --> 00:26:14,960 by surgery on the ed text editor 699 00:26:13,039 --> 00:26:17,520 he basically just threw away everything 700 00:26:14,960 --> 00:26:19,360 except the pattern matching part of it 701 00:26:17,520 --> 00:26:20,880 and the result was a tool which is 702 00:26:19,360 --> 00:26:22,960 absolutely fundamental i suspect that 703 00:26:20,880 --> 00:26:25,520 anybody who has used their 704 00:26:22,960 --> 00:26:27,440 unix or linux box today has probably 705 00:26:25,520 --> 00:26:29,200 used grep for something certainly i've 706 00:26:27,440 --> 00:26:31,520 used it probably a dozen times already 707 00:26:29,200 --> 00:26:33,679 today 708 00:26:31,520 --> 00:26:35,919 the thing that there's a wonderful story 709 00:26:33,679 --> 00:26:38,679 that goes with it 710 00:26:35,919 --> 00:26:42,960 i got a call and i it must have been in 711 00:26:38,679 --> 00:26:46,799 1972 or 73 um a guy called me and i was 712 00:26:42,960 --> 00:26:50,400 at bell labs and he uh said you know i 713 00:26:46,799 --> 00:26:52,799 just got a new hp 35 pocket calculator 714 00:26:50,400 --> 00:26:54,480 now this was the first real serious uh 715 00:26:52,799 --> 00:26:57,039 pocket calculator 716 00:26:54,480 --> 00:26:59,279 um and it came out in 72 so let's call 717 00:26:57,039 --> 00:27:01,520 this 72 or 73 718 00:26:59,279 --> 00:27:03,279 and he said i understand that you guys 719 00:27:01,520 --> 00:27:05,039 have a 720 00:27:03,279 --> 00:27:06,480 dictionary on your computer and i said 721 00:27:05,039 --> 00:27:08,080 yes and he says there's some way you 722 00:27:06,480 --> 00:27:10,559 could 723 00:27:08,080 --> 00:27:13,360 use that dictionary to tell me what 724 00:27:10,559 --> 00:27:15,520 words i could make on my calculator if i 725 00:27:13,360 --> 00:27:16,799 hold it upside down 726 00:27:15,520 --> 00:27:18,640 well you know i was in a research 727 00:27:16,799 --> 00:27:20,320 operation you're sometimes disconnected 728 00:27:18,640 --> 00:27:23,120 from reality so it was nice to have a 729 00:27:20,320 --> 00:27:25,279 guy called with a real practical problem 730 00:27:23,120 --> 00:27:27,279 and so i said sure uh 731 00:27:25,279 --> 00:27:29,600 what letters do you think you can make 732 00:27:27,279 --> 00:27:33,200 when you hold it upside down and he said 733 00:27:29,600 --> 00:27:34,399 i think i could make b-e-h-i-l-o-s 734 00:27:33,200 --> 00:27:35,919 now this is 735 00:27:34,399 --> 00:27:37,360 pretty crappy looking here but you get 736 00:27:35,919 --> 00:27:40,480 the idea 737 00:27:37,360 --> 00:27:42,240 and so i said okay um 738 00:27:40,480 --> 00:27:44,080 and so i typed 739 00:27:42,240 --> 00:27:45,520 this command 740 00:27:44,080 --> 00:27:48,000 into my 741 00:27:45,520 --> 00:27:49,600 terminal 742 00:27:48,000 --> 00:27:52,399 crap we've talked about the pattern 743 00:27:49,600 --> 00:27:54,320 matching program userdict web 2 is the 744 00:27:52,399 --> 00:27:56,240 word list from webster's second 745 00:27:54,320 --> 00:27:58,279 international dictionary just the words 746 00:27:56,240 --> 00:28:01,679 one word per line 747 00:27:58,279 --> 00:28:03,279 235 000 words so it's a big word list 748 00:28:01,679 --> 00:28:04,720 and the thing in the middle is a pattern 749 00:28:03,279 --> 00:28:06,880 it's a regular expression it's one of 750 00:28:04,720 --> 00:28:09,760 those things absolutely characteristic 751 00:28:06,880 --> 00:28:11,919 of unix and it's a pattern that says i 752 00:28:09,760 --> 00:28:13,760 want to see lines that contain only 753 00:28:11,919 --> 00:28:16,480 arbitrary combinations of any number of 754 00:28:13,760 --> 00:28:18,080 any of those letters and nothing else 755 00:28:16,480 --> 00:28:20,799 so i typed 756 00:28:18,080 --> 00:28:22,320 this command and i pushed return 757 00:28:20,799 --> 00:28:23,919 and out came 758 00:28:22,320 --> 00:28:25,279 an amazing list of words this is 759 00:28:23,919 --> 00:28:28,480 probably hard to see unless your 760 00:28:25,279 --> 00:28:31,600 projector is very good but 761 00:28:28,480 --> 00:28:33,520 they're 263 words there i am a pretty 762 00:28:31,600 --> 00:28:34,960 well educated native speaker of english 763 00:28:33,520 --> 00:28:36,399 and there's a boatload of words that 764 00:28:34,960 --> 00:28:39,520 i've never heard of 765 00:28:36,399 --> 00:28:42,320 i've no idea what they mean but um 766 00:28:39,520 --> 00:28:44,000 anyway i printed the list and i sent it 767 00:28:42,320 --> 00:28:45,679 off to this guy and i think he was 768 00:28:44,000 --> 00:28:46,559 probably happy i never heard from him 769 00:28:45,679 --> 00:28:49,200 again 770 00:28:46,559 --> 00:28:50,159 but he left me with this wonderful story 771 00:28:49,200 --> 00:28:52,480 of 772 00:28:50,159 --> 00:28:54,240 the importance of tools the idea that if 773 00:28:52,480 --> 00:28:55,919 you have the right tool for the job you 774 00:28:54,240 --> 00:28:58,320 can do something which would otherwise 775 00:28:55,919 --> 00:29:00,240 be either not worth not possible do or 776 00:28:58,320 --> 00:29:01,200 certainly not worth doing 777 00:29:00,240 --> 00:29:02,960 so 778 00:29:01,200 --> 00:29:04,559 great example 779 00:29:02,960 --> 00:29:08,159 so i think all of this stuff 780 00:29:04,559 --> 00:29:10,960 fundamentally came together in the sixth 781 00:29:08,159 --> 00:29:13,440 edition of unix the sixth edition was 782 00:29:10,960 --> 00:29:15,279 the and you know it's may 75 so we're 783 00:29:13,440 --> 00:29:16,640 you know roughly three 784 00:29:15,279 --> 00:29:18,799 in a bit years 785 00:29:16,640 --> 00:29:19,760 uh from the first edition 786 00:29:18,799 --> 00:29:21,840 um 787 00:29:19,760 --> 00:29:24,240 this was the first widely used version 788 00:29:21,840 --> 00:29:27,600 the first version that was used outside 789 00:29:24,240 --> 00:29:29,279 of bell labs in any new real sense 790 00:29:27,600 --> 00:29:31,279 and it had a bunch of things 791 00:29:29,279 --> 00:29:33,440 that are characteristic of unix to this 792 00:29:31,279 --> 00:29:35,919 day the hierarchical file system where 793 00:29:33,440 --> 00:29:37,840 the files are just bytes and devices are 794 00:29:35,919 --> 00:29:39,200 files in the file system 795 00:29:37,840 --> 00:29:40,960 uh and the other things that i've 796 00:29:39,200 --> 00:29:43,440 mentioned like the shell the pipes and 797 00:29:40,960 --> 00:29:45,279 so on and as i said earlier the system 798 00:29:43,440 --> 00:29:47,679 was actually written in c 799 00:29:45,279 --> 00:29:49,279 for the fourth edition so it was about 9 800 00:29:47,679 --> 00:29:51,200 000 lines there was a certain amount of 801 00:29:49,279 --> 00:29:55,919 assembly language but the vast majority 802 00:29:51,200 --> 00:29:59,039 of it was c code okay and because of 803 00:29:55,919 --> 00:30:00,159 that it was comprehensible by people 804 00:29:59,039 --> 00:30:02,240 you know you wouldn't want to have to 805 00:30:00,159 --> 00:30:04,720 deal with the equivalent of 9000 lines 806 00:30:02,240 --> 00:30:06,399 of c in assembly language it would be 807 00:30:04,720 --> 00:30:10,559 just a nuisance 808 00:30:06,399 --> 00:30:12,880 and the accessibility of the code in c a 809 00:30:10,559 --> 00:30:15,039 language which was understandable led to 810 00:30:12,880 --> 00:30:17,440 some really interesting things and 811 00:30:15,039 --> 00:30:19,600 here's one of the best of all of them 812 00:30:17,440 --> 00:30:20,559 this is the um 813 00:30:19,600 --> 00:30:23,919 comment 814 00:30:20,559 --> 00:30:26,880 the commentary that john lyons produced 815 00:30:23,919 --> 00:30:29,919 on the sixth edition code so what john 816 00:30:26,880 --> 00:30:32,000 did was to take that code 9000 lines of 817 00:30:29,919 --> 00:30:33,440 c and a bit of assembly language and 818 00:30:32,000 --> 00:30:35,440 basically 819 00:30:33,440 --> 00:30:37,520 produce two side-by-side books one of 820 00:30:35,440 --> 00:30:39,840 which had the code and the other which 821 00:30:37,520 --> 00:30:41,760 was an explanation of what every single 822 00:30:39,840 --> 00:30:44,559 piece of that code did 823 00:30:41,760 --> 00:30:46,240 and it's a really really marvelous book 824 00:30:44,559 --> 00:30:48,880 and if it i don't know whether it's 825 00:30:46,240 --> 00:30:51,279 still widely available i have a numbered 826 00:30:48,880 --> 00:30:53,600 copy because originally they were very 827 00:30:51,279 --> 00:30:56,320 very closely held this you know this 828 00:30:53,600 --> 00:30:58,960 surreptitious looking pair xeroxing 829 00:30:56,320 --> 00:31:01,279 it suggests that it was not 830 00:30:58,960 --> 00:31:03,039 meant to be distributed widely 831 00:31:01,279 --> 00:31:04,960 um 832 00:31:03,039 --> 00:31:07,440 but it's a really really excellent 833 00:31:04,960 --> 00:31:09,279 description of ken's observation about 834 00:31:07,440 --> 00:31:11,360 best exposition of the workings of real 835 00:31:09,279 --> 00:31:13,279 operating system i think is is 836 00:31:11,360 --> 00:31:15,039 absolutely true without even the need 837 00:31:13,279 --> 00:31:16,640 for quotes around real 838 00:31:15,039 --> 00:31:18,880 um 839 00:31:16,640 --> 00:31:21,440 john of course was at the university of 840 00:31:18,880 --> 00:31:24,080 new south wales in sydney um but he 841 00:31:21,440 --> 00:31:25,679 spent several sabbaticals at the labs in 842 00:31:24,080 --> 00:31:28,480 new jersey and his first one which was 843 00:31:25,679 --> 00:31:30,399 1978 1979 he spent it in the office 844 00:31:28,480 --> 00:31:32,480 across the hall from me so i knew him 845 00:31:30,399 --> 00:31:34,640 well from that 846 00:31:32,480 --> 00:31:38,080 the book is of course one of his main 847 00:31:34,640 --> 00:31:40,240 legacies an absolutely a wonderful book 848 00:31:38,080 --> 00:31:42,960 another great legacy is an amazing 849 00:31:40,240 --> 00:31:45,360 collection of students who went through 850 00:31:42,960 --> 00:31:47,039 his courses at university of new south 851 00:31:45,360 --> 00:31:48,480 wales and then went on to a variety of 852 00:31:47,039 --> 00:31:50,880 other things 853 00:31:48,480 --> 00:31:53,120 several of them wound up at bell labs 854 00:31:50,880 --> 00:31:56,000 where they become good friends as well 855 00:31:53,120 --> 00:31:59,039 of course john was my host for my 856 00:31:56,000 --> 00:32:00,399 trip to australia in 1984. it was a 857 00:31:59,039 --> 00:32:02,080 wonderful time 858 00:32:00,399 --> 00:32:03,919 the conference was held in the sydney 859 00:32:02,080 --> 00:32:05,120 opera house i spoke at the very 860 00:32:03,919 --> 00:32:06,799 beginning of the conference and then 861 00:32:05,120 --> 00:32:08,880 spent the rest of the conference looking 862 00:32:06,799 --> 00:32:11,360 out the window at the harbor i have no 863 00:32:08,880 --> 00:32:12,840 idea what anyone else said but i had a 864 00:32:11,360 --> 00:32:16,399 wonderful time 865 00:32:12,840 --> 00:32:18,320 um one of the high points of the visit 866 00:32:16,399 --> 00:32:21,679 was uh dinner at 867 00:32:18,320 --> 00:32:24,000 john and marianne's home in sydney 868 00:32:21,679 --> 00:32:25,679 and i remember that fondly the part i 869 00:32:24,000 --> 00:32:27,600 don't remember quite so fondly is 870 00:32:25,679 --> 00:32:29,440 getting back into my car to drive back 871 00:32:27,600 --> 00:32:32,880 to my hotel and discovering an 872 00:32:29,440 --> 00:32:34,240 absolutely enormous spider in the car 873 00:32:32,880 --> 00:32:36,640 so i'm sure australians are all 874 00:32:34,240 --> 00:32:40,240 chuckling over this uh but 875 00:32:36,640 --> 00:32:42,240 for the tourists it was one big 876 00:32:40,240 --> 00:32:43,760 spider so anyway there is john lyons 877 00:32:42,240 --> 00:32:47,840 with some of his students and a very 878 00:32:43,760 --> 00:32:50,720 characteristic picture of him 879 00:32:47,840 --> 00:32:53,039 so um 880 00:32:50,720 --> 00:32:56,159 i mentioned uh the fact that the 881 00:32:53,039 --> 00:32:58,640 operating system was written in c 882 00:32:56,159 --> 00:33:00,159 and thus was potentially portable to 883 00:32:58,640 --> 00:33:02,480 more than one kind of computer 884 00:33:00,159 --> 00:33:04,720 architecture the first 885 00:33:02,480 --> 00:33:06,799 port of unix to another computer was 886 00:33:04,720 --> 00:33:09,039 actually done by richard miller at uh 887 00:33:06,799 --> 00:33:11,679 university of wollongong in 888 00:33:09,039 --> 00:33:14,080 april of 1977 he ported it to an 889 00:33:11,679 --> 00:33:14,880 intraday of 732. 890 00:33:14,080 --> 00:33:17,519 um 891 00:33:14,880 --> 00:33:20,159 about six months later uh steve johnson 892 00:33:17,519 --> 00:33:22,480 and dennis ritchie ported it to an 893 00:33:20,159 --> 00:33:24,480 interdata 832 which is similar but not 894 00:33:22,480 --> 00:33:27,279 quite the same and then there were ports 895 00:33:24,480 --> 00:33:29,200 to the then new vax computers at bell 896 00:33:27,279 --> 00:33:32,399 labs and then 897 00:33:29,200 --> 00:33:33,279 at berkeley in a sense that that shift 898 00:33:32,399 --> 00:33:36,480 from 899 00:33:33,279 --> 00:33:38,480 the pdp-11s to the vax computers was uh 900 00:33:36,480 --> 00:33:40,240 also a shift in the center of gravity 901 00:33:38,480 --> 00:33:42,240 and a lot of it um 902 00:33:40,240 --> 00:33:44,640 went on in several different directions 903 00:33:42,240 --> 00:33:46,799 there should uh 904 00:33:44,640 --> 00:33:48,399 activity at bell labs 905 00:33:46,799 --> 00:33:50,640 and att who are trying to make a 906 00:33:48,399 --> 00:33:52,640 commercial version of unix and a lot of 907 00:33:50,640 --> 00:33:54,640 activity at berkeley where in particular 908 00:33:52,640 --> 00:33:56,000 they were interested in in 909 00:33:54,640 --> 00:33:58,880 networking 910 00:33:56,000 --> 00:34:00,000 um but this was all enabled by the 911 00:33:58,880 --> 00:34:02,240 portable 912 00:34:00,000 --> 00:34:04,240 nature writing in a high-level language 913 00:34:02,240 --> 00:34:06,399 and thinking about portability and that 914 00:34:04,240 --> 00:34:08,480 portability of language and operating 915 00:34:06,399 --> 00:34:10,720 system and all of the tools all written 916 00:34:08,480 --> 00:34:12,320 and see uh enabled the workstation 917 00:34:10,720 --> 00:34:15,040 market which 918 00:34:12,320 --> 00:34:17,200 was companies like sun microsystems and 919 00:34:15,040 --> 00:34:19,520 mips which became sgi 920 00:34:17,200 --> 00:34:21,679 uh and apollo and sequin and just a 921 00:34:19,520 --> 00:34:26,159 bunch of others and then a few years 922 00:34:21,679 --> 00:34:27,599 later 1982 or so uh the ibm pc 923 00:34:26,159 --> 00:34:29,839 and this is something that i think is 924 00:34:27,599 --> 00:34:31,119 not really well known 925 00:34:29,839 --> 00:34:35,280 but for 926 00:34:31,119 --> 00:34:37,440 microsoft had their own version of unix 927 00:34:35,280 --> 00:34:38,960 it was called xenix 928 00:34:37,440 --> 00:34:41,520 and 929 00:34:38,960 --> 00:34:44,399 for a period in the 80s 930 00:34:41,520 --> 00:34:46,720 microsoft was the biggest distributor of 931 00:34:44,399 --> 00:34:48,879 unix operating systems and i keep 932 00:34:46,720 --> 00:34:50,000 thinking what would the world have been 933 00:34:48,879 --> 00:34:54,000 like 934 00:34:50,000 --> 00:34:57,280 if microsoft instead of going off and 935 00:34:54,000 --> 00:34:58,800 dos had taken off with unix who knows 936 00:34:57,280 --> 00:35:00,839 what would happen but it certainly would 937 00:34:58,800 --> 00:35:02,800 have been interesting 938 00:35:00,839 --> 00:35:05,599 okay so 939 00:35:02,800 --> 00:35:08,720 anyway this is kind of at this point uh 940 00:35:05,599 --> 00:35:11,680 let's call it the uh mid-80s what i 941 00:35:08,720 --> 00:35:13,680 would call the golden age okay so unix 942 00:35:11,680 --> 00:35:16,800 is everywhere it runs in all the 943 00:35:13,680 --> 00:35:19,040 computers that anybody has made c and 944 00:35:16,800 --> 00:35:21,520 derivatives like z plus plus 945 00:35:19,040 --> 00:35:23,520 are on everything as well and used for 946 00:35:21,520 --> 00:35:26,320 all kinds of things even on non-unix 947 00:35:23,520 --> 00:35:28,320 systems lots and lots and lots of 948 00:35:26,320 --> 00:35:31,280 languages and tools that are used by all 949 00:35:28,320 --> 00:35:33,839 kinds of people and recognition in a 950 00:35:31,280 --> 00:35:35,440 variety of ways both public you know gee 951 00:35:33,839 --> 00:35:38,320 what is this unix thing people had 952 00:35:35,440 --> 00:35:40,800 started to hear about it um and 953 00:35:38,320 --> 00:35:42,640 recognition in serious recognition for 954 00:35:40,800 --> 00:35:45,359 the people who had done the work for 955 00:35:42,640 --> 00:35:47,119 example a turing award for ken thompson 956 00:35:45,359 --> 00:35:50,160 and dennis ritchie 957 00:35:47,119 --> 00:35:52,320 in 1983 and somewhat later an 958 00:35:50,160 --> 00:35:55,040 interesting further one 959 00:35:52,320 --> 00:35:56,880 natural national medal of technology 960 00:35:55,040 --> 00:35:59,040 with 961 00:35:56,880 --> 00:36:01,920 ken dennis this i think it's the only 962 00:35:59,040 --> 00:36:05,280 time i've ever seen ken wearing a tie um 963 00:36:01,920 --> 00:36:07,359 with bill clinton um so interesting uh 964 00:36:05,280 --> 00:36:10,079 picture so that's kind of recognition 965 00:36:07,359 --> 00:36:12,240 there was also the appearance of unix in 966 00:36:10,079 --> 00:36:13,920 what we would call popular culture i'm 967 00:36:12,240 --> 00:36:15,839 wondering i don't know how old because i 968 00:36:13,920 --> 00:36:17,359 can't see any of you i have no sense of 969 00:36:15,839 --> 00:36:19,359 the age of the audience or your 970 00:36:17,359 --> 00:36:21,200 entertainment tastes or anything but i 971 00:36:19,359 --> 00:36:23,680 suspect there's at least a few people 972 00:36:21,200 --> 00:36:26,160 who remember jurassic park which 973 00:36:23,680 --> 00:36:28,960 appeared in 1990 974 00:36:26,160 --> 00:36:30,560 okay that jurassic park was a you know a 975 00:36:28,960 --> 00:36:32,320 pretty decent picture i think i 976 00:36:30,560 --> 00:36:34,800 certainly enjoyed it but the thing that 977 00:36:32,320 --> 00:36:36,800 made it special for an awful lot of 978 00:36:34,800 --> 00:36:40,680 geeky people like me was this 979 00:36:36,800 --> 00:36:40,680 observation of 980 00:36:41,920 --> 00:36:45,920 it's hard to you know it really is fun 981 00:36:43,599 --> 00:36:48,560 to see that um 982 00:36:45,920 --> 00:36:50,160 lex the young woman who is 12 notionally 983 00:36:48,560 --> 00:36:52,320 in the movie 984 00:36:50,160 --> 00:36:56,000 uh understands that 985 00:36:52,320 --> 00:36:57,280 she knows how to use a unix system and 986 00:36:56,000 --> 00:36:59,599 turn off 987 00:36:57,280 --> 00:37:01,359 the or turn on the safety systems that 988 00:36:59,599 --> 00:37:03,440 capture or 989 00:37:01,359 --> 00:37:05,440 lock the velociraptors back in their 990 00:37:03,440 --> 00:37:07,599 cages or something like that and so this 991 00:37:05,440 --> 00:37:09,839 is the high-pointed movie for anybody 992 00:37:07,599 --> 00:37:11,359 who is a geek the other thing is a 993 00:37:09,839 --> 00:37:13,200 little hard to see but this is of course 994 00:37:11,359 --> 00:37:16,160 being done on a silicon graphics 995 00:37:13,200 --> 00:37:18,160 workstation a standard nice unix uh 996 00:37:16,160 --> 00:37:20,480 system uh and in fact a lot of the 997 00:37:18,160 --> 00:37:22,640 graphics where for the movie we're done 998 00:37:20,480 --> 00:37:25,119 on sgi systems 999 00:37:22,640 --> 00:37:26,480 okay so this is the peak in some sense 1000 00:37:25,119 --> 00:37:29,040 but i think that there were sort of a 1001 00:37:26,480 --> 00:37:31,040 lot of external forces that started to 1002 00:37:29,040 --> 00:37:34,480 take a toll in 1003 00:37:31,040 --> 00:37:37,599 the late 80s and early 90s att and 1004 00:37:34,480 --> 00:37:39,359 berkeley got into a legal contest with 1005 00:37:37,599 --> 00:37:41,359 each accusing the other of doing bad 1006 00:37:39,359 --> 00:37:42,880 things in particular at t saying that 1007 00:37:41,359 --> 00:37:44,320 berkeley was stealing intellectual 1008 00:37:42,880 --> 00:37:46,000 property 1009 00:37:44,320 --> 00:37:48,240 and that lawsuit was completely 1010 00:37:46,000 --> 00:37:50,400 pointless and also what it did was to 1011 00:37:48,240 --> 00:37:52,400 kind of fragment the world into people 1012 00:37:50,400 --> 00:37:53,760 who were following the atm t side of it 1013 00:37:52,400 --> 00:37:54,880 and people were following the berkeley 1014 00:37:53,760 --> 00:37:56,800 side of it 1015 00:37:54,880 --> 00:37:58,480 and you've got divergent versions and it 1016 00:37:56,800 --> 00:38:01,119 took a long time for any kind of 1017 00:37:58,480 --> 00:38:02,640 standardization to bring that back 1018 00:38:01,119 --> 00:38:04,800 there were contributions from all over 1019 00:38:02,640 --> 00:38:07,520 the place some of them were not as good 1020 00:38:04,800 --> 00:38:09,680 as others i guess um hardware got 1021 00:38:07,520 --> 00:38:11,680 cheaper which is good but it meant there 1022 00:38:09,680 --> 00:38:13,359 were fewer constraints that which meant 1023 00:38:11,680 --> 00:38:15,599 i think that people didn't think as hard 1024 00:38:13,359 --> 00:38:17,119 about what they were doing sometimes 1025 00:38:15,599 --> 00:38:19,280 and of course a big effect was the 1026 00:38:17,119 --> 00:38:22,880 growth of the pc 1027 00:38:19,280 --> 00:38:25,599 and microsoft and the shift of 1028 00:38:22,880 --> 00:38:27,520 talented people and good ideas 1029 00:38:25,599 --> 00:38:30,000 to a different world a world which is 1030 00:38:27,520 --> 00:38:32,400 much less focused on command line stuff 1031 00:38:30,000 --> 00:38:34,480 and much more focused on interaction 1032 00:38:32,400 --> 00:38:36,720 user interfaces graphical stuff and 1033 00:38:34,480 --> 00:38:38,480 applications over a wide range of things 1034 00:38:36,720 --> 00:38:39,760 that are not system programming kind of 1035 00:38:38,480 --> 00:38:40,640 things 1036 00:38:39,760 --> 00:38:42,800 so 1037 00:38:40,640 --> 00:38:44,480 so that was kind of a 1038 00:38:42,800 --> 00:38:46,640 divergence or whatever but then 1039 00:38:44,480 --> 00:38:48,400 something interesting happened 1040 00:38:46,640 --> 00:38:50,240 and it happened in fact you can date it 1041 00:38:48,400 --> 00:38:53,599 almost exactly 1042 00:38:50,240 --> 00:38:53,599 august nineteen ninety one 1043 00:38:54,320 --> 00:39:00,240 linus torvalds minus toy ralph's um 1044 00:38:58,240 --> 00:39:02,800 announced the availability of an 1045 00:39:00,240 --> 00:39:05,200 experimental system that he was 1046 00:39:02,800 --> 00:39:06,880 building it was sort of you know aimed 1047 00:39:05,200 --> 00:39:08,880 at people who are using minix which is 1048 00:39:06,880 --> 00:39:09,920 andy tannenbaum's educational version of 1049 00:39:08,880 --> 00:39:12,160 unix 1050 00:39:09,920 --> 00:39:13,119 and he's doing it for fun it's not a big 1051 00:39:12,160 --> 00:39:14,720 deal 1052 00:39:13,119 --> 00:39:16,240 but he's done a lot of stuff and if 1053 00:39:14,720 --> 00:39:18,640 anybody's interested 1054 00:39:16,240 --> 00:39:21,520 you know contact me i'll do it and he 1055 00:39:18,640 --> 00:39:22,560 says down there at the bottom it's not 1056 00:39:21,520 --> 00:39:24,000 portable 1057 00:39:22,560 --> 00:39:25,680 and it'll probably never support 1058 00:39:24,000 --> 00:39:28,400 anything other than certain kind of hard 1059 00:39:25,680 --> 00:39:31,119 disks and so on so yeah and so this is 1060 00:39:28,400 --> 00:39:34,079 interesting because 1061 00:39:31,119 --> 00:39:35,760 lattice is just as wrong in his market 1062 00:39:34,079 --> 00:39:38,480 forecast 1063 00:39:35,760 --> 00:39:39,920 as the original unix folks were in 1064 00:39:38,480 --> 00:39:41,200 theirs 1065 00:39:39,920 --> 00:39:43,839 so 1066 00:39:41,200 --> 00:39:46,640 at that point the rest is history okay 1067 00:39:43,839 --> 00:39:48,960 so i cobbled this together from some 1068 00:39:46,640 --> 00:39:50,960 thing that purports now it's a unix fan 1069 00:39:48,960 --> 00:39:52,480 club kind of thing but it purports to 1070 00:39:50,960 --> 00:39:56,079 report active and it does report 1071 00:39:52,480 --> 00:39:58,880 accurately that all of the top 500 super 1072 00:39:56,079 --> 00:40:01,760 computers run on linux and most of the 1073 00:39:58,880 --> 00:40:04,400 big websites and servers and so on are 1074 00:40:01,760 --> 00:40:05,839 all really using unix and of course for 1075 00:40:04,400 --> 00:40:07,359 linux rather and of course we're all 1076 00:40:05,839 --> 00:40:12,000 doing the same thing 1077 00:40:07,359 --> 00:40:14,400 for conferences like this one so 1078 00:40:12,000 --> 00:40:16,640 there's a technical legacy that goes 1079 00:40:14,400 --> 00:40:16,640 with 1080 00:40:16,880 --> 00:40:21,119 unix 1081 00:40:18,480 --> 00:40:23,440 i think the first three arguably come 1082 00:40:21,119 --> 00:40:25,839 pretty directly from multics it's not 1083 00:40:23,440 --> 00:40:28,720 like unix spraying out of nothing multix 1084 00:40:25,839 --> 00:40:31,359 had an enormous number of good ideas 1085 00:40:28,720 --> 00:40:33,040 and showed the feasibility of some of 1086 00:40:31,359 --> 00:40:35,359 those quite well 1087 00:40:33,040 --> 00:40:38,400 and those were simply adapted and 1088 00:40:35,359 --> 00:40:40,000 streamlined in some ways and used in 1089 00:40:38,400 --> 00:40:42,240 unix as well 1090 00:40:40,000 --> 00:40:45,760 i think pipes are unique to unix and 1091 00:40:42,240 --> 00:40:47,359 then that the pervasive use of tools and 1092 00:40:45,760 --> 00:40:49,359 regular expressions and so all these 1093 00:40:47,359 --> 00:40:52,000 things are at this point very 1094 00:40:49,359 --> 00:40:53,520 characteristic of unix and the other 1095 00:40:52,000 --> 00:40:55,200 thing that went with it 1096 00:40:53,520 --> 00:40:57,680 which i hinted that when we were talking 1097 00:40:55,200 --> 00:40:59,920 about tools a bit it's a philosophy how 1098 00:40:57,680 --> 00:41:02,240 to create software how to try and 1099 00:40:59,920 --> 00:41:05,200 produce software by using 1100 00:41:02,240 --> 00:41:06,960 a relatively small number of 1101 00:41:05,200 --> 00:41:09,040 programs that do 1102 00:41:06,960 --> 00:41:12,400 one thing well and then you try to make 1103 00:41:09,040 --> 00:41:13,520 them work together with each other 1104 00:41:12,400 --> 00:41:15,040 okay 1105 00:41:13,520 --> 00:41:16,720 so i think you could say 1106 00:41:15,040 --> 00:41:19,520 that the essence of unix is at this 1107 00:41:16,720 --> 00:41:21,599 point about 50 years old 1108 00:41:19,520 --> 00:41:23,599 and this slightly snarky comment from 1109 00:41:21,599 --> 00:41:26,160 doug about unix being an improvement on 1110 00:41:23,599 --> 00:41:28,880 its successors 1111 00:41:26,160 --> 00:41:30,880 but i think arguably there's a grain of 1112 00:41:28,880 --> 00:41:32,560 truth in that an awful lot of unix was 1113 00:41:30,880 --> 00:41:35,599 actually right there in place in the 1114 00:41:32,560 --> 00:41:38,079 1975 sixth edition the one that john 1115 00:41:35,599 --> 00:41:39,280 lyons documented so well 1116 00:41:38,079 --> 00:41:41,680 and 1117 00:41:39,280 --> 00:41:44,160 are there great new insights or ideas 1118 00:41:41,680 --> 00:41:46,160 since i'm not sure certainly 1119 00:41:44,160 --> 00:41:48,640 uh there have been changes the most 1120 00:41:46,160 --> 00:41:50,880 obvious things since the seventh edition 1121 00:41:48,640 --> 00:41:54,400 are things like networking which of 1122 00:41:50,880 --> 00:41:56,400 course that's what we're using right now 1123 00:41:54,400 --> 00:41:58,400 multi-processors process 1124 00:41:56,400 --> 00:42:01,040 increasingly have more and more and more 1125 00:41:58,400 --> 00:42:02,560 cores that are working on things in 1126 00:42:01,040 --> 00:42:04,240 parallel and that's a very different 1127 00:42:02,560 --> 00:42:05,359 environment than the original unix 1128 00:42:04,240 --> 00:42:07,520 machines 1129 00:42:05,359 --> 00:42:09,040 graphical user interfaces 1130 00:42:07,520 --> 00:42:10,800 more and more but not as stable as they 1131 00:42:09,040 --> 00:42:11,920 might be 1132 00:42:10,800 --> 00:42:14,160 and of course 1133 00:42:11,920 --> 00:42:16,160 the realization that lots and lots and 1134 00:42:14,160 --> 00:42:19,040 lots of parts of the world do not use 1135 00:42:16,160 --> 00:42:22,240 the united states version of characters 1136 00:42:19,040 --> 00:42:24,480 that ascii is not sufficient so lots of 1137 00:42:22,240 --> 00:42:26,960 things and then finally scale of that 1138 00:42:24,480 --> 00:42:28,720 most unix systems are 1139 00:42:26,960 --> 00:42:30,720 dealing with very very very large 1140 00:42:28,720 --> 00:42:31,920 environments at this point far beyond 1141 00:42:30,720 --> 00:42:33,920 anything that was thought of in the 1142 00:42:31,920 --> 00:42:35,760 early days 1143 00:42:33,920 --> 00:42:37,599 so how did this all come about i think 1144 00:42:35,760 --> 00:42:40,000 arguably it wasn't 1145 00:42:37,599 --> 00:42:41,680 not arguably it was not planned um it 1146 00:42:40,000 --> 00:42:43,760 was an accidental combination of a whole 1147 00:42:41,680 --> 00:42:45,520 bunch of factors 1148 00:42:43,760 --> 00:42:47,599 first and this is really the critical 1149 00:42:45,520 --> 00:42:49,520 thing two exceptionally creative people 1150 00:42:47,599 --> 00:42:51,280 ken thompson and dennis ritchie with 1151 00:42:49,520 --> 00:42:53,839 exceptionally good taste i mean their 1152 00:42:51,280 --> 00:42:56,480 taste for minimal mechanisms and finding 1153 00:42:53,839 --> 00:42:59,200 the generalities the cleanliness of what 1154 00:42:56,480 --> 00:43:00,960 they're doing is very very uh 1155 00:42:59,200 --> 00:43:03,040 perhaps unique 1156 00:43:00,960 --> 00:43:04,960 and certainly a good supporting cast in 1157 00:43:03,040 --> 00:43:07,280 a variety of ways 1158 00:43:04,960 --> 00:43:10,079 management at bell labs was 1159 00:43:07,280 --> 00:43:13,760 technically talented and 1160 00:43:10,079 --> 00:43:15,839 typically very very benign it was not 1161 00:43:13,760 --> 00:43:17,680 here's what you have to do and every 1162 00:43:15,839 --> 00:43:19,440 quarter tell us what you've done it was 1163 00:43:17,680 --> 00:43:20,800 more like oh gee you're doing that that 1164 00:43:19,440 --> 00:43:23,520 sounds really interesting why don't you 1165 00:43:20,800 --> 00:43:26,480 keep doing it as long as it looks good 1166 00:43:23,520 --> 00:43:28,560 and doug mcelroy perhaps an unsung hero 1167 00:43:26,480 --> 00:43:29,359 of the unix world 1168 00:43:28,560 --> 00:43:31,599 was 1169 00:43:29,359 --> 00:43:34,960 the manager in charge of an awful lot of 1170 00:43:31,599 --> 00:43:36,720 this stuff and he led by example and was 1171 00:43:34,960 --> 00:43:37,520 just an amazing contributor to the whole 1172 00:43:36,720 --> 00:43:39,359 thing 1173 00:43:37,520 --> 00:43:41,680 now of course a lot of this 1174 00:43:39,359 --> 00:43:44,400 dependent on the fact that hardware 1175 00:43:41,680 --> 00:43:46,640 was comparatively cheap that the first 1176 00:43:44,400 --> 00:43:48,560 unix system was able to run on a machine 1177 00:43:46,640 --> 00:43:50,800 that cost fifty thousand instead of five 1178 00:43:48,560 --> 00:43:52,720 hundred thousand and then 1179 00:43:50,800 --> 00:43:55,280 smaller workstations came down that were 1180 00:43:52,720 --> 00:43:57,760 even cheaper than that and then pcs 1181 00:43:55,280 --> 00:44:00,800 so the 1182 00:43:57,760 --> 00:44:02,160 technology improvements fueled an awful 1183 00:44:00,800 --> 00:44:03,359 lot of this 1184 00:44:02,160 --> 00:44:05,440 and then finally 1185 00:44:03,359 --> 00:44:07,440 the bell labs environment was 1186 00:44:05,440 --> 00:44:08,960 particularly congenial for this kind of 1187 00:44:07,440 --> 00:44:10,720 thing and that's something which i don't 1188 00:44:08,960 --> 00:44:12,720 see as much of 1189 00:44:10,720 --> 00:44:15,040 today perhaps but funding was stable 1190 00:44:12,720 --> 00:44:18,560 because it was basically 1191 00:44:15,040 --> 00:44:20,720 run as a bell labs was run as a tax on 1192 00:44:18,560 --> 00:44:23,440 the 1193 00:44:20,720 --> 00:44:24,880 telephone service in the united states 1194 00:44:23,440 --> 00:44:27,440 so stable funding in a stable 1195 00:44:24,880 --> 00:44:29,680 organization and a very long-term view 1196 00:44:27,440 --> 00:44:31,520 of what was useful 1197 00:44:29,680 --> 00:44:33,680 and the environment itself was 1198 00:44:31,520 --> 00:44:36,480 incredibly cooperative collegial and 1199 00:44:33,680 --> 00:44:38,720 just a lot of fun 1200 00:44:36,480 --> 00:44:40,319 so could we do this again sometime i 1201 00:44:38,720 --> 00:44:42,800 don't know um 1202 00:44:40,319 --> 00:44:45,680 i would say well first obviously they're 1203 00:44:42,800 --> 00:44:47,359 always good people uh 1204 00:44:45,680 --> 00:44:48,880 no particular part of the world or 1205 00:44:47,359 --> 00:44:50,960 organization or anything else has a 1206 00:44:48,880 --> 00:44:52,000 monopoly on really good people 1207 00:44:50,960 --> 00:44:54,319 um 1208 00:44:52,000 --> 00:44:55,920 dilbert cartoons not withstanding there 1209 00:44:54,319 --> 00:44:58,400 are good managers 1210 00:44:55,920 --> 00:45:00,880 and hardware continues to be 1211 00:44:58,400 --> 00:45:03,359 dirt cheap and lots and lots of great 1212 00:45:00,880 --> 00:45:06,720 software the open source software 1213 00:45:03,359 --> 00:45:09,119 that we see so much of like linux is 1214 00:45:06,720 --> 00:45:11,119 free and so all of those things are very 1215 00:45:09,119 --> 00:45:14,720 very positive 1216 00:45:11,119 --> 00:45:16,560 on flip side there are not as many of 1217 00:45:14,720 --> 00:45:17,440 these unfettered environments where 1218 00:45:16,560 --> 00:45:19,520 people 1219 00:45:17,440 --> 00:45:22,079 are simply set loose 1220 00:45:19,520 --> 00:45:23,200 and told to go and do something that 1221 00:45:22,079 --> 00:45:25,200 they want to do that might be 1222 00:45:23,200 --> 00:45:28,400 interesting or useful 1223 00:45:25,200 --> 00:45:30,880 it's hard to do that in industry 1224 00:45:28,400 --> 00:45:33,119 because things tend to be short term and 1225 00:45:30,880 --> 00:45:34,960 it's hard to do that in universities 1226 00:45:33,119 --> 00:45:36,960 because money 1227 00:45:34,960 --> 00:45:38,880 but in principle it could happen again 1228 00:45:36,960 --> 00:45:41,359 for something and if you think about the 1229 00:45:38,880 --> 00:45:43,280 number of things that we use in our 1230 00:45:41,359 --> 00:45:45,839 field every day 1231 00:45:43,280 --> 00:45:48,160 that began with one or two people and a 1232 00:45:45,839 --> 00:45:50,160 good idea linux is the obvious thing 1233 00:45:48,160 --> 00:45:51,920 that's one guy okay and certainly 1234 00:45:50,160 --> 00:45:53,839 there's cast of many many thousands at 1235 00:45:51,920 --> 00:45:56,880 this point but 1236 00:45:53,839 --> 00:46:00,000 that was one guy with a good idea um 1237 00:45:56,880 --> 00:46:03,040 languages that we use c plus plus java 1238 00:46:00,000 --> 00:46:04,640 perl python php ruby javascript go you 1239 00:46:03,040 --> 00:46:06,319 know it's just the list goes on and all 1240 00:46:04,640 --> 00:46:08,160 of those are the work of just one or two 1241 00:46:06,319 --> 00:46:09,440 people to get off the ground 1242 00:46:08,160 --> 00:46:11,280 and then of course the big companies 1243 00:46:09,440 --> 00:46:13,359 that we deal with as well 1244 00:46:11,280 --> 00:46:15,520 like microsoft and apple and google and 1245 00:46:13,359 --> 00:46:17,119 amazon and facebook and on and on and on 1246 00:46:15,520 --> 00:46:19,359 they're also 1247 00:46:17,119 --> 00:46:23,040 one or two or three good people with a 1248 00:46:19,359 --> 00:46:26,319 good idea so stuff can happen 1249 00:46:23,040 --> 00:46:29,440 so i wanted to close with an observation 1250 00:46:26,319 --> 00:46:32,880 from dennis ritchie 1251 00:46:29,440 --> 00:46:34,319 so dennis died about 10 years ago 1252 00:46:32,880 --> 00:46:35,200 last october 1253 00:46:34,319 --> 00:46:37,680 um 1254 00:46:35,200 --> 00:46:39,599 but what he said here was fundamentally 1255 00:46:37,680 --> 00:46:41,839 that unix was meant to provide a 1256 00:46:39,599 --> 00:46:43,920 community it was sort of a warm and 1257 00:46:41,839 --> 00:46:45,280 welcoming place 1258 00:46:43,920 --> 00:46:49,599 to develop 1259 00:46:45,280 --> 00:46:49,599 software so it brought people together 1260 00:46:50,000 --> 00:46:54,160 and certainly in the early days 1261 00:46:52,560 --> 00:46:56,400 people enjoyed their work they enjoyed 1262 00:46:54,160 --> 00:46:58,160 the people they worked with 1263 00:46:56,400 --> 00:47:00,560 and so it was 1264 00:46:58,160 --> 00:47:02,720 a very positive cycle of productive 1265 00:47:00,560 --> 00:47:04,400 environment for all the people and so i 1266 00:47:02,720 --> 00:47:06,240 think what we want to do today is that 1267 00:47:04,400 --> 00:47:08,240 same kind of thing where we have a sense 1268 00:47:06,240 --> 00:47:10,400 of community that we're working together 1269 00:47:08,240 --> 00:47:12,079 to try and do things that will in some 1270 00:47:10,400 --> 00:47:13,920 way make the world better this 1271 00:47:12,079 --> 00:47:17,599 conference is a great idea with lots and 1272 00:47:13,920 --> 00:47:19,599 lots of people coming together virtually 1273 00:47:17,599 --> 00:47:22,000 to learn from each other and hopefully 1274 00:47:19,599 --> 00:47:24,640 to continue to improve what's going on 1275 00:47:22,000 --> 00:47:27,280 so it's been great fun for me to be a 1276 00:47:24,640 --> 00:47:29,200 part of this um and i hope it has been 1277 00:47:27,280 --> 00:47:31,440 fun for you too and i hope the rest of 1278 00:47:29,200 --> 00:47:33,920 the conference goes extremely well for 1279 00:47:31,440 --> 00:47:36,240 all of you so with that thank you very 1280 00:47:33,920 --> 00:47:36,240 much 1281 00:47:37,200 --> 00:47:42,400 thanks ryan that was really interesting 1282 00:47:39,520 --> 00:47:44,400 um we should now have hopefully uh we 1283 00:47:42,400 --> 00:47:45,599 have our live illustrator feed we could 1284 00:47:44,400 --> 00:47:46,960 probably pop in here and you should be 1285 00:47:45,599 --> 00:47:48,160 able to see it on your second screen 1286 00:47:46,960 --> 00:47:50,720 hopefully 1287 00:47:48,160 --> 00:47:53,680 there it is 1288 00:47:50,720 --> 00:47:55,359 so that's you can have a look at that um 1289 00:47:53,680 --> 00:47:59,119 i'll just run out we've got a few more 1290 00:47:55,359 --> 00:48:01,520 things to finish the session with um 1291 00:47:59,119 --> 00:48:03,119 feel free to um what are we doing oh 1292 00:48:01,520 --> 00:48:04,640 sorry we're at 1293 00:48:03,119 --> 00:48:07,520 we're at the end of the beginning this 1294 00:48:04,640 --> 00:48:09,280 is our first break feel free to 1295 00:48:07,520 --> 00:48:10,480 use the chat rooms or get away for a 1296 00:48:09,280 --> 00:48:13,040 refresher 1297 00:48:10,480 --> 00:48:15,280 we'll return at 10 40 a.m here for the 1298 00:48:13,040 --> 00:48:17,920 start of our four fab mini conference 1299 00:48:15,280 --> 00:48:20,160 and don't forget to be back here at 5 45 1300 00:48:17,920 --> 00:48:22,960 pm this afternoon for the lock note 1301 00:48:20,160 --> 00:48:24,640 presentation from kathy reed 1302 00:48:22,960 --> 00:48:26,240 thank you again very much brian that was 1303 00:48:24,640 --> 00:48:28,240 really fascinating i like your 1304 00:48:26,240 --> 00:48:30,480 definition of what a practical problem 1305 00:48:28,240 --> 00:48:31,839 is in a research environment when most 1306 00:48:30,480 --> 00:48:34,240 people you know they hear that word they 1307 00:48:31,839 --> 00:48:36,960 think useful but um you know reading 1308 00:48:34,240 --> 00:48:40,000 words on a calculator not so much 1309 00:48:36,960 --> 00:48:43,400 anyway thanks very much and we'll go to 1310 00:48:40,000 --> 00:48:43,400 our break now