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

