WEBVTT

1
00:00:05.240 --> 00:00:09.519
<v Speaker 1>Hey, welcome back to Programmer Story Hour with Uncle Bob

2
00:00:09.640 --> 00:00:13.320
<v Speaker 1>or JavaScript Jabber as we call it every week.

3
00:00:14.599 --> 00:00:17.000
<v Speaker 2>This week on our panel, we have a j O'Neal.

4
00:00:17.960 --> 00:00:19.839
<v Speaker 3>Yo yah yoh, come that you live.

5
00:00:19.839 --> 00:00:26.000
<v Speaker 4>From the now with plywood paneling shed or like I said,

6
00:00:26.000 --> 00:00:28.039
<v Speaker 4>a drywall. I got someplywood from a friend who is

7
00:00:28.079 --> 00:00:29.960
<v Speaker 4>dumping it nice.

8
00:00:30.519 --> 00:00:32.000
<v Speaker 2>We also have Dan Shapere.

9
00:00:32.399 --> 00:00:33.600
<v Speaker 3>Hello from Tel Aviv.

10
00:00:34.600 --> 00:00:37.280
<v Speaker 5>I'm Charles max Wood from Top End Devs. And this

11
00:00:37.359 --> 00:00:39.200
<v Speaker 5>week we have a special guest. As I said before,

12
00:00:39.200 --> 00:00:41.960
<v Speaker 5>we got Uncle Bob here. So Bob, welcome back.

13
00:00:42.439 --> 00:00:44.439
<v Speaker 6>Thank you so much. Good to be back.

14
00:00:45.960 --> 00:00:48.439
<v Speaker 5>So I was going to ask you what's new, but

15
00:00:49.719 --> 00:00:51.960
<v Speaker 5>I have to say Pearson reached out to me about

16
00:00:52.479 --> 00:00:55.880
<v Speaker 5>reviewing Clean Code, a new edition of Clean Code, So

17
00:00:55.920 --> 00:00:57.359
<v Speaker 5>it looks like that's going to be a thing.

18
00:00:57.920 --> 00:01:00.640
<v Speaker 6>Yeah. I'm in the midst of the final reviews of

19
00:01:00.679 --> 00:01:03.479
<v Speaker 6>that now, so it should be going into production within

20
00:01:03.520 --> 00:01:07.000
<v Speaker 6>another month. And then you know that that process takes

21
00:01:07.000 --> 00:01:11.000
<v Speaker 6>about three or four months. So even cleaner Code end

22
00:01:11.040 --> 00:01:12.040
<v Speaker 6>of the year, what's that?

23
00:01:12.599 --> 00:01:15.799
<v Speaker 3>Even cleaner Code, we can only pray.

24
00:01:16.079 --> 00:01:20.879
<v Speaker 6>Clean Code second Edition. I tried to play with other titles,

25
00:01:20.879 --> 00:01:26.120
<v Speaker 6>but the publisher was very adamant be Clean Code second edition.

26
00:01:26.359 --> 00:01:28.519
<v Speaker 2>I think it's easier to sell if you keep the title.

27
00:01:28.719 --> 00:01:32.359
<v Speaker 3>It's you know, yeah, we're not supposed to. That's that's

28
00:01:32.359 --> 00:01:35.040
<v Speaker 3>not the topic of our conversation. But I've got to ask.

29
00:01:35.159 --> 00:01:40.280
<v Speaker 3>I mean, the Clean Code principles seem pretty kind of universal, almost,

30
00:01:40.519 --> 00:01:43.040
<v Speaker 3>so why do we need a second edition?

31
00:01:45.040 --> 00:01:51.599
<v Speaker 2>Oh heavens, I did say, story our go for it, Bob.

32
00:01:53.680 --> 00:01:56.000
<v Speaker 6>For the longest time, I thought, you know, I'm done.

33
00:01:56.120 --> 00:01:58.519
<v Speaker 6>I don't. I've never done a second edition of anything.

34
00:01:59.159 --> 00:02:01.480
<v Speaker 6>Usually when I write something, I think, Okay, I said it,

35
00:02:01.519 --> 00:02:04.200
<v Speaker 6>I don't need to say it again. And for the

36
00:02:04.239 --> 00:02:06.519
<v Speaker 6>longest time I thought that would be the case with

37
00:02:06.640 --> 00:02:12.240
<v Speaker 6>Clean Code. But the Clean Code became so controversial. There

38
00:02:12.240 --> 00:02:18.800
<v Speaker 6>were so many misinterpretations and misrepresentations and you know, errors

39
00:02:18.800 --> 00:02:21.280
<v Speaker 6>on my part where I said things that could be

40
00:02:21.639 --> 00:02:23.919
<v Speaker 6>taken in the wrong way that I thought, you know,

41
00:02:25.319 --> 00:02:29.120
<v Speaker 6>maybe it's time to dust that thing off and see

42
00:02:29.159 --> 00:02:32.360
<v Speaker 6>if there isn't something I would say differently. And then

43
00:02:32.439 --> 00:02:35.080
<v Speaker 6>as I was doing that, I thought, you know, there's

44
00:02:35.159 --> 00:02:37.759
<v Speaker 6>all this new stuff, there's all this AI stuff. There's

45
00:02:37.800 --> 00:02:41.280
<v Speaker 6>always you know, co Pilot and rock and all that stuff.

46
00:02:41.360 --> 00:02:45.599
<v Speaker 6>How does that play in. And besides that, there's languages.

47
00:02:45.080 --> 00:02:48.840
<v Speaker 7>That I should probably explore, like go and and I thought, okay, fine,

48
00:02:48.919 --> 00:02:56.039
<v Speaker 7>let's let's do a top to bottom rewrite, incorporating some

49
00:02:56.240 --> 00:03:00.599
<v Speaker 7>of the original chapters with a lot of change and

50
00:03:00.759 --> 00:03:02.960
<v Speaker 7>just a whole new bunch of new chapters.

51
00:03:03.479 --> 00:03:07.599
<v Speaker 6>The overall message is, of course the same, but the

52
00:03:07.800 --> 00:03:10.560
<v Speaker 6>way I say it in the examples that I pose

53
00:03:10.719 --> 00:03:15.439
<v Speaker 6>and some of the nuances have shifted a rather significant amount,

54
00:03:15.520 --> 00:03:18.719
<v Speaker 6>so I'm happy with it. I also decided to add

55
00:03:18.759 --> 00:03:21.479
<v Speaker 6>a whole bunch of other stuff, like design principles and

56
00:03:21.520 --> 00:03:26.680
<v Speaker 6>design patterns. It's kind of like, Okay, everything I've learned

57
00:03:26.680 --> 00:03:29.439
<v Speaker 6>over the last ten years, let's kind of funnel it

58
00:03:29.439 --> 00:03:33.759
<v Speaker 6>into this book and see what happens. So that's why

59
00:03:33.919 --> 00:03:37.840
<v Speaker 6>there is a second edition. Not least of all of

60
00:03:37.840 --> 00:03:39.840
<v Speaker 6>that is that my publisher said, you know, you should

61
00:03:39.840 --> 00:03:43.719
<v Speaker 6>write a second edition. I thought, okay, probably a good idea.

62
00:03:45.400 --> 00:03:50.319
<v Speaker 3>You mentioned the fact that you cover new program additional

63
00:03:50.360 --> 00:03:56.759
<v Speaker 3>programming languages in the new edition. I'm curious in that context,

64
00:03:57.719 --> 00:04:01.719
<v Speaker 3>how to what extent does the choice of the programming

65
00:04:01.800 --> 00:04:08.360
<v Speaker 3>language impact the meaning, I guess or the consequence of

66
00:04:08.439 --> 00:04:12.919
<v Speaker 3>the code being clean, Like would you apply the same

67
00:04:12.960 --> 00:04:19.199
<v Speaker 3>principles in order to achieve clean code in different programming languages.

68
00:04:19.920 --> 00:04:23.319
<v Speaker 6>And that is one of the points of the second edition,

69
00:04:24.120 --> 00:04:27.879
<v Speaker 6>which is that the programming language doesn't matter much at all.

70
00:04:28.680 --> 00:04:30.759
<v Speaker 6>I'm going to show you an example in Python. I'm

71
00:04:30.759 --> 00:04:33.040
<v Speaker 6>going to show you an example in Ruby. I'll do

72
00:04:33.120 --> 00:04:37.759
<v Speaker 6>an enclosure. I'll do one in Java. An NC doesn't

73
00:04:37.759 --> 00:04:41.240
<v Speaker 6>seem to make an awful lot of difference. There are

74
00:04:41.560 --> 00:04:46.000
<v Speaker 6>little quibbles that you can make. Some languages want the

75
00:04:46.120 --> 00:04:48.879
<v Speaker 6>order of the functions inverted. You know, if you're working

76
00:04:48.920 --> 00:04:51.920
<v Speaker 6>in Python or if you're working in closure. They want

77
00:04:51.959 --> 00:04:55.800
<v Speaker 6>low level things stated before high level things I whereas

78
00:04:55.839 --> 00:04:57.560
<v Speaker 6>in Java you can turn it around in a way

79
00:04:57.600 --> 00:05:02.160
<v Speaker 6>that makes more sense. But o are all the message

80
00:05:02.199 --> 00:05:06.560
<v Speaker 6>of the book applies to all of those languages, and

81
00:05:06.560 --> 00:05:09.519
<v Speaker 6>and in the second edition I tried to demonstrate that

82
00:05:10.040 --> 00:05:12.720
<v Speaker 6>by just changing language from chapter to chapter to chapter.

83
00:05:13.959 --> 00:05:15.759
<v Speaker 2>Yeah, I remember, with the help of co.

84
00:05:15.759 --> 00:05:18.600
<v Speaker 6>Pilot, by the way, because I'm not a Python programmer,

85
00:05:18.879 --> 00:05:21.040
<v Speaker 6>so I fire up co pilot and I get a

86
00:05:21.079 --> 00:05:23.720
<v Speaker 6>lot of help. It was, it was It was pretty

87
00:05:23.759 --> 00:05:28.079
<v Speaker 6>interesting to watch these ais throw a code at me

88
00:05:28.199 --> 00:05:30.279
<v Speaker 6>that I could review and then think you know that's

89
00:05:30.519 --> 00:05:34.480
<v Speaker 6>maybe not so bad or in more cases like I

90
00:05:34.519 --> 00:05:35.519
<v Speaker 6>think I could do better.

91
00:05:37.279 --> 00:05:39.240
<v Speaker 2>Very cool. We're looking forward to that coming out.

92
00:05:40.439 --> 00:05:44.040
<v Speaker 4>One thing that I hear is like the number one

93
00:05:44.439 --> 00:05:49.759
<v Speaker 4>criticism that I hear, and I think this is not accurate,

94
00:05:50.160 --> 00:05:53.680
<v Speaker 4>but I want to know. People say, oh, or you

95
00:05:53.680 --> 00:05:56.040
<v Speaker 4>could do it Uncle Bob style and only have three

96
00:05:56.160 --> 00:06:01.160
<v Speaker 4>or four lines in a function. Is that is that true?

97
00:06:01.240 --> 00:06:04.720
<v Speaker 4>Or is that just like a misquote or a a

98
00:06:04.839 --> 00:06:07.600
<v Speaker 4>perversion of something you said? Like I know that a

99
00:06:07.639 --> 00:06:11.240
<v Speaker 4>lot of demo code examples to do apps whatever. Yeah,

100
00:06:11.399 --> 00:06:13.120
<v Speaker 4>like you end up you know, if you were going

101
00:06:13.160 --> 00:06:16.120
<v Speaker 4>to enterprise it, and yeah, then you're gonna end up

102
00:06:16.120 --> 00:06:17.519
<v Speaker 4>with a bunch of things that are three or four

103
00:06:17.560 --> 00:06:21.720
<v Speaker 4>lines long, don't do anything meaningful. But what what is

104
00:06:21.759 --> 00:06:27.240
<v Speaker 4>your actual advice on function size or grouping of logic?

105
00:06:28.319 --> 00:06:32.199
<v Speaker 6>Actual? My actual advice there is to keep it very small.

106
00:06:32.439 --> 00:06:36.079
<v Speaker 6>I like small functions, and you know how small, well,

107
00:06:36.600 --> 00:06:40.759
<v Speaker 6>three four or five, six, seven lines something in that range.

108
00:06:41.000 --> 00:06:42.959
<v Speaker 6>I don't like to see twenty lines. I don't like

109
00:06:43.040 --> 00:06:51.439
<v Speaker 6>to see thirty. The the controversy is, you know, two

110
00:06:51.480 --> 00:06:54.959
<v Speaker 6>to three lines. So bun Kebob says, everything's got to

111
00:06:55.000 --> 00:06:57.160
<v Speaker 6>be two to three or three to four or whatever

112
00:06:57.360 --> 00:07:02.040
<v Speaker 6>number they quote. And that's an example of people who

113
00:07:02.079 --> 00:07:03.160
<v Speaker 6>did not read the book.

114
00:07:05.480 --> 00:07:11.439
<v Speaker 3>In that context. Though some programming languages are more condensed

115
00:07:11.480 --> 00:07:16.480
<v Speaker 3>than others. Yes, you know, I know that you like closure.

116
00:07:16.680 --> 00:07:22.240
<v Speaker 3>Closure is pretty dense. So three lines of Closure could

117
00:07:22.319 --> 00:07:24.920
<v Speaker 3>probably achieve a lot more than three lines of Java.

118
00:07:26.160 --> 00:07:28.560
<v Speaker 3>Three lines of Java. Two of those lines are open,

119
00:07:28.800 --> 00:07:32.759
<v Speaker 3>open curlies, and close curlies, so you're basically left with

120
00:07:32.839 --> 00:07:34.839
<v Speaker 3>one line that is Java.

121
00:07:35.319 --> 00:07:39.000
<v Speaker 6>Certainly true, It is certainly true that that Closure is

122
00:07:39.079 --> 00:07:42.199
<v Speaker 6>much denser than Java, and yet it is much harder

123
00:07:42.240 --> 00:07:46.519
<v Speaker 6>in closure to make small functions. And that's just because

124
00:07:46.519 --> 00:07:49.959
<v Speaker 6>of the functional style and the fact that you need

125
00:07:50.000 --> 00:07:53.560
<v Speaker 6>to set a bunch of variables up front and then

126
00:07:53.920 --> 00:07:56.399
<v Speaker 6>and then operate them at a lower place, and it's

127
00:07:56.560 --> 00:08:02.399
<v Speaker 6>very hard to separate those things out as independent functions. So,

128
00:08:02.959 --> 00:08:05.199
<v Speaker 6>just just a quirk of the language, you end up

129
00:08:05.199 --> 00:08:09.199
<v Speaker 6>with larger functions inclosure, even though those even though the

130
00:08:09.279 --> 00:08:10.160
<v Speaker 6>language is denser.

131
00:08:12.759 --> 00:08:19.720
<v Speaker 4>So do you have like a general rule of how

132
00:08:19.759 --> 00:08:23.680
<v Speaker 4>to determine what belongs together? Because I think line limit

133
00:08:23.839 --> 00:08:25.439
<v Speaker 4>to me, to me personally, I don't think line limit

134
00:08:25.480 --> 00:08:28.040
<v Speaker 4>makes a lot of sense because the line limit is arbitrary.

135
00:08:28.040 --> 00:08:30.720
<v Speaker 4>Like for me, I don't like to use comments. I

136
00:08:30.800 --> 00:08:32.519
<v Speaker 4>put everything in a variable. So if I'm going to

137
00:08:32.600 --> 00:08:35.879
<v Speaker 4>do a mathematical operation where I'm gonna, you know, add

138
00:08:36.039 --> 00:08:38.879
<v Speaker 4>days of the week and multiply by hours or whatever,

139
00:08:38.960 --> 00:08:41.399
<v Speaker 4>I'll actually write that out line by line, so that

140
00:08:41.600 --> 00:08:44.879
<v Speaker 4>instead of commenting this is taking this to make that

141
00:08:45.039 --> 00:08:50.399
<v Speaker 4>because this number is special, I'll just var special number

142
00:08:50.480 --> 00:08:54.799
<v Speaker 4>equals you know, and and that way that the variables

143
00:08:54.799 --> 00:08:57.519
<v Speaker 4>declare themselves. So a function that somebody else would have

144
00:08:57.559 --> 00:09:02.960
<v Speaker 4>that would be or a operation like I break statements

145
00:09:03.000 --> 00:09:05.919
<v Speaker 4>down right, so don't I don't necessarily find line numbers

146
00:09:05.919 --> 00:09:08.360
<v Speaker 4>in of themselves to be meaningful. Other than that, you've

147
00:09:08.360 --> 00:09:10.159
<v Speaker 4>got to be able to see it on a page,

148
00:09:10.679 --> 00:09:13.440
<v Speaker 4>Like when you're looking at a block of code, generally

149
00:09:13.440 --> 00:09:15.320
<v Speaker 4>you should be able to see the whole block of code.

150
00:09:15.320 --> 00:09:18.240
<v Speaker 4>If it extends beyond what you can easily see, or

151
00:09:18.240 --> 00:09:20.320
<v Speaker 4>you have to make your font size really small, then

152
00:09:20.600 --> 00:09:22.639
<v Speaker 4>you know it's too much context in the brain.

153
00:09:23.320 --> 00:09:29.120
<v Speaker 3>I've got these I don't make my font size too small.

154
00:09:29.399 --> 00:09:29.679
<v Speaker 6>Yeah.

155
00:09:29.759 --> 00:09:33.759
<v Speaker 4>But on the other hand, and I think that there's

156
00:09:33.799 --> 00:09:35.960
<v Speaker 4>the general case versus the exceptional case and this might

157
00:09:35.960 --> 00:09:38.279
<v Speaker 4>be the exceptional case. But if it's like a parser,

158
00:09:38.919 --> 00:09:42.879
<v Speaker 4>I often find that my functions are way longer, longer

159
00:09:42.919 --> 00:09:45.279
<v Speaker 4>than I like them to be, because it's like, well,

160
00:09:45.679 --> 00:09:50.600
<v Speaker 4>one unit of logic for parsing, this thing is just

161
00:09:50.679 --> 00:09:53.879
<v Speaker 4>this much logic or transforming if it's like a parser

162
00:09:53.960 --> 00:09:54.840
<v Speaker 4>or a transformer.

163
00:09:57.639 --> 00:10:00.440
<v Speaker 6>Yeah, yeah, So the line limit is always the way

164
00:10:00.480 --> 00:10:02.879
<v Speaker 6>to look at it. It's because it's not a line

165
00:10:02.960 --> 00:10:06.080
<v Speaker 6>limit that you're really going for. And in the book,

166
00:10:06.639 --> 00:10:09.279
<v Speaker 6>and in the new book especially, I write a whole

167
00:10:09.360 --> 00:10:11.240
<v Speaker 6>chapter about this in the new book. But in the

168
00:10:11.279 --> 00:10:15.360
<v Speaker 6>old book, the rule was a function should do one thing,

169
00:10:16.279 --> 00:10:19.159
<v Speaker 6>and how do you know that it's doing one thing?

170
00:10:19.200 --> 00:10:20.279
<v Speaker 2>How do you remove the.

171
00:10:20.279 --> 00:10:24.919
<v Speaker 6>Objective or the subjective idea of what one thing is?

172
00:10:25.039 --> 00:10:27.600
<v Speaker 6>And my answer to that is is that if you

173
00:10:27.720 --> 00:10:33.080
<v Speaker 6>can use the extract method refactoring inside a function to

174
00:10:33.159 --> 00:10:37.639
<v Speaker 6>pull another function out of it, you probably should, and

175
00:10:37.679 --> 00:10:41.159
<v Speaker 6>then give that function a nice name, and those two

176
00:10:41.200 --> 00:10:43.399
<v Speaker 6>functions will then do one thing. If you can take

177
00:10:43.440 --> 00:10:46.879
<v Speaker 6>one function and split it in two with extract method,

178
00:10:47.639 --> 00:10:50.200
<v Speaker 6>then you then that then probably you should, and those

179
00:10:50.200 --> 00:10:52.759
<v Speaker 6>two functions will be smaller. Of course, they'll both have

180
00:10:52.879 --> 00:10:53.399
<v Speaker 6>nice names.

181
00:10:54.080 --> 00:10:59.639
<v Speaker 4>That's that's if you don't know what to name your function.

182
00:11:01.000 --> 00:11:04.639
<v Speaker 4>If your function name is dou stuff, you definitely need

183
00:11:04.720 --> 00:11:06.039
<v Speaker 4>to break your function down.

184
00:11:06.240 --> 00:11:11.960
<v Speaker 3>I literally want had to refactor code that had in

185
00:11:12.000 --> 00:11:15.480
<v Speaker 3>it one through in it ten oh jee.

186
00:11:18.240 --> 00:11:22.279
<v Speaker 6>Yeah, but that's useful. But they kept the line rule.

187
00:11:22.480 --> 00:11:25.159
<v Speaker 5>The thing that we're kind of circling around here, at

188
00:11:25.240 --> 00:11:28.559
<v Speaker 5>least the way that I approach it is I like

189
00:11:28.679 --> 00:11:30.200
<v Speaker 5>everything at the same abstraction level.

190
00:11:30.240 --> 00:11:30.559
<v Speaker 2>For one.

191
00:11:30.720 --> 00:11:32.840
<v Speaker 5>Yeah, so that's one rule that I follow, right, And

192
00:11:32.879 --> 00:11:35.879
<v Speaker 5>so if I can say this takes these steps A, D, C,

193
00:11:36.080 --> 00:11:38.080
<v Speaker 5>D E, F right, and I can you know, I

194
00:11:38.080 --> 00:11:41.080
<v Speaker 5>can name the steps, then then that's usually what my

195
00:11:41.080 --> 00:11:43.720
<v Speaker 5>function looks like, right, or my method or whatever. And

196
00:11:43.759 --> 00:11:45.600
<v Speaker 5>then and then I have those somewhere else, right, And

197
00:11:45.639 --> 00:11:47.399
<v Speaker 5>so then and then those break down the same way.

198
00:11:47.399 --> 00:11:49.000
<v Speaker 2>They're just the next layer of abstraction.

199
00:11:49.440 --> 00:11:52.600
<v Speaker 5>But then the other thing is is that if typically

200
00:11:52.639 --> 00:11:55.559
<v Speaker 5>if I have some big long function like AJ's talking

201
00:11:55.559 --> 00:11:59.440
<v Speaker 5>about with like a parser, usually there are different stages

202
00:11:59.559 --> 00:12:03.399
<v Speaker 5>or steps or functionalities in there that I need to

203
00:12:03.440 --> 00:12:05.759
<v Speaker 5>go through, and so I can break all that out too.

204
00:12:06.480 --> 00:12:09.080
<v Speaker 5>And so in a lot of cases, I don't typically

205
00:12:09.080 --> 00:12:12.000
<v Speaker 5>find very many cases in any language that I've written,

206
00:12:12.480 --> 00:12:17.799
<v Speaker 5>where I don't wind up with just some somewhat shorter method.

207
00:12:18.120 --> 00:12:20.720
<v Speaker 5>The only time it gets particularly long is if you

208
00:12:20.759 --> 00:12:23.759
<v Speaker 5>have a case statement. And I hate case statements because

209
00:12:23.879 --> 00:12:26.720
<v Speaker 5>it adds the line every other time. If if the

210
00:12:26.759 --> 00:12:29.080
<v Speaker 5>case case, then do this case, then do this case,

211
00:12:29.120 --> 00:12:32.480
<v Speaker 5>than do this or if els if elsif else if

212
00:12:32.480 --> 00:12:34.440
<v Speaker 5>elsif which is also gross.

213
00:12:35.399 --> 00:12:39.320
<v Speaker 2>But beyond that. Yeah, typically you can break it out into.

214
00:12:39.200 --> 00:12:44.919
<v Speaker 3>Multiple I prefer and direction over ifs and and switches.

215
00:12:45.440 --> 00:12:48.000
<v Speaker 3>By the way, we have a question from the audience

216
00:12:48.879 --> 00:12:53.120
<v Speaker 3>closure from Venicius. I think I'm pronouncing his name correctly.

217
00:12:53.120 --> 00:12:56.879
<v Speaker 3>I hope closure developers value recursion more than any other

218
00:12:57.120 --> 00:13:00.200
<v Speaker 3>How does recursion impact clean code? Well, I think that

219
00:13:00.279 --> 00:13:05.759
<v Speaker 3>closure developers don't have a choice except to use recursion

220
00:13:05.799 --> 00:13:09.000
<v Speaker 3>if they want to have to make to create loops.

221
00:13:10.320 --> 00:13:12.200
<v Speaker 3>You know, one of the people you didn't talk about

222
00:13:12.200 --> 00:13:17.080
<v Speaker 3>in your book, or a few people were Church And

223
00:13:17.240 --> 00:13:19.360
<v Speaker 3>also I forget the name of the two guys that

224
00:13:19.480 --> 00:13:20.320
<v Speaker 3>created lisp.

225
00:13:20.840 --> 00:13:24.000
<v Speaker 1>Oh, yeah, we're here to talk about we programmers.

226
00:13:28.039 --> 00:13:29.879
<v Speaker 5>Go go ahead and answer this question, Bob, and then

227
00:13:30.120 --> 00:13:32.159
<v Speaker 5>we'll move on and move on to story hour.

228
00:13:32.600 --> 00:13:34.879
<v Speaker 6>Well, I mean, I mean Dan is right. If you're

229
00:13:34.960 --> 00:13:37.320
<v Speaker 6>going to use the functional language, you have no choice

230
00:13:37.360 --> 00:13:41.720
<v Speaker 6>but to use recursion. Recursion is a the only way

231
00:13:41.919 --> 00:13:45.279
<v Speaker 6>you can do loops in a in a functional language.

232
00:13:46.399 --> 00:13:51.360
<v Speaker 6>How does it impact clean code? It doesn't. Good. Good

233
00:13:51.399 --> 00:13:55.639
<v Speaker 6>expressive code can be expressed either with iterative loops or

234
00:13:55.679 --> 00:14:00.600
<v Speaker 6>with recursion, so there's no real impact there at all.

235
00:14:01.120 --> 00:14:04.159
<v Speaker 6>The impact that closure brings to the rules of clean

236
00:14:04.240 --> 00:14:12.960
<v Speaker 6>code is that the act of creating intermediate variables is

237
00:14:13.159 --> 00:14:18.559
<v Speaker 6>very difficult to extract out into other functions because in closure,

238
00:14:18.600 --> 00:14:21.039
<v Speaker 6>when you create an intermediate variable, it is in the

239
00:14:21.080 --> 00:14:23.639
<v Speaker 6>scope of your function, and there's no way to get

240
00:14:23.679 --> 00:14:27.720
<v Speaker 6>it out without doing some nasty trick like creating an

241
00:14:27.759 --> 00:14:31.759
<v Speaker 6>atom or something. And okay, probably don't want to do

242
00:14:31.799 --> 00:14:32.399
<v Speaker 6>that too.

243
00:14:32.200 --> 00:14:36.200
<v Speaker 3>Often because you don't want side effects, all right right now.

244
00:14:36.360 --> 00:14:38.840
<v Speaker 6>I mean, you can manage those side effects by creating

245
00:14:38.879 --> 00:14:42.600
<v Speaker 6>an atom and then making sure you don't overwrite the

246
00:14:42.720 --> 00:14:45.519
<v Speaker 6>data that you stick in there. So in that sense,

247
00:14:45.559 --> 00:14:49.480
<v Speaker 6>you probably could pull out those functions. And I've played

248
00:14:49.519 --> 00:14:51.919
<v Speaker 6>with that technique a few times, but it's always ugly.

249
00:14:52.600 --> 00:14:56.480
<v Speaker 6>So then I wind up with functions that are fifteen

250
00:14:56.600 --> 00:14:59.200
<v Speaker 6>lines long, and I look at them and go boy,

251
00:14:59.240 --> 00:15:01.799
<v Speaker 6>I wish I could pull lice things apart, but there's

252
00:15:01.840 --> 00:15:07.559
<v Speaker 6>no real good way so far, enclosure that I have accepted.

253
00:15:08.840 --> 00:15:11.759
<v Speaker 3>Also, at the end of the day, it's not about achieving,

254
00:15:11.879 --> 00:15:14.840
<v Speaker 3>like you said, it's not about achieving some magic number.

255
00:15:14.919 --> 00:15:18.120
<v Speaker 3>It's trying to make your I guess it would be

256
00:15:18.159 --> 00:15:20.840
<v Speaker 3>try to make your functions as short as possible, but

257
00:15:21.159 --> 00:15:22.159
<v Speaker 3>no shorter.

258
00:15:22.720 --> 00:15:26.360
<v Speaker 6>Well, yeah, given the constraints of the language.

259
00:15:26.519 --> 00:15:28.600
<v Speaker 2>And it's not easy either.

260
00:15:28.639 --> 00:15:31.960
<v Speaker 5>Any people kind of conflate length and complexity or length

261
00:15:32.000 --> 00:15:36.799
<v Speaker 5>and difficulty, and you know it can and can't sometimes.

262
00:15:37.519 --> 00:15:39.320
<v Speaker 5>But was it Mark Twain that said I didn't have

263
00:15:39.360 --> 00:15:40.919
<v Speaker 5>time to write you a short letter, so I wrote

264
00:15:40.960 --> 00:15:41.519
<v Speaker 5>you a long one.

265
00:15:41.919 --> 00:15:45.279
<v Speaker 2>It was Voltaire, it was somebody important.

266
00:15:45.360 --> 00:15:47.600
<v Speaker 5>But the point is is that it takes a lot

267
00:15:47.600 --> 00:15:50.759
<v Speaker 5>of time to get right, to really get things that

268
00:15:50.799 --> 00:15:53.799
<v Speaker 5>they're in the right place, so that you have something

269
00:15:53.879 --> 00:15:58.399
<v Speaker 5>like that that's easy to put together in your head. Anyway,

270
00:15:58.960 --> 00:16:00.799
<v Speaker 5>let's get into we program I think we did this

271
00:16:00.879 --> 00:16:04.240
<v Speaker 5>last time when we were talking about your your other project,

272
00:16:04.600 --> 00:16:06.840
<v Speaker 5>where we went off on we programmers for about twenty

273
00:16:06.879 --> 00:16:09.080
<v Speaker 5>minutes and then it's like, we're here to talk about

274
00:16:09.120 --> 00:16:12.559
<v Speaker 5>this other thing. So which is great because it makes

275
00:16:12.559 --> 00:16:16.879
<v Speaker 5>it fun to talk about. But yeah, so I'm kind

276
00:16:16.879 --> 00:16:20.639
<v Speaker 5>of curious as we get in, what's your favorite part

277
00:16:20.759 --> 00:16:22.879
<v Speaker 5>or story or whatever of the book, and can you

278
00:16:22.960 --> 00:16:28.559
<v Speaker 5>kind of give us a little bit of the story there.

279
00:16:28.679 --> 00:16:31.919
<v Speaker 6>My favorite story in there, well, there's a lot of

280
00:16:32.120 --> 00:16:35.240
<v Speaker 6>a lot of stories that I really like, but my

281
00:16:35.919 --> 00:16:42.039
<v Speaker 6>favorite story in there might be the story of John Bacchus,

282
00:16:43.600 --> 00:16:48.639
<v Speaker 6>because here's a guy who was a complete and air

283
00:16:48.639 --> 00:16:51.759
<v Speaker 6>did well. It didn't have a great family life growing up,

284
00:16:53.279 --> 00:16:56.600
<v Speaker 6>kind of dumped on school, didn't care about school because

285
00:16:56.600 --> 00:16:59.399
<v Speaker 6>he's too damn smart, right, and you know, everybody knows

286
00:16:59.399 --> 00:17:02.039
<v Speaker 6>that kid. It was so damn smart that they didn't

287
00:17:02.039 --> 00:17:04.640
<v Speaker 6>even he didn't even try, right. School was just so

288
00:17:04.799 --> 00:17:08.559
<v Speaker 6>damn boring. The hell with it, and he got drafted

289
00:17:09.000 --> 00:17:11.920
<v Speaker 6>towards the end of World War two. Fortunately right at

290
00:17:11.920 --> 00:17:18.799
<v Speaker 6>the right time. He got drafted, and the army saw this,

291
00:17:18.799 --> 00:17:22.440
<v Speaker 6>this ne'er do well kid, and ran him through an

292
00:17:22.480 --> 00:17:26.359
<v Speaker 6>aptitude test and it blew their socks off, and so

293
00:17:26.440 --> 00:17:28.559
<v Speaker 6>they said, you need to become an engineer, and they

294
00:17:28.559 --> 00:17:32.240
<v Speaker 6>put him into engineering school. Well that was too boring

295
00:17:32.279 --> 00:17:34.279
<v Speaker 6>for him. He did extremely well, of course, but it

296
00:17:34.319 --> 00:17:36.359
<v Speaker 6>was too boring for him, and he just spent his

297
00:17:36.440 --> 00:17:40.519
<v Speaker 6>time at nightclubs and stuff like that. And the army

298
00:17:40.720 --> 00:17:43.279
<v Speaker 6>goes this right at the end of World War Two, right,

299
00:17:43.400 --> 00:17:46.319
<v Speaker 6>so the army says, you know, this guy's so damn smart.

300
00:17:46.319 --> 00:17:50.839
<v Speaker 6>They put him into medical school. He could become a doctor.

301
00:17:51.359 --> 00:17:55.119
<v Speaker 6>And that was a bit more challenging, and Bacchus kind

302
00:17:55.160 --> 00:17:58.920
<v Speaker 6>of enjoyed it, but kind of didn't. And then all

303
00:17:58.960 --> 00:18:02.240
<v Speaker 6>of a sudden, the world was over and he had

304
00:18:03.160 --> 00:18:05.799
<v Speaker 6>he was out of the army and he just dropped

305
00:18:05.839 --> 00:18:08.279
<v Speaker 6>out of the school and said, yeah, the hell with that.

306
00:18:08.480 --> 00:18:11.680
<v Speaker 7>And he he built himself a nice little Wi Fi system.

307
00:18:11.960 --> 00:18:14.759
<v Speaker 6>Oh, by the way, that's not Wi Fi Hi Fi

308
00:18:15.400 --> 00:18:18.559
<v Speaker 6>back in the you know, in the fifties, nice sound

309
00:18:18.640 --> 00:18:23.119
<v Speaker 6>system for his record player. Still only half of the

310
00:18:23.160 --> 00:18:25.880
<v Speaker 6>people in the world know what I'm talking about. He

311
00:18:25.960 --> 00:18:28.359
<v Speaker 6>built that, and he dabbled around a little bit and

312
00:18:28.359 --> 00:18:31.799
<v Speaker 6>really didn't get any jobs. And then a friend of

313
00:18:31.839 --> 00:18:37.559
<v Speaker 6>his said, you know, you should see this really cool

314
00:18:37.880 --> 00:18:41.880
<v Speaker 6>thing that's down in one of the streets of New

315
00:18:41.960 --> 00:18:46.000
<v Speaker 6>York City at the IBM building. And he goes wandering

316
00:18:46.039 --> 00:18:48.200
<v Speaker 6>over there and he looks in the window and and

317
00:18:48.319 --> 00:18:51.720
<v Speaker 6>the at the IBM building. Thomas J. Watson, the guy

318
00:18:51.759 --> 00:18:56.880
<v Speaker 6>who founded IBM, had put in the display window the

319
00:18:57.160 --> 00:19:02.519
<v Speaker 6>world's second computer, big computer, right, the selective I can't

320
00:19:02.559 --> 00:19:07.240
<v Speaker 6>remember the name of it. This gigantic machine, mostly electro mechanical,

321
00:19:07.359 --> 00:19:12.880
<v Speaker 6>couple of vacuum tubes, paper tape everywhere. This massive machine

322
00:19:12.880 --> 00:19:17.079
<v Speaker 6>fills the room. It's got this really cool front panel,

323
00:19:17.160 --> 00:19:20.480
<v Speaker 6>you know, a Star Trek front panel. Lights are blinking.

324
00:19:20.680 --> 00:19:24.400
<v Speaker 6>If you go inside, it's clicking away like crazy. And

325
00:19:24.720 --> 00:19:28.279
<v Speaker 6>Bacchus goes, oh, yeah, that's kind of cool. And he

326
00:19:28.400 --> 00:19:32.319
<v Speaker 6>asks for a tour, and the person giving him a

327
00:19:32.359 --> 00:19:37.359
<v Speaker 6>tour I think must have smelled something. I mean, Bacchus

328
00:19:37.039 --> 00:19:42.039
<v Speaker 6>was in a very informal garb shall we say, but

329
00:19:42.200 --> 00:19:45.960
<v Speaker 6>must have smelled something about Bacchus's intelligence, because the tour

330
00:19:46.039 --> 00:19:50.079
<v Speaker 6>guide brought him up to the department head, and the

331
00:19:50.119 --> 00:19:52.480
<v Speaker 6>department head gave him an aptitude test and hired him

332
00:19:52.519 --> 00:19:58.319
<v Speaker 6>on the spot, and he became the project leader of

333
00:19:58.400 --> 00:20:01.240
<v Speaker 6>the Fortran project that gave us the Fortran language way

334
00:20:01.279 --> 00:20:04.000
<v Speaker 6>back in the fifties. That's that is one of the

335
00:20:04.000 --> 00:20:11.720
<v Speaker 6>most interesting intellectual rags to intellectual riches stories in the book.

336
00:20:11.759 --> 00:20:14.359
<v Speaker 6>It's a guy that you would never expect to do

337
00:20:14.480 --> 00:20:20.240
<v Speaker 6>well at anything and winds up delivering this wonderful thing

338
00:20:20.240 --> 00:20:21.559
<v Speaker 6>to the world at that time.

339
00:20:22.440 --> 00:20:27.480
<v Speaker 3>So I have to ask, I mean, it's the book.

340
00:20:28.319 --> 00:20:30.839
<v Speaker 3>I've not read it, but I've read excerpts. I've not

341
00:20:30.920 --> 00:20:32.799
<v Speaker 3>read it yet. That's put it this way, but I've

342
00:20:32.799 --> 00:20:35.599
<v Speaker 3>read excerpts. And I also saw some of the stuff

343
00:20:35.640 --> 00:20:39.440
<v Speaker 3>that you put out, and there are a huge no,

344
00:20:39.640 --> 00:20:44.240
<v Speaker 3>there's a large number of amazing characters and crazy stories

345
00:20:44.279 --> 00:20:48.400
<v Speaker 3>about them. How did you decide who to put in

346
00:20:48.440 --> 00:20:50.799
<v Speaker 3>and leave out? And how did you get all the

347
00:20:50.880 --> 00:20:54.359
<v Speaker 3>information about the ones that I decided to put in.

348
00:20:58.000 --> 00:21:02.519
<v Speaker 6>It's how did I decide who to leave in and

349
00:21:02.559 --> 00:21:06.200
<v Speaker 6>who to leave out? Old Bob Seeger song right. There

350
00:21:06.200 --> 00:21:07.799
<v Speaker 6>were a few that were obvious that I had to

351
00:21:07.799 --> 00:21:10.599
<v Speaker 6>put in. I had to put Babbage in because the

352
00:21:10.640 --> 00:21:13.880
<v Speaker 6>book wouldn't even start properly without Babbage. And you have

353
00:21:13.960 --> 00:21:17.200
<v Speaker 6>to put Grace Hopper because she was kind of like

354
00:21:17.240 --> 00:21:20.079
<v Speaker 6>the first And if you're not talking about touring, you're

355
00:21:20.119 --> 00:21:23.000
<v Speaker 6>not writing a book about software history. So you've got

356
00:21:23.000 --> 00:21:26.039
<v Speaker 6>to have touring. And if you bring in touring, you

357
00:21:26.200 --> 00:21:33.519
<v Speaker 6>have to talk about the math. Dave the Hilbert Albert.

358
00:21:33.599 --> 00:21:36.519
<v Speaker 6>Thank you. I knew it starting with an H. You

359
00:21:36.599 --> 00:21:38.400
<v Speaker 6>have to talk about David Hilbert, and you have to

360
00:21:38.400 --> 00:21:41.559
<v Speaker 6>talk about John von Neuman. So those were kind of obvious.

361
00:21:41.799 --> 00:21:47.119
<v Speaker 6>That's an obvious progression. And then you know, why wouldn't

362
00:21:47.160 --> 00:21:52.599
<v Speaker 6>you talk about the three authors of C Why wouldn't

363
00:21:52.640 --> 00:21:56.680
<v Speaker 6>you talk about Dennis Ritchie and Ken Thompson and Brian Kernahan.

364
00:21:57.480 --> 00:21:59.599
<v Speaker 6>In fact, you're gonna want to end with that one

365
00:22:00.000 --> 00:22:04.480
<v Speaker 6>because that's kind of where modern history begins. Yeah, and

366
00:22:04.480 --> 00:22:07.440
<v Speaker 6>then in the midst of all that, there are these milestones,

367
00:22:07.480 --> 00:22:10.839
<v Speaker 6>and most of those milestones I just uncovered by accident,

368
00:22:10.960 --> 00:22:14.920
<v Speaker 6>like the whole story of John Kemeny, the father of Basic.

369
00:22:15.359 --> 00:22:19.079
<v Speaker 6>What an interesting story that was. No, everybody knows Basic,

370
00:22:19.200 --> 00:22:20.680
<v Speaker 6>hardly anybody knows the.

371
00:22:22.359 --> 00:22:25.400
<v Speaker 3>You're making a You're making an assumption that's based on

372
00:22:25.440 --> 00:22:29.640
<v Speaker 3>our age. Well, I have to tell you that I

373
00:22:29.799 --> 00:22:33.079
<v Speaker 3>speak with the developers that I work with these days,

374
00:22:33.680 --> 00:22:37.000
<v Speaker 3>and you know, sometimes the topic of the first what's

375
00:22:37.039 --> 00:22:39.960
<v Speaker 3>your first programming language? Comes up and I say Basic

376
00:22:40.039 --> 00:22:46.440
<v Speaker 3>and they say, what ye like people today? People today

377
00:22:46.480 --> 00:22:49.359
<v Speaker 3>don't know about Basic. I mean, you know, maybe they

378
00:22:49.400 --> 00:22:53.319
<v Speaker 3>do because of Microsoft. You know, stuff like VBA. But

379
00:22:53.839 --> 00:22:56.359
<v Speaker 3>other than that, they probably don't know what basic is.

380
00:22:56.400 --> 00:22:59.000
<v Speaker 3>And you know what, that's not such a bad thing.

381
00:23:02.759 --> 00:23:05.279
<v Speaker 3>Basic almost spoiled me as a programmer.

382
00:23:05.599 --> 00:23:10.039
<v Speaker 6>Oh well, you know you didn't write Cobaal then, because

383
00:23:10.039 --> 00:23:13.440
<v Speaker 6>that would have spoiled you as a programmer. Spoiled me

384
00:23:13.480 --> 00:23:14.960
<v Speaker 6>as a programmer for a day or two.

385
00:23:15.279 --> 00:23:18.720
<v Speaker 3>Well, you know the story about Ellen Kay and Grace Hopper.

386
00:23:20.079 --> 00:23:22.960
<v Speaker 6>Please please tell me the story.

387
00:23:23.519 --> 00:23:28.640
<v Speaker 3>Well, I recall reading it somewhere that he was walking

388
00:23:28.680 --> 00:23:32.200
<v Speaker 3>around the university. I guess it would be Stanford. I

389
00:23:32.240 --> 00:23:35.519
<v Speaker 3>think I may be wrong. Maybe it was Berkeley. I

390
00:23:35.559 --> 00:23:39.799
<v Speaker 3>don't recall where he taught, But anyway, he sees a

391
00:23:39.799 --> 00:23:43.359
<v Speaker 3>group of people and he walks over and it's because

392
00:23:44.119 --> 00:23:47.880
<v Speaker 3>Grace Hopper was there and they were like showing her around.

393
00:23:48.440 --> 00:23:52.640
<v Speaker 3>And the story is that they introduced them and they said,

394
00:23:53.640 --> 00:23:58.240
<v Speaker 3>this is Grace Hopper. She created Cobal, And he said, oh,

395
00:23:58.319 --> 00:24:04.079
<v Speaker 3>I'm sorry.

396
00:24:04.680 --> 00:24:09.000
<v Speaker 6>Yeah, I am not kind to Cobal in my book.

397
00:24:10.640 --> 00:24:14.200
<v Speaker 6>I'm very kind to Grace Hopper because I think I

398
00:24:14.240 --> 00:24:17.920
<v Speaker 6>think she was a remarkable person. But oh yeah, for sure, God,

399
00:24:17.960 --> 00:24:21.880
<v Speaker 6>I hated Cobol. I spent about three months writing Cobal

400
00:24:21.920 --> 00:24:24.920
<v Speaker 6>when I was nineteen years old. It was not a

401
00:24:24.960 --> 00:24:27.839
<v Speaker 6>fun time for me. So I've walked away from that

402
00:24:27.960 --> 00:24:29.160
<v Speaker 6>language and never looked back.

403
00:24:29.559 --> 00:24:31.920
<v Speaker 3>Remember what happened when COVID hit?

404
00:24:35.160 --> 00:24:37.200
<v Speaker 6>I thought you were going to go for y two K.

405
00:24:37.400 --> 00:24:38.799
<v Speaker 6>So know what happened when COVID hit?

406
00:24:39.880 --> 00:24:45.160
<v Speaker 3>I still remember. I think it was the governor of

407
00:24:45.319 --> 00:24:49.559
<v Speaker 3>New Jersey or something saying that our systems can keep

408
00:24:49.680 --> 00:24:53.200
<v Speaker 3>up and we were in dire need of cobalt programmers.

409
00:24:55.279 --> 00:24:57.720
<v Speaker 6>Yeah, I've actually heard that, since there's a lot of

410
00:24:57.720 --> 00:25:00.920
<v Speaker 6>people talking about these things are all rich and in cobalt.

411
00:25:03.240 --> 00:25:09.039
<v Speaker 5>Okay, Well, it's like any other project that I've worked on.

412
00:25:09.400 --> 00:25:11.799
<v Speaker 5>We don't actually update it until it's breaking.

413
00:25:14.880 --> 00:25:17.119
<v Speaker 6>I think some of these are long past that point.

414
00:25:18.519 --> 00:25:23.640
<v Speaker 2>Well look, yeah, but they can patch it over and yeah.

415
00:25:23.480 --> 00:25:26.839
<v Speaker 3>Yeah, Well she also invented the term bug, as I recall.

416
00:25:27.079 --> 00:25:30.440
<v Speaker 6>Yeah, well, I don't know if that she invented it,

417
00:25:30.480 --> 00:25:36.200
<v Speaker 6>but in her notebook there is a desiccated moth that

418
00:25:36.279 --> 00:25:41.640
<v Speaker 6>she pulled out of the relays in the Harvard Mark one,

419
00:25:41.799 --> 00:25:43.839
<v Speaker 6>and in the notebook it says, this is the bug

420
00:25:43.880 --> 00:25:48.599
<v Speaker 6>we found in the machine. So I believe the term

421
00:25:48.680 --> 00:25:52.599
<v Speaker 6>actually came from telephony, maybe even fifty years before that,

422
00:25:52.680 --> 00:25:55.240
<v Speaker 6>but she put it in a software notebook, so we

423
00:25:55.319 --> 00:25:59.200
<v Speaker 6>can credit her with that. She was, however, responsible for

424
00:25:59.279 --> 00:26:03.480
<v Speaker 6>creating the glossary of terms, one of the earliest glossary

425
00:26:03.519 --> 00:26:07.720
<v Speaker 6>of terms in our industry. So she coined things like

426
00:26:08.319 --> 00:26:13.160
<v Speaker 6>register and bit and breakpoint and a bunch of other

427
00:26:13.200 --> 00:26:15.640
<v Speaker 6>words like that that we all know and love today.

428
00:26:17.559 --> 00:26:19.799
<v Speaker 3>So again, how did you go about the research?

429
00:26:21.319 --> 00:26:24.119
<v Speaker 6>I have got like a zillion books, and so it's

430
00:26:24.160 --> 00:26:27.200
<v Speaker 6>all secondary research, you know, I didn't do any primary research.

431
00:26:27.799 --> 00:26:32.160
<v Speaker 6>In some sense, you could look at we Programmers bring

432
00:26:32.160 --> 00:26:34.799
<v Speaker 6>a book out We Programmers, you can look at that

433
00:26:34.880 --> 00:26:42.079
<v Speaker 6>book as a literature review. Because I read really significant

434
00:26:42.119 --> 00:26:46.799
<v Speaker 6>books about Babbage and about Grace Hopper and about all

435
00:26:46.799 --> 00:26:49.359
<v Speaker 6>these guys, right, and then I tried to condense them

436
00:26:49.400 --> 00:26:54.359
<v Speaker 6>down and pull out two things. I wanted to pull

437
00:26:54.400 --> 00:26:58.720
<v Speaker 6>out the human side of the story, so that programmers

438
00:26:58.720 --> 00:27:03.400
<v Speaker 6>who read this could I identify the character flaws that

439
00:27:03.440 --> 00:27:07.119
<v Speaker 6>they see in themselves, and these people are replete with

440
00:27:07.279 --> 00:27:10.400
<v Speaker 6>character flaws. And then I also wanted to pull out

441
00:27:10.440 --> 00:27:14.119
<v Speaker 6>the deep technology. That's something that most of these books

442
00:27:14.720 --> 00:27:18.079
<v Speaker 6>do not go into. So I had to do that

443
00:27:18.200 --> 00:27:21.960
<v Speaker 6>research myself. So when they're talking about when they're talking

444
00:27:21.960 --> 00:27:24.640
<v Speaker 6>about the Univak one, they don't really go into much detail.

445
00:27:24.680 --> 00:27:27.240
<v Speaker 6>So I've got to pull all that information out and

446
00:27:27.279 --> 00:27:31.400
<v Speaker 6>then describe, Okay, programmers, this is what a Univak one

447
00:27:31.519 --> 00:27:34.400
<v Speaker 6>was like, this is how you programmed it. I actually

448
00:27:34.400 --> 00:27:37.920
<v Speaker 6>put some Univac one code in there, and I talk

449
00:27:37.960 --> 00:27:42.359
<v Speaker 6>about the kind of code that Grace Hopper had to

450
00:27:42.400 --> 00:27:46.359
<v Speaker 6>write in the late forties and early fifties to get

451
00:27:46.359 --> 00:27:50.319
<v Speaker 6>the Harvard Mark one to works. I wanted the programmers

452
00:27:50.359 --> 00:27:53.839
<v Speaker 6>who read this book not only to identify with the

453
00:27:53.920 --> 00:27:57.279
<v Speaker 6>human side of these guys, but also to identify with

454
00:27:57.400 --> 00:28:01.039
<v Speaker 6>the deep technical problems that they were solving. So there's

455
00:28:01.079 --> 00:28:05.559
<v Speaker 6>this really interesting juxtaposition. I think it's interesting anyway, interesting

456
00:28:05.640 --> 00:28:10.920
<v Speaker 6>juxtaposition of these these frail human people dealing with really

457
00:28:11.079 --> 00:28:13.400
<v Speaker 6>difficult technical problems.

458
00:28:14.799 --> 00:28:16.720
<v Speaker 5>I'd like you to go into more depth on one

459
00:28:16.759 --> 00:28:19.240
<v Speaker 5>of these. You know, you mentioned like maybe the Univac

460
00:28:19.400 --> 00:28:22.000
<v Speaker 5>or something else where. You know, it's just something that

461
00:28:22.039 --> 00:28:25.279
<v Speaker 5>we don't even fathom that they had to just figure out.

462
00:28:28.319 --> 00:28:32.079
<v Speaker 6>Well, start with, start with the Harvard Mark one. This

463
00:28:32.200 --> 00:28:38.240
<v Speaker 6>was a machine that was built by Harold. Harold Aken

464
00:28:38.519 --> 00:28:40.640
<v Speaker 6>kind of conceived of it in the name he was

465
00:28:40.640 --> 00:28:43.920
<v Speaker 6>a Navy guy, sort of popcorn. He talked to the

466
00:28:44.000 --> 00:28:46.319
<v Speaker 6>Navy into building the thing. He actually talked to IBM

467
00:28:46.400 --> 00:28:48.400
<v Speaker 6>into building the thing, and then didn't give them any

468
00:28:48.400 --> 00:28:51.559
<v Speaker 6>credit for it, which was a real problem for him

469
00:28:51.640 --> 00:28:56.200
<v Speaker 6>later on. But his idea was to create this calculator

470
00:28:57.359 --> 00:29:01.960
<v Speaker 6>that could add some subtract, multiplan divide numbers that had

471
00:29:02.640 --> 00:29:04.920
<v Speaker 6>twenty three digits. I think that was the numbers. These

472
00:29:05.000 --> 00:29:09.079
<v Speaker 6>numbers had twenty three digits decimal. Nope, no, this wasn't binary.

473
00:29:09.839 --> 00:29:13.599
<v Speaker 6>And the digits were all held in these counter registers,

474
00:29:14.240 --> 00:29:17.839
<v Speaker 6>and the counter registers could be addressed and moved into

475
00:29:18.359 --> 00:29:22.240
<v Speaker 6>arithmetic units that could add I think it could add

476
00:29:23.799 --> 00:29:26.759
<v Speaker 6>three numbers per second if I remember correctly, and it

477
00:29:26.759 --> 00:29:31.880
<v Speaker 6>could multiply, and it could multiply in something under ten seconds,

478
00:29:32.279 --> 00:29:34.920
<v Speaker 6>so fast by the day, fast by the standards of

479
00:29:34.960 --> 00:29:37.200
<v Speaker 6>the day, but impossibly slow from our point of view.

480
00:29:38.240 --> 00:29:45.839
<v Speaker 6>This machine was programmed by punching holes in a twenty

481
00:29:46.079 --> 00:29:51.599
<v Speaker 6>four channel paper tape, and the twenty four channels were

482
00:29:51.759 --> 00:29:57.039
<v Speaker 6>broken up into eight zones, and the zones were the register.

483
00:29:57.200 --> 00:29:59.720
<v Speaker 6>You want to take the data from the register, You're

484
00:29:59.759 --> 00:30:03.400
<v Speaker 6>going to put the data in, and the operation you're

485
00:30:03.440 --> 00:30:06.880
<v Speaker 6>going to perform on it. And those eight channels were

486
00:30:06.920 --> 00:30:14.839
<v Speaker 6>all binary, sort of sort of binary. The programmers programmed

487
00:30:14.920 --> 00:30:19.880
<v Speaker 6>this by identifying what holes should have to be punched

488
00:30:20.400 --> 00:30:24.079
<v Speaker 6>in that paper tape, and they did that numerically, so

489
00:30:24.160 --> 00:30:33.720
<v Speaker 6>they would write their code as four three, six, I

490
00:30:33.720 --> 00:30:35.920
<v Speaker 6>think I got that right, and four men punched the

491
00:30:36.000 --> 00:30:39.599
<v Speaker 6>fourth hole in zone one, punched the three hole in

492
00:30:39.759 --> 00:30:43.279
<v Speaker 6>zone two, punched the sixth hole in zone three. That's

493
00:30:43.319 --> 00:30:46.000
<v Speaker 6>how they would write their code, and if more than

494
00:30:46.039 --> 00:30:48.759
<v Speaker 6>one hole had to be punched, they would write two

495
00:30:48.880 --> 00:30:51.319
<v Speaker 6>numbers in that zone area and then they would come

496
00:30:51.400 --> 00:30:54.759
<v Speaker 6>up with this program that was line by line by line,

497
00:30:55.119 --> 00:31:00.680
<v Speaker 6>just these numbers, these three component numbers and graces. Looking

498
00:31:00.680 --> 00:31:03.400
<v Speaker 6>at this, she was like the third programmer in there

499
00:31:03.440 --> 00:31:08.079
<v Speaker 6>and was immediately turned into the lead. She took over

500
00:31:08.119 --> 00:31:10.359
<v Speaker 6>the whole thing. Had never seen a computer before in

501
00:31:10.359 --> 00:31:15.400
<v Speaker 6>her life, had no idea what these machines were. Aiken

502
00:31:15.519 --> 00:31:17.680
<v Speaker 6>threw her into the task and said, okay, for your

503
00:31:17.680 --> 00:31:21.880
<v Speaker 6>first job, you have to compute the arctangent coefficients to

504
00:31:21.960 --> 00:31:25.640
<v Speaker 6>twenty three decimal places, the interpolation coefficients for doing arc

505
00:31:25.759 --> 00:31:29.440
<v Speaker 6>tangents in twenty three decimal places, which took her a week,

506
00:31:30.119 --> 00:31:32.119
<v Speaker 6>and she had to figure out how the machine worked

507
00:31:32.160 --> 00:31:35.160
<v Speaker 6>and how to bunch the holes, and of course she couldn't.

508
00:31:35.319 --> 00:31:37.920
<v Speaker 6>She didn't have dedicated time on the machine, so she

509
00:31:37.960 --> 00:31:40.839
<v Speaker 6>had to steal the time when the other guys weren't

510
00:31:41.200 --> 00:31:44.920
<v Speaker 6>as busy as they usually are, and she managed to

511
00:31:44.920 --> 00:31:46.799
<v Speaker 6>get that all done. And she worked all this out,

512
00:31:47.559 --> 00:31:49.319
<v Speaker 6>and she realized, and by the way, this is where

513
00:31:49.319 --> 00:31:52.759
<v Speaker 6>the word code came from, because they were writing codes.

514
00:31:53.559 --> 00:31:56.839
<v Speaker 6>It was these numbers, so they called it codes, the

515
00:31:56.880 --> 00:32:00.920
<v Speaker 6>computer codes. And she was one of the first person

516
00:32:01.279 --> 00:32:04.720
<v Speaker 6>people to say, well, each line, want to have a

517
00:32:04.720 --> 00:32:08.079
<v Speaker 6>comment on it. So on the coding sheets that they

518
00:32:08.200 --> 00:32:12.119
<v Speaker 6>had produced mimeograph machine and they would, you know, crank

519
00:32:12.119 --> 00:32:14.519
<v Speaker 6>out and produce these coding sheets. She put in a

520
00:32:14.640 --> 00:32:17.759
<v Speaker 6>column for comments. First person to ever do anything like that.

521
00:32:18.880 --> 00:32:22.759
<v Speaker 6>They began to learn as they were writing the programs

522
00:32:22.799 --> 00:32:24.759
<v Speaker 6>for this thing, and the kinds of programs they were

523
00:32:24.799 --> 00:32:31.960
<v Speaker 6>writing were ballistic trajectories for artillery shells and the timings

524
00:32:32.000 --> 00:32:37.839
<v Speaker 6>of tides in various places, very deep mathematical problems. And

525
00:32:37.920 --> 00:32:40.400
<v Speaker 6>as they did one after the next after the next,

526
00:32:40.440 --> 00:32:44.279
<v Speaker 6>they started realizing that they were writing some of the

527
00:32:44.359 --> 00:32:47.960
<v Speaker 6>same codes over and over again. And so they would

528
00:32:47.960 --> 00:32:52.680
<v Speaker 6>take these little snippets that would do something, some task,

529
00:32:53.160 --> 00:32:56.200
<v Speaker 6>some small mathematical task, and they would write them into

530
00:32:56.240 --> 00:33:03.799
<v Speaker 6>their notebooks. And they called these transcriptions in their notebooks subroutines.

531
00:33:04.559 --> 00:33:07.559
<v Speaker 6>That was their name for them. And then they would

532
00:33:07.599 --> 00:33:10.000
<v Speaker 6>share this back and forth. They would share their notebooks

533
00:33:10.000 --> 00:33:14.240
<v Speaker 6>back and forth, and eventually created a library of subroutines,

534
00:33:14.519 --> 00:33:19.160
<v Speaker 6>which were just these handwritten documents in a notebook style,

535
00:33:19.200 --> 00:33:22.480
<v Speaker 6>and whenever they wanted to use one, they would go

536
00:33:22.519 --> 00:33:24.680
<v Speaker 6>to the notebook, they'd look it up, and then they

537
00:33:24.720 --> 00:33:32.000
<v Speaker 6>would transcribe manually those codes into their program. Of course,

538
00:33:32.079 --> 00:33:37.279
<v Speaker 6>the register numbers had to change, because in one case

539
00:33:37.319 --> 00:33:39.359
<v Speaker 6>you might be using register three, in another case you

540
00:33:39.440 --> 00:33:42.880
<v Speaker 6>might be using register eight. And so when they wrote

541
00:33:42.920 --> 00:33:49.880
<v Speaker 6>these in their book, they used the convention that all

542
00:33:50.000 --> 00:33:54.799
<v Speaker 6>registers were zero or based on zero. So they invented

543
00:33:54.839 --> 00:34:05.640
<v Speaker 6>relocatable programming just out of sheer raw need. Eventually, the

544
00:34:05.680 --> 00:34:09.679
<v Speaker 6>programmers would write the numbers, but they would hire people

545
00:34:09.719 --> 00:34:14.119
<v Speaker 6>to do the punching, and then the tape, the long tape,

546
00:34:14.159 --> 00:34:16.559
<v Speaker 6>and these tapes got pretty long. The long tape would

547
00:34:16.559 --> 00:34:19.599
<v Speaker 6>go back to the programmers and the programmers would verify

548
00:34:19.679 --> 00:34:23.639
<v Speaker 6>the holes against the code that they had written. Man

549
00:34:25.519 --> 00:34:27.800
<v Speaker 6>there was no jump instruction. There was no way to

550
00:34:27.840 --> 00:34:30.159
<v Speaker 6>do a loop unless you put the ends of the

551
00:34:30.199 --> 00:34:32.000
<v Speaker 6>tape together and then you could have a loop, and

552
00:34:32.000 --> 00:34:34.719
<v Speaker 6>they actually did do that. I'm not sure that's where

553
00:34:34.719 --> 00:34:37.119
<v Speaker 6>the word loop came from, but they did make loops

554
00:34:37.119 --> 00:34:40.920
<v Speaker 6>of tape. But usually what happened was that there was

555
00:34:41.039 --> 00:34:44.519
<v Speaker 6>a halt instruction. There was an instruction that would stop

556
00:34:44.559 --> 00:34:48.119
<v Speaker 6>the machine, and then on the tape itself. The tape

557
00:34:48.119 --> 00:34:51.159
<v Speaker 6>was fairly wide, twenty four channels right, so on the

558
00:34:51.159 --> 00:34:54.800
<v Speaker 6>tape itself they would write instructions to the operator. If

559
00:34:54.960 --> 00:34:59.360
<v Speaker 6>registered three is less than twenty eight, then go to

560
00:35:00.039 --> 00:35:02.519
<v Speaker 6>and there would be a mark on the tape where

561
00:35:02.559 --> 00:35:06.320
<v Speaker 6>they would back the tape up to and run it again.

562
00:35:07.039 --> 00:35:09.519
<v Speaker 6>So all of the loops, all of the transfers of

563
00:35:09.559 --> 00:35:15.000
<v Speaker 6>control were manual. They couldn't be done automatically, which meant

564
00:35:15.079 --> 00:35:18.800
<v Speaker 6>that the operators were always on call, always watching the machine,

565
00:35:19.039 --> 00:35:22.599
<v Speaker 6>always repositioning the tape to try and get any kind

566
00:35:22.639 --> 00:35:29.800
<v Speaker 6>of iterative process done correctly. That's just a glimpse of

567
00:35:29.840 --> 00:35:33.800
<v Speaker 6>the horrors of the earliest of programming jobs.

568
00:35:35.159 --> 00:35:38.960
<v Speaker 3>One of my favorite characters that you also talk about,

569
00:35:39.119 --> 00:35:43.519
<v Speaker 3>and I actually learned about him from reading the book

570
00:35:43.559 --> 00:35:47.320
<v Speaker 3>about the Manhattan Project when I was a kid, is

571
00:35:48.079 --> 00:35:54.320
<v Speaker 3>John von Neumann, who was an amazing intellect and persons

572
00:35:54.400 --> 00:35:57.719
<v Speaker 3>give like you know, you watch a TV series like

573
00:35:57.760 --> 00:36:01.159
<v Speaker 3>The Big Back Theory and everybody kind of amazed by

574
00:36:01.239 --> 00:36:04.920
<v Speaker 3>the capabilities of the sheldn character. Well, think about somebody

575
00:36:05.000 --> 00:36:11.639
<v Speaker 3>like that, only doubled, but also highly social. He was

576
00:36:11.760 --> 00:36:16.280
<v Speaker 3>well known for his parties. So there's so, for example,

577
00:36:16.320 --> 00:36:21.039
<v Speaker 3>there's this famous story about him. He basically had what

578
00:36:21.079 --> 00:36:24.000
<v Speaker 3>a photograph you don't say, photographic memory? How do you

579
00:36:24.000 --> 00:36:24.880
<v Speaker 3>call it these days?

580
00:36:26.440 --> 00:36:27.320
<v Speaker 6>Photograph?

581
00:36:27.960 --> 00:36:32.360
<v Speaker 3>You know, dadic Anyway, so a friend of a friend

582
00:36:32.440 --> 00:36:36.239
<v Speaker 3>of his, you know, tells a story where, you know,

583
00:36:36.480 --> 00:36:40.079
<v Speaker 3>he claimed to have this amazing memory. So to test

584
00:36:40.119 --> 00:36:44.440
<v Speaker 3>him out, he asked them to recite the chapters of

585
00:36:45.880 --> 00:36:50.800
<v Speaker 3>Between Two Cities, which he read like when he was

586
00:36:50.840 --> 00:36:55.599
<v Speaker 3>a youth. And he basically started reciting it, and he

587
00:36:55.639 --> 00:36:58.559
<v Speaker 3>asked him to stop after something like ten or fifteen minutes.

588
00:37:02.239 --> 00:37:06.159
<v Speaker 6>I have seen that story reproduced a few times in

589
00:37:06.400 --> 00:37:10.519
<v Speaker 6>slightly different contexts, but I think it's really clear that

590
00:37:10.639 --> 00:37:14.760
<v Speaker 6>John von Newman may have been the smartest person ever

591
00:37:14.840 --> 00:37:20.599
<v Speaker 6>to have been born and easily comparable to somebody like

592
00:37:20.679 --> 00:37:25.440
<v Speaker 6>Einstein or James Clerk Maxwell or someone like that. He

593
00:37:26.119 --> 00:37:32.480
<v Speaker 6>had this uncanny ability to switch disciplines and still be

594
00:37:32.599 --> 00:37:36.239
<v Speaker 6>an expert. So he was deeply involved with quantum mechanics

595
00:37:36.239 --> 00:37:38.480
<v Speaker 6>in the early days. He was deeply involved with the

596
00:37:38.920 --> 00:37:42.639
<v Speaker 6>Manhattan Project. He was the only person on the Manhattan

597
00:37:42.719 --> 00:37:46.480
<v Speaker 6>Project who was allowed to leave and come back, and

598
00:37:46.639 --> 00:37:49.639
<v Speaker 6>leave and come back at will. He could go anywhere

599
00:37:49.679 --> 00:37:52.440
<v Speaker 6>he needed to go because all the other parts of

600
00:37:52.480 --> 00:37:57.840
<v Speaker 6>the military needed his advice. He was deeply involved with ballistics.

601
00:37:57.880 --> 00:38:02.199
<v Speaker 6>He was deeply involved with the shock waves of explosions.

602
00:38:02.760 --> 00:38:06.920
<v Speaker 6>He was he was running the computers at Manhattan on

603
00:38:07.400 --> 00:38:10.239
<v Speaker 6>the Manhattan Project. He went out and looked at other

604
00:38:10.400 --> 00:38:13.599
<v Speaker 6>ways of doing the computations, didn't find a good one,

605
00:38:14.079 --> 00:38:18.880
<v Speaker 6>still stuck with the IBM punch card approach, but managed

606
00:38:18.880 --> 00:38:21.800
<v Speaker 6>to get the initial h the initial models of the

607
00:38:21.840 --> 00:38:25.880
<v Speaker 6>implosion of the of the plutonium corps to work. The

608
00:38:25.920 --> 00:38:30.480
<v Speaker 6>guy was just a remarkable guy and and lucky as

609
00:38:30.519 --> 00:38:33.320
<v Speaker 6>hell until the end of his life. Lucky as hell

610
00:38:33.639 --> 00:38:36.719
<v Speaker 6>because he managed to leave Germany a year before it

611
00:38:36.800 --> 00:38:42.360
<v Speaker 6>became impossible to leave Germany. He joined the Princeton Institute. Right,

612
00:38:42.599 --> 00:38:44.519
<v Speaker 6>he was the guy who brought a lot of other

613
00:38:44.599 --> 00:38:47.639
<v Speaker 6>guys over from Germany, saying, hey, you know it's nice

614
00:38:47.679 --> 00:38:51.079
<v Speaker 6>over here in the US. You could come to Princeton. Oh, Einstein,

615
00:38:51.159 --> 00:38:54.079
<v Speaker 6>come on over here. You know, people like that. So

616
00:38:54.119 --> 00:38:57.559
<v Speaker 6>he was a massive recruiter. And like you said, it's

617
00:38:57.599 --> 00:39:03.599
<v Speaker 6>it's unusual to find a guy who is supreme intellect,

618
00:39:03.719 --> 00:39:08.800
<v Speaker 6>who has supreme intellect and yet really good social skills,

619
00:39:09.199 --> 00:39:12.400
<v Speaker 6>and he did. He was a social animal, so very

620
00:39:12.440 --> 00:39:16.440
<v Speaker 6>kind of like like fine, yes, a lot like Fineman.

621
00:39:19.840 --> 00:39:22.199
<v Speaker 3>The funny thing about him you talked about how some

622
00:39:22.239 --> 00:39:25.800
<v Speaker 3>of these characters were kind of flawed, was that while

623
00:39:25.800 --> 00:39:28.559
<v Speaker 3>he was such a great, amazing person and made so

624
00:39:28.639 --> 00:39:32.239
<v Speaker 3>many contributions, he was also wrecked with self doubt. And

625
00:39:32.280 --> 00:39:34.760
<v Speaker 3>he was like he felt that he did not he

626
00:39:35.000 --> 00:39:38.199
<v Speaker 3>that he hadn't achieved as much as his colleagues.

627
00:39:41.159 --> 00:39:43.519
<v Speaker 6>What's the name of that syndrome. There's a it's that's

628
00:39:43.559 --> 00:39:45.239
<v Speaker 6>got a name. I can't remember what the name of it.

629
00:39:45.320 --> 00:39:47.719
<v Speaker 2>Imposter syndrome, kind of.

630
00:39:47.639 --> 00:39:49.599
<v Speaker 6>The other way around. Right, It's like.

631
00:39:53.360 --> 00:39:56.519
<v Speaker 3>He basically thought you done enough? Right, Yeah, he thought

632
00:39:56.519 --> 00:39:59.800
<v Speaker 3>that he would, like you know, obviously everybody knew what

633
00:39:59.840 --> 00:40:02.360
<v Speaker 3>I Einstein would be remembered for, and everybody and they

634
00:40:02.440 --> 00:40:04.920
<v Speaker 3>knew what Hilbert would be remembered for. And he thought

635
00:40:04.920 --> 00:40:06.400
<v Speaker 3>that he would not be remembered.

636
00:40:07.960 --> 00:40:10.039
<v Speaker 6>Well he was remembered and fondly.

637
00:40:11.440 --> 00:40:12.559
<v Speaker 3>Yeah.

638
00:40:12.639 --> 00:40:15.320
<v Speaker 6>He was one of the inventors of Monte Carlo, the

639
00:40:15.400 --> 00:40:18.880
<v Speaker 6>Monte Carlo method, and the story there is fascinating. They

640
00:40:18.880 --> 00:40:21.440
<v Speaker 6>were trying to figure out, you know, how how to

641
00:40:21.639 --> 00:40:27.360
<v Speaker 6>model the the diffusion of neutrons through a platon plutonium core.

642
00:40:27.800 --> 00:40:29.920
<v Speaker 6>How do you model it? How do you calculate that?

643
00:40:30.599 --> 00:40:34.960
<v Speaker 6>And his buddy, whose name escapes me at the moment,

644
00:40:35.000 --> 00:40:39.079
<v Speaker 6>his buddy sat down and said, well, how would you

645
00:40:39.199 --> 00:40:44.400
<v Speaker 6>determine the probability of winning at solitaire? Now you could

646
00:40:44.400 --> 00:40:48.400
<v Speaker 6>do that mathematically, or you could play one hundred games

647
00:40:48.599 --> 00:40:50.800
<v Speaker 6>and count the number of ones that you won. And

648
00:40:50.840 --> 00:40:55.280
<v Speaker 6>that was the beginning of Monte Carlo analysis, which plays

649
00:40:55.320 --> 00:40:57.559
<v Speaker 6>a huge role in the rest of the book. It

650
00:40:57.679 --> 00:41:01.960
<v Speaker 6>drives the whole notion of Monte Carlo analysis, drives nuclear

651
00:41:01.960 --> 00:41:04.840
<v Speaker 6>physics for a good long time, but it also drives

652
00:41:04.880 --> 00:41:10.079
<v Speaker 6>the creation of object oriented programming. It was Christian Nygard's thing.

653
00:41:10.440 --> 00:41:14.679
<v Speaker 6>He was a Monte Carlo analyst, and because of that

654
00:41:14.719 --> 00:41:18.840
<v Speaker 6>he started thinking about simulation and how to do simulation well.

655
00:41:18.880 --> 00:41:21.199
<v Speaker 6>And of course then you bring in computers and he

656
00:41:21.239 --> 00:41:25.679
<v Speaker 6>wanted to create these the Monte Carlo compiler, and he

657
00:41:25.760 --> 00:41:32.239
<v Speaker 6>recruited he recruited his buddy Ola Johan Dal and wrote

658
00:41:32.320 --> 00:41:35.199
<v Speaker 6>this thing that they initially called the Monte Carlo Compiler

659
00:41:35.199 --> 00:41:38.079
<v Speaker 6>and eventually became called Simula. And in the midst of

660
00:41:38.119 --> 00:41:43.679
<v Speaker 6>all that they literally invented objectoried program.

661
00:41:43.719 --> 00:41:47.199
<v Speaker 3>And in the context of JavaScript, because it's a JavaScript Java,

662
00:41:48.159 --> 00:41:52.119
<v Speaker 3>I think Java JavaScript borrows from self and as I recalled,

663
00:41:52.119 --> 00:41:53.440
<v Speaker 3>self borrows from Simula.

664
00:41:53.719 --> 00:41:57.320
<v Speaker 6>Yeah, well, there's there's there's definitely something too that. The

665
00:41:57.559 --> 00:41:59.920
<v Speaker 6>story that I have heard, and I don't know that

666
00:42:00.079 --> 00:42:03.519
<v Speaker 6>this is absolutely correct, but the story I've heard about

667
00:42:03.639 --> 00:42:06.840
<v Speaker 6>JavaScript is that it was it was brendan Ike's task

668
00:42:07.840 --> 00:42:10.840
<v Speaker 6>to create a language that would run in the browser.

669
00:42:10.920 --> 00:42:13.480
<v Speaker 6>This is back in the Netscape days, the Mozilla days,

670
00:42:14.440 --> 00:42:18.360
<v Speaker 6>and he wanted to make it Lisp, but he didn't

671
00:42:18.360 --> 00:42:21.440
<v Speaker 6>have time, and there was self there and he kind

672
00:42:21.440 --> 00:42:24.960
<v Speaker 6>of borrowed from that and cobbled together this thing called JavaScript.

673
00:42:25.280 --> 00:42:27.679
<v Speaker 6>That may be an urban legend. I think I've seen

674
00:42:27.679 --> 00:42:30.039
<v Speaker 6>that once or twice in various threads on the web.

675
00:42:30.320 --> 00:42:31.800
<v Speaker 6>I don't know if that's true at all, but I

676
00:42:31.800 --> 00:42:32.639
<v Speaker 6>think it's funny.

677
00:42:32.960 --> 00:42:36.079
<v Speaker 5>If you want to hear the full deal from the

678
00:42:36.079 --> 00:42:39.719
<v Speaker 5>horse's mouth, we have an episode where.

679
00:42:38.800 --> 00:42:42.000
<v Speaker 6>Oh with brendan Ike Oh beautiful.

680
00:42:42.440 --> 00:42:45.880
<v Speaker 3>I also conversed with him about this online, even though

681
00:42:45.920 --> 00:42:48.559
<v Speaker 3>I wasn't yet with the podcast when you recorded that

682
00:42:48.679 --> 00:42:54.440
<v Speaker 3>episode with him. It's first of all, it's not exactly

683
00:42:54.519 --> 00:42:58.039
<v Speaker 3>that he was toying with the concept, with the possibility

684
00:42:58.079 --> 00:43:02.199
<v Speaker 3>of putting scheme in a browser, but it never really matured.

685
00:43:02.920 --> 00:43:06.599
<v Speaker 3>And yes, he did create and implement JavaScript in ten days,

686
00:43:06.599 --> 00:43:09.239
<v Speaker 3>which are fondly known in the community is the ten

687
00:43:09.320 --> 00:43:13.480
<v Speaker 3>Days of Glory. But he said that JavaScript in a

688
00:43:13.480 --> 00:43:19.239
<v Speaker 3>lot of ways is more influenced by ARC than it

689
00:43:19.280 --> 00:43:25.719
<v Speaker 3>is by scheme. For those of you don't know, is

690
00:43:25.840 --> 00:43:31.239
<v Speaker 3>kind of like Pearl. It's a language for text processing.

691
00:43:32.760 --> 00:43:36.239
<v Speaker 6>Ah, somebody in Kernahan.

692
00:43:36.519 --> 00:43:41.360
<v Speaker 3>Correct, who's the W I forget. It's one of those

693
00:43:41.480 --> 00:43:45.320
<v Speaker 3>member Unix utilities that you you can pipe stuff in

694
00:43:45.360 --> 00:43:46.559
<v Speaker 3>and pipe stuff out.

695
00:43:47.119 --> 00:43:51.880
<v Speaker 6>Predecessor of Pearl, Yeah, exactly, predecessor of Ruby.

696
00:43:52.639 --> 00:43:54.760
<v Speaker 2>This is cool actually.

697
00:43:55.920 --> 00:43:59.719
<v Speaker 6>Away, By the way, the very first wiki ever put

698
00:43:59.760 --> 00:44:05.519
<v Speaker 6>on on on the Internet was a couple one hundred

699
00:44:05.559 --> 00:44:08.559
<v Speaker 6>lines of pearl written by Word Cunningham in the very

700
00:44:08.639 --> 00:44:10.400
<v Speaker 6>late nineties, just you.

701
00:44:10.360 --> 00:44:15.719
<v Speaker 3>Know, well CGI scripts. You know, people don't remember the

702
00:44:15.719 --> 00:44:19.239
<v Speaker 3>origins of the web, but the initial web servers were

703
00:44:19.239 --> 00:44:22.199
<v Speaker 3>mostly done in pearl because people didn't want to do

704
00:44:22.239 --> 00:44:23.480
<v Speaker 3>all that text processing in.

705
00:44:23.519 --> 00:44:27.760
<v Speaker 5>C Yeah, so I have another question. I'm going to

706
00:44:27.880 --> 00:44:30.480
<v Speaker 5>change this topic a little bit because you know, we

707
00:44:30.519 --> 00:44:34.559
<v Speaker 5>talked about how computers were initially kind of these calculating machines.

708
00:44:34.840 --> 00:44:38.199
<v Speaker 5>And if you go watch like the Hidden Figures movie, right,

709
00:44:38.679 --> 00:44:41.320
<v Speaker 5>they have these women that are called computers and right,

710
00:44:41.360 --> 00:44:44.360
<v Speaker 5>and their job was to do the math right, and

711
00:44:44.360 --> 00:44:46.400
<v Speaker 5>then they got this fancy computer that would do the

712
00:44:46.440 --> 00:44:48.360
<v Speaker 5>math right, and so then they were programming the computer.

713
00:44:48.840 --> 00:44:51.239
<v Speaker 5>But when when did computers kind of go from this

714
00:44:52.320 --> 00:44:56.039
<v Speaker 5>math machine to this sort of general purpose machine that

715
00:44:56.079 --> 00:44:59.360
<v Speaker 5>we kind of think of as a computer today.

716
00:45:00.800 --> 00:45:04.679
<v Speaker 6>That's a really interesting question, and there's two ways to

717
00:45:04.719 --> 00:45:07.480
<v Speaker 6>look at that. You could look at it from a

718
00:45:07.679 --> 00:45:10.719
<v Speaker 6>from the practical point of view, When did computers start

719
00:45:10.760 --> 00:45:13.480
<v Speaker 6>doing more than just math? When did they really start

720
00:45:13.519 --> 00:45:16.400
<v Speaker 6>doing more than just math? And the guy who comes

721
00:45:16.440 --> 00:45:20.039
<v Speaker 6>to mind there is Dykstra, because dystro is the guy

722
00:45:20.119 --> 00:45:24.079
<v Speaker 6>who was playing with graph theory. He hey came up

723
00:45:24.159 --> 00:45:30.639
<v Speaker 6>this clever way of computing the the best route to

724
00:45:30.760 --> 00:45:35.679
<v Speaker 6>go from one city in Norway to another, something like that,

725
00:45:35.760 --> 00:45:37.880
<v Speaker 6>and it was a demonstration. He wanted to show it,

726
00:45:38.360 --> 00:45:42.320
<v Speaker 6>show this demonstration to his superiors, and he came up

727
00:45:42.320 --> 00:45:45.400
<v Speaker 6>with this algorithm to do that. And that's a very

728
00:45:45.519 --> 00:45:51.360
<v Speaker 6>different kind of problem than computing the implosion wave in

729
00:45:51.400 --> 00:45:55.199
<v Speaker 6>a plutonium core, so that was a more practical one.

730
00:45:55.239 --> 00:45:57.199
<v Speaker 6>So from that point of view, you could lay this

731
00:45:57.320 --> 00:46:01.599
<v Speaker 6>at Dykster's door, and that would have been late fifties,

732
00:46:02.760 --> 00:46:05.639
<v Speaker 6>maybe the early sixties, but probably the late probably the

733
00:46:05.639 --> 00:46:12.679
<v Speaker 6>mid fifties actually. But it was Babbage, in his con

734
00:46:13.239 --> 00:46:17.119
<v Speaker 6>his contemplations of his analytical engine, the thing that never

735
00:46:17.159 --> 00:46:21.079
<v Speaker 6>got built, right, who started toying around with the idea

736
00:46:21.199 --> 00:46:24.679
<v Speaker 6>that this machine that he had in his mind that

737
00:46:24.800 --> 00:46:30.199
<v Speaker 6>had a thousand registers and a mill that could add, subtract, multiply,

738
00:46:30.280 --> 00:46:33.079
<v Speaker 6>and divide, and an electro mechanical no excuse me, a

739
00:46:33.159 --> 00:46:37.039
<v Speaker 6>mechanical bus that could move numbers from registers to the

740
00:46:37.079 --> 00:46:41.719
<v Speaker 6>mill and back again, right, and was programmable by punched

741
00:46:42.639 --> 00:46:46.840
<v Speaker 6>pieces of wood. You know, Jakrde loom style, right, these

742
00:46:47.039 --> 00:46:49.880
<v Speaker 6>big chunks of wood with holes drilled, and was how

743
00:46:49.920 --> 00:46:52.760
<v Speaker 6>you would punish them and give it or that's how

744
00:46:52.760 --> 00:46:55.719
<v Speaker 6>you'd program them, punish them good word bout that's how

745
00:46:55.719 --> 00:46:58.760
<v Speaker 6>you would programmed them. And in the midst of just

746
00:46:58.920 --> 00:47:04.440
<v Speaker 6>thinking about this Machie Babbage starts realizing that you could

747
00:47:04.480 --> 00:47:09.440
<v Speaker 6>write a program for this machine that could play chess.

748
00:47:10.000 --> 00:47:16.480
<v Speaker 6>He started working that out. So in that sense, Babbage

749
00:47:16.519 --> 00:47:19.159
<v Speaker 6>is the first guy to cross that boundary to get

750
00:47:19.159 --> 00:47:24.840
<v Speaker 6>out of the mathematical world and into the symbolic abstract world.

751
00:47:25.400 --> 00:47:27.440
<v Speaker 6>And he had a number of other ideas like that.

752
00:47:27.599 --> 00:47:30.920
<v Speaker 6>He actually put together a machine that could play tic tactout.

753
00:47:31.159 --> 00:47:34.400
<v Speaker 6>He actually built that one knots and crosses. Although you know,

754
00:47:34.480 --> 00:47:38.360
<v Speaker 6>simple machine to build, still he was he was probably

755
00:47:38.440 --> 00:47:41.000
<v Speaker 6>the guy that first had that concept.

756
00:47:43.440 --> 00:47:52.000
<v Speaker 3>That's amazing. I didn't consider that. There are several people

757
00:47:52.199 --> 00:47:54.960
<v Speaker 3>that you decided not to include in your book.

758
00:47:55.840 --> 00:47:56.000
<v Speaker 6>Uh.

759
00:47:56.440 --> 00:48:00.920
<v Speaker 3>Few that come to mind are Donald Kanouth or or Church.

760
00:48:02.960 --> 00:48:06.199
<v Speaker 3>You know, if we're looking more recently, maybe somebody like

761
00:48:06.519 --> 00:48:11.719
<v Speaker 3>Linus Travaldi's. So how did you decide to leave certain

762
00:48:11.719 --> 00:48:13.880
<v Speaker 3>people out?

763
00:48:14.599 --> 00:48:16.800
<v Speaker 6>Those are not conscious decisions. I did not have a

764
00:48:16.840 --> 00:48:21.039
<v Speaker 6>list of people to leave out. What I did have

765
00:48:21.400 --> 00:48:24.360
<v Speaker 6>was a hard cut off day. I wanted to. I

766
00:48:24.400 --> 00:48:27.679
<v Speaker 6>wanted it to be a history book about other people

767
00:48:29.639 --> 00:48:33.000
<v Speaker 6>right through the late sixties into the early seventies, and

768
00:48:33.000 --> 00:48:35.000
<v Speaker 6>then from that point, that's where part two of the

769
00:48:35.039 --> 00:48:39.440
<v Speaker 6>book begins. Then it starts to become autobiographical. From that

770
00:48:39.519 --> 00:48:42.599
<v Speaker 6>point on, I can relate what was happening in the

771
00:48:42.679 --> 00:48:47.960
<v Speaker 6>industry as an eyewitness, as a participant. So I shifted

772
00:48:48.000 --> 00:48:53.360
<v Speaker 6>years entirely and just started talking about my experiences through

773
00:48:53.440 --> 00:48:56.199
<v Speaker 6>the next thirty years, thirty or forty whatever it is,

774
00:48:56.480 --> 00:48:59.880
<v Speaker 6>some number of years, and I described the industry from

775
00:49:00.119 --> 00:49:03.360
<v Speaker 6>a from an insider's point of view at that point.

776
00:49:04.800 --> 00:49:06.920
<v Speaker 6>So the hard cut off date was one of the

777
00:49:06.960 --> 00:49:10.440
<v Speaker 6>reasons that you can't put that I didn't put Linus

778
00:49:10.480 --> 00:49:13.920
<v Speaker 6>in there. For example, people have complained a lot that

779
00:49:13.960 --> 00:49:17.039
<v Speaker 6>I should have put Margaret Hamilton in there, right, and

780
00:49:17.079 --> 00:49:19.039
<v Speaker 6>I would have loved to. I actually bought a whole

781
00:49:19.039 --> 00:49:22.360
<v Speaker 6>bunch of books on the Apollo program to read about that,

782
00:49:22.400 --> 00:49:26.320
<v Speaker 6>but it turns out there's not a lot written deeply

783
00:49:27.360 --> 00:49:31.639
<v Speaker 6>about the stories there, or if there is, I missed them.

784
00:49:32.320 --> 00:49:34.360
<v Speaker 6>So you know, I went to look for that, but

785
00:49:34.480 --> 00:49:37.239
<v Speaker 6>didn't find it. Limited amount of time. I thought, okay,

786
00:49:37.760 --> 00:49:40.199
<v Speaker 6>I can probably skip that one. There's a number of

787
00:49:40.239 --> 00:49:42.440
<v Speaker 6>other people that I should have written about if i'd

788
00:49:42.480 --> 00:49:45.000
<v Speaker 6>had the space, Like John McCarthy, I would have loved

789
00:49:45.079 --> 00:49:47.880
<v Speaker 6>to have told an in depth story of Lisp. That

790
00:49:47.920 --> 00:49:50.760
<v Speaker 6>would have been a great story to tell. Just you know,

791
00:49:51.119 --> 00:49:53.880
<v Speaker 6>ran out of time, ran out of materials.

792
00:49:54.599 --> 00:49:59.280
<v Speaker 3>And the Mother of Old demos, I'm sorry, Engelbert and

793
00:49:59.320 --> 00:50:01.280
<v Speaker 3>the Mother of All demos.

794
00:50:00.960 --> 00:50:02.000
<v Speaker 6>That's a story I don't know.

795
00:50:03.800 --> 00:50:06.840
<v Speaker 3>Check out the video for the Mother of All demos. Basically,

796
00:50:07.199 --> 00:50:11.119
<v Speaker 3>it's you can find it on YouTube. Let me do

797
00:50:11.199 --> 00:50:12.400
<v Speaker 3>a quick search.

798
00:50:13.639 --> 00:50:16.079
<v Speaker 6>Demos sounds good.

799
00:50:17.000 --> 00:50:21.000
<v Speaker 3>Yeah, it's still considered to be the greatest demo of

800
00:50:21.039 --> 00:50:21.719
<v Speaker 3>all time.

801
00:50:22.679 --> 00:50:24.880
<v Speaker 2>It's like, I see a couple of them here. When

802
00:50:24.920 --> 00:50:26.199
<v Speaker 2>of them was like an hour and forty minutes.

803
00:50:26.960 --> 00:50:31.480
<v Speaker 3>Yeah, it's pretty long. Basically, basically, while everybody was doing

804
00:50:31.559 --> 00:50:35.360
<v Speaker 3>punch cards. So this this happened, let me do it.

805
00:50:35.440 --> 00:50:38.960
<v Speaker 3>I'm looking at Wikipedia. It happened in sixty eight, so

806
00:50:39.000 --> 00:50:43.840
<v Speaker 3>everybody was still doing punch card. This guy comes along

807
00:50:43.880 --> 00:50:46.519
<v Speaker 3>and does well. Guy, he was a professor. He does

808
00:50:46.559 --> 00:50:49.119
<v Speaker 3>a demo. I think it was Professor a ninety minute

809
00:50:49.159 --> 00:50:56.440
<v Speaker 3>demo live demonstration showing stuff like Windows, a mouse, Dragon, drop,

810
00:50:56.719 --> 00:51:02.920
<v Speaker 3>copy paste, hyperlinks sixty eight.

811
00:51:03.679 --> 00:51:08.320
<v Speaker 6>Yeah, well okay, it's where Alan k got the idea. Huh.

812
00:51:08.360 --> 00:51:11.320
<v Speaker 3>It's pretty nuts. And he does this in this kind

813
00:51:11.360 --> 00:51:16.480
<v Speaker 3>of dead pan voice. Uh, and you know he's wearing

814
00:51:16.519 --> 00:51:19.119
<v Speaker 3>a suit and tie, and it's he's he didn't do

815
00:51:19.199 --> 00:51:24.440
<v Speaker 3>it for you know it. It wasn't like a CEO

816
00:51:24.519 --> 00:51:28.000
<v Speaker 3>talking up there that this is like, you know, academics

817
00:51:28.480 --> 00:51:32.880
<v Speaker 3>talking about stuff. So it's it's but it's I I

818
00:51:33.000 --> 00:51:36.159
<v Speaker 3>highly recommend for our listeners or for you if you're

819
00:51:36.199 --> 00:51:38.599
<v Speaker 3>not familiar with it, to go to YouTube and just

820
00:51:38.880 --> 00:51:40.639
<v Speaker 3>you know, search for the Mother of All demos and

821
00:51:40.880 --> 00:51:41.559
<v Speaker 3>watch the video.

822
00:51:42.360 --> 00:51:43.400
<v Speaker 2>Yeah, it's pretty amazing.

823
00:51:43.400 --> 00:51:53.480
<v Speaker 8>Great, So you said that the second half is kind

824
00:51:53.480 --> 00:51:54.639
<v Speaker 8>of autobiographical.

825
00:51:54.679 --> 00:51:57.639
<v Speaker 3>When did you enter the industry?

826
00:51:58.440 --> 00:52:05.280
<v Speaker 6>Uh? I got my first job as a programmer at

827
00:52:05.920 --> 00:52:09.719
<v Speaker 6>age It was either sixteen or seventeen, I can't remember exactly.

828
00:52:10.360 --> 00:52:12.880
<v Speaker 6>And it was a summer job and it was very temporary.

829
00:52:13.000 --> 00:52:16.079
<v Speaker 6>And my father had actually gone to this company who

830
00:52:16.159 --> 00:52:18.280
<v Speaker 6>was just a few miles down the road, and had

831
00:52:18.320 --> 00:52:20.239
<v Speaker 6>walked in there and said, you will hire my son.

832
00:52:20.320 --> 00:52:23.599
<v Speaker 6>That was the kind of person my father was, and

833
00:52:23.840 --> 00:52:26.760
<v Speaker 6>I found myself working at this place, and it was

834
00:52:26.840 --> 00:52:28.960
<v Speaker 6>like two weeks, two or three weeks that I was there,

835
00:52:29.000 --> 00:52:31.000
<v Speaker 6>and I wrote a little bit of assembly language under

836
00:52:31.039 --> 00:52:37.599
<v Speaker 6>the watchful eye of my supervisor, got one little program working,

837
00:52:37.679 --> 00:52:39.480
<v Speaker 6>and then he said, well, thank you very much, Bob,

838
00:52:39.519 --> 00:52:41.639
<v Speaker 6>and now your time here is done.

839
00:52:42.199 --> 00:52:43.639
<v Speaker 3>When was that they find my dad.

840
00:52:43.639 --> 00:52:47.000
<v Speaker 6>That I was. I think I was sixteen, That would

841
00:52:47.000 --> 00:52:49.000
<v Speaker 6>have been I was born in fifty two, so that

842
00:52:49.000 --> 00:52:54.079
<v Speaker 6>would have been sixty eight ish something like that. I

843
00:52:54.119 --> 00:52:55.840
<v Speaker 6>went back to that company like a year and a

844
00:52:55.840 --> 00:52:59.960
<v Speaker 6>half later, and for a while I operated offline printers,

845
00:53:01.199 --> 00:53:05.639
<v Speaker 6>printing junk mail on third shift, and then rapidly became

846
00:53:05.679 --> 00:53:08.400
<v Speaker 6>a programmer. I think I spent about six months doing

847
00:53:08.480 --> 00:53:12.679
<v Speaker 6>the offline printers, but knew some guys who were programmers

848
00:53:12.679 --> 00:53:15.800
<v Speaker 6>and talked to them and convinced them that I probably

849
00:53:15.840 --> 00:53:18.440
<v Speaker 6>could be could be writing code. And from that point

850
00:53:18.480 --> 00:53:20.760
<v Speaker 6>I was writing a little bit of co ball, which

851
00:53:20.800 --> 00:53:23.719
<v Speaker 6>I hated, and then from then on it was mini

852
00:53:23.719 --> 00:53:27.280
<v Speaker 6>computer assembly language and a lot of it. So that

853
00:53:27.360 --> 00:53:30.039
<v Speaker 6>was that's when I got my start. So I guess

854
00:53:30.079 --> 00:53:36.159
<v Speaker 6>you'd have to say, really, my career began in the

855
00:53:36.559 --> 00:53:39.880
<v Speaker 6>very very early nineteen seventy maybe late sixty nine.

856
00:53:41.760 --> 00:53:45.679
<v Speaker 3>And did you also go to university or college.

857
00:53:45.440 --> 00:53:48.719
<v Speaker 6>Or oh no, No, this was like the Vietnam War era,

858
00:53:48.880 --> 00:53:52.760
<v Speaker 6>and the universities were all going nuts, and my family

859
00:53:52.800 --> 00:53:56.079
<v Speaker 6>wasn't really very well off. And in the meantime I

860
00:53:56.199 --> 00:53:59.800
<v Speaker 6>had devoured books on cobol, on PL one and four

861
00:54:00.119 --> 00:54:03.840
<v Speaker 6>RAN and PDP eight assembly language. I was a real

862
00:54:03.960 --> 00:54:06.480
<v Speaker 6>computer nerd still am.

863
00:54:07.880 --> 00:54:11.000
<v Speaker 3>So you're the original self taught developer.

864
00:54:11.400 --> 00:54:15.159
<v Speaker 6>Well, probably not one of them. I mean self taught.

865
00:54:15.199 --> 00:54:19.840
<v Speaker 6>I think Grace Opera was self taught. But but one.

866
00:54:19.679 --> 00:54:22.840
<v Speaker 3>Of the she did come from academia, I believe she did.

867
00:54:22.880 --> 00:54:28.000
<v Speaker 6>Yeah, she was. She was a mathematics professor at I

868
00:54:28.039 --> 00:54:29.679
<v Speaker 6>can't think, Vasser, I can't remember.

869
00:54:30.000 --> 00:54:34.880
<v Speaker 3>Look, I have to say that. You know, today CS

870
00:54:34.920 --> 00:54:38.360
<v Speaker 3>departments are departments on their own, But when I studied

871
00:54:38.360 --> 00:54:42.239
<v Speaker 3>in the university, the CS department did not exist. It

872
00:54:42.320 --> 00:54:47.239
<v Speaker 3>was part of the math department. Yeah, I mean came

873
00:54:48.079 --> 00:54:49.119
<v Speaker 3>a couple of years later.

874
00:54:49.519 --> 00:54:52.000
<v Speaker 2>Yeah, the department.

875
00:54:53.840 --> 00:54:56.840
<v Speaker 6>If you wanted to be a programmer. In nineteen sixty nine,

876
00:54:58.440 --> 00:55:00.440
<v Speaker 6>there weren't a lot of courses you could do ache

877
00:55:01.079 --> 00:55:05.360
<v Speaker 6>and access to computers was very difficult, and that was

878
00:55:05.400 --> 00:55:07.519
<v Speaker 6>one of the problems that Kemedy was trying to solve.

879
00:55:07.599 --> 00:55:11.840
<v Speaker 6>Kemedy was at oh Geez, one of the colleges out there,

880
00:55:11.840 --> 00:55:15.559
<v Speaker 6>I can't remember where it is on the East coast,

881
00:55:15.679 --> 00:55:20.039
<v Speaker 6>and you know, access to computers was a really big problem.

882
00:55:20.119 --> 00:55:26.519
<v Speaker 6>They eventually got time on one of the computers at

883
00:55:26.599 --> 00:55:32.199
<v Speaker 6>M I T. And they would they would do it

884
00:55:32.320 --> 00:55:37.199
<v Speaker 6>by schlepping punched cards several miles. One of the guys

885
00:55:37.239 --> 00:55:39.719
<v Speaker 6>would get on a train and haul punch cards up

886
00:55:39.760 --> 00:55:41.559
<v Speaker 6>there and run the jobs and then come back with

887
00:55:41.639 --> 00:55:44.719
<v Speaker 6>the listings. And so if you were a student, you

888
00:55:44.760 --> 00:55:48.079
<v Speaker 6>would submit a program and maybe a week later you

889
00:55:48.199 --> 00:55:51.440
<v Speaker 6>got a listing. And Kemedy wanted to solve that problem,

890
00:55:52.480 --> 00:55:54.960
<v Speaker 6>and he bought a little mini computer. It was a

891
00:55:55.079 --> 00:55:59.000
<v Speaker 6>really dinky little thing, and maybe he had six students

892
00:55:59.039 --> 00:56:02.039
<v Speaker 6>that really learned how to do it very well. And

893
00:56:02.079 --> 00:56:04.840
<v Speaker 6>then it occurred to him that he needed a bigger machine,

894
00:56:05.199 --> 00:56:10.840
<v Speaker 6>and he wrangled General Electric to give him, for a

895
00:56:10.960 --> 00:56:15.119
<v Speaker 6>very very low price, a couple of big honk and

896
00:56:15.239 --> 00:56:18.400
<v Speaker 6>ge machines. I actually worked on on a machine like

897
00:56:18.480 --> 00:56:21.559
<v Speaker 6>that at about that time, at that at that same

898
00:56:21.559 --> 00:56:27.559
<v Speaker 6>company General General Electric Data at thirty, really really big

899
00:56:27.599 --> 00:56:33.719
<v Speaker 6>in those days, big machines, and he and his buddy

900
00:56:35.039 --> 00:56:43.239
<v Speaker 6>and a few undergrads wrote in assembly language, a time

901
00:56:43.280 --> 00:56:48.840
<v Speaker 6>sharing system and a basic compiler in about six months

902
00:56:48.880 --> 00:56:52.400
<v Speaker 6>and turned the student body loose. They had a whole

903
00:56:52.400 --> 00:56:57.719
<v Speaker 6>bunch of teletypes that they just scattered around the school Dartmouth.

904
00:56:57.840 --> 00:57:03.440
<v Speaker 6>They scattered around Dartmouth, and the students could suddenly find

905
00:57:03.440 --> 00:57:08.440
<v Speaker 6>themselves writing code and seeing it execute in the same

906
00:57:08.480 --> 00:57:12.960
<v Speaker 6>session within minutes. And what did the students do? They

907
00:57:12.960 --> 00:57:13.519
<v Speaker 6>wrote games?

908
00:57:16.639 --> 00:57:21.079
<v Speaker 3>Well, And you did bring up the fact that that

909
00:57:22.000 --> 00:57:26.519
<v Speaker 3>Ritchie and Thompson and Richie created the uniques and c

910
00:57:26.760 --> 00:57:29.679
<v Speaker 3>because they wanted to play games.

911
00:57:29.960 --> 00:57:30.559
<v Speaker 6>Space war.

912
00:57:31.599 --> 00:57:35.079
<v Speaker 3>Yeah. By the way, one of the things that I'm

913
00:57:35.119 --> 00:57:38.679
<v Speaker 3>really sad about is I remember, in the nineties or

914
00:57:38.719 --> 00:57:41.760
<v Speaker 3>something get a copy of the I Triple E Spectrum

915
00:57:41.800 --> 00:57:47.280
<v Speaker 3>magazine talking about the origins of the video game industry

916
00:57:47.360 --> 00:57:50.800
<v Speaker 3>Atari and whatnot, and unfortunately I did not keep it.

917
00:57:52.320 --> 00:57:55.920
<v Speaker 3>And some crazy stories there as well. I mean, the

918
00:57:56.199 --> 00:57:59.239
<v Speaker 3>original Atari's had one k of RAM, which you know,

919
00:57:59.360 --> 00:58:03.400
<v Speaker 3>think about that the next time you're writing your five megabyte,

920
00:58:03.519 --> 00:58:09.039
<v Speaker 3>your thirty megabyte web application that does absolutely nothing. They

921
00:58:09.159 --> 00:58:10.920
<v Speaker 3>wrote Space Invaders in one K.

922
00:58:12.679 --> 00:58:14.039
<v Speaker 6>You got a bunch of guys out there on the

923
00:58:14.079 --> 00:58:15.800
<v Speaker 6>net going okay, Boomer.

924
00:58:18.320 --> 00:58:22.079
<v Speaker 3>I don't deny it.

925
00:58:22.239 --> 00:58:24.440
<v Speaker 2>I remember playing games on the Atari. I mean I

926
00:58:24.559 --> 00:58:25.840
<v Speaker 2>was like six.

927
00:58:27.719 --> 00:58:30.000
<v Speaker 3>Well, I can tell you a funny story is that

928
00:58:30.159 --> 00:58:34.800
<v Speaker 3>it was the device was limited to four colors, and

929
00:58:35.079 --> 00:58:37.559
<v Speaker 3>one of the games they wanted to have eight colors.

930
00:58:37.679 --> 00:58:39.760
<v Speaker 3>So they want to have four different colors at the

931
00:58:39.760 --> 00:58:42.280
<v Speaker 3>top and four different colors at the bottom. So what

932
00:58:42.320 --> 00:58:45.559
<v Speaker 3>they did is they actually synchronized the game loop with

933
00:58:45.719 --> 00:58:49.559
<v Speaker 3>the television refresh, and they would switch the palette of

934
00:58:49.599 --> 00:58:54.559
<v Speaker 3>the colors mid screen so that that way they could

935
00:58:54.599 --> 00:58:57.079
<v Speaker 3>get four different colors at you know, the two halves

936
00:58:57.079 --> 00:58:58.920
<v Speaker 3>of the upper part of the screen and the lower

937
00:58:58.920 --> 00:58:59.559
<v Speaker 3>part of the screen.

938
00:59:00.079 --> 00:59:02.280
<v Speaker 6>There was a lot of that kind of Shenanigan's going on.

939
00:59:05.280 --> 00:59:10.760
<v Speaker 4>I love video game podcasts like and and the YouTube

940
00:59:10.800 --> 00:59:15.880
<v Speaker 4>channels like Modern Vintage Gamer and Video Game Historian doesn't

941
00:59:15.880 --> 00:59:19.440
<v Speaker 4>really do much anymore, but the stuff that's there is great.

942
00:59:19.519 --> 00:59:22.239
<v Speaker 4>I love learning about all those tricks that I think

943
00:59:22.320 --> 00:59:26.199
<v Speaker 4>Modern Vintage Gamer just did one on. I think it

944
00:59:26.280 --> 00:59:30.239
<v Speaker 4>was the Nintendo that does that that that where they're

945
00:59:30.239 --> 00:59:34.360
<v Speaker 4>doing that where they're swapping on the chip they're swapping

946
00:59:34.639 --> 00:59:38.599
<v Speaker 4>what's being presented to the thing that's reading it in

947
00:59:38.679 --> 00:59:41.400
<v Speaker 4>real time with a little microprocessor so that they can

948
00:59:41.440 --> 00:59:42.480
<v Speaker 4>get two color ballads.

949
00:59:45.480 --> 00:59:49.800
<v Speaker 3>Yeah, they can't afford the garbage collection in the middle

950
00:59:49.840 --> 00:59:50.400
<v Speaker 3>of their loop.

951
00:59:52.239 --> 00:59:55.719
<v Speaker 6>It's all written an assembly language, all right.

952
00:59:55.760 --> 00:59:56.679
<v Speaker 2>Well, well.

953
00:59:58.599 --> 01:00:01.800
<v Speaker 3>Yeah, just as an and that's interesting aside, we were talking,

954
01:00:01.800 --> 01:00:05.440
<v Speaker 3>we mentioned lisp. Lisp in the I believe fifties or

955
01:00:05.480 --> 01:00:08.400
<v Speaker 3>sixties I think, introduced the concept of garbage collection.

956
01:00:08.559 --> 01:00:15.039
<v Speaker 6>Yeah, that's true. Yeah, Nigarden and dol needed garbage collection

957
01:00:15.159 --> 01:00:19.480
<v Speaker 6>in their in their Monty Carlo compiler, and they tried

958
01:00:19.480 --> 01:00:21.679
<v Speaker 6>to write their own and then eventually they bailed out

959
01:00:21.760 --> 01:00:25.920
<v Speaker 6>and and borrowed McCarthy's the concept of McCarthy's garbage collector,

960
01:00:26.159 --> 01:00:28.559
<v Speaker 6>and that's what they put into simula for a while.

961
01:00:29.800 --> 01:00:31.599
<v Speaker 5>All Right, I'm gonna push his picks because I've got

962
01:00:31.639 --> 01:00:35.840
<v Speaker 5>to go. I have I have a call in ten minutes.

963
01:00:36.079 --> 01:00:39.360
<v Speaker 3>Okay, I could talk history forever, I know.

964
01:00:39.480 --> 01:00:42.760
<v Speaker 6>Right, I know, it's the it's the uh.

965
01:00:44.920 --> 01:00:48.320
<v Speaker 5>Glory ship pop back when clean Coders comes out, and

966
01:00:48.320 --> 01:00:50.199
<v Speaker 5>we'll see when you get them on Ruby Rogues and

967
01:00:50.800 --> 01:00:51.920
<v Speaker 5>go into more of this stuff.

968
01:00:53.159 --> 01:00:55.079
<v Speaker 2>But yeah, let's do picks, and let's be.

969
01:00:55.079 --> 01:00:57.159
<v Speaker 5>Fast because I want to be able to do them,

970
01:00:57.239 --> 01:00:58.719
<v Speaker 5>so AJ you want to start us.

971
01:00:58.639 --> 01:01:03.280
<v Speaker 4>The picks, Yeah, I'll just pick a short one. No, no,

972
01:01:03.400 --> 01:01:08.760
<v Speaker 4>I can't do that, But the Expanse. I finished book two,

973
01:01:09.519 --> 01:01:12.519
<v Speaker 4>and I just have to say, so far between book

974
01:01:12.599 --> 01:01:17.119
<v Speaker 4>one and book two, the book is like, the book

975
01:01:17.159 --> 01:01:18.159
<v Speaker 4>and the TV show are.

976
01:01:18.199 --> 01:01:19.639
<v Speaker 2>Very very very similar.

977
01:01:20.199 --> 01:01:22.400
<v Speaker 4>If I were to describe the plot of them, they're

978
01:01:22.480 --> 01:01:26.000
<v Speaker 4>pretty much identical. But the book is so much better

979
01:01:26.039 --> 01:01:30.000
<v Speaker 4>because in the TV show they cut out like critically

980
01:01:30.039 --> 01:01:34.480
<v Speaker 4>important elements that are absolutely essential for you to understand

981
01:01:35.360 --> 01:01:39.480
<v Speaker 4>why they transitioned from what seemed like two completely different

982
01:01:39.519 --> 01:01:42.679
<v Speaker 4>TV shows with the same actors between season one and

983
01:01:42.719 --> 01:01:45.360
<v Speaker 4>season two, where it's like, okay, these are not related

984
01:01:45.400 --> 01:01:46.840
<v Speaker 4>other than it's the same people.

985
01:01:47.159 --> 01:01:47.800
<v Speaker 6>There's like a.

986
01:01:47.760 --> 01:01:52.400
<v Speaker 4>Few key pieces that if you know, it's like, oh okay,

987
01:01:52.679 --> 01:01:56.840
<v Speaker 4>now I can have suspension of disbelief again. And then likewise,

988
01:01:57.079 --> 01:01:59.639
<v Speaker 4>there's so much stuff that they added into the TV

989
01:01:59.719 --> 01:02:03.039
<v Speaker 4>show that's completely irrelevant and just draws out like a

990
01:02:03.039 --> 01:02:08.360
<v Speaker 4>couple extra episodes. Man, yeah, so if if the Expanse

991
01:02:08.360 --> 01:02:11.280
<v Speaker 4>didn't hit for you on the TV show, but you

992
01:02:11.800 --> 01:02:15.480
<v Speaker 4>like the first the first season and you want to

993
01:02:15.480 --> 01:02:18.559
<v Speaker 4>know where it goes. I think I think the books

994
01:02:18.559 --> 01:02:21.239
<v Speaker 4>are better, Chuck, You'll have to chime into, you know,

995
01:02:21.440 --> 01:02:24.159
<v Speaker 4>if the is the ending satisfying after what is it

996
01:02:24.280 --> 01:02:26.400
<v Speaker 4>six books or nine books or something.

997
01:02:26.440 --> 01:02:28.360
<v Speaker 2>But they don't. They don't do all the books in

998
01:02:28.400 --> 01:02:30.480
<v Speaker 2>the TV series, so.

999
01:02:30.519 --> 01:02:33.440
<v Speaker 4>Yeah, I think they were they cut out pretty early.

1000
01:02:33.840 --> 01:02:37.039
<v Speaker 5>The books are very, very good, way better than the

1001
01:02:37.840 --> 01:02:39.639
<v Speaker 5>TV shows. I had the benefit of having read the

1002
01:02:39.639 --> 01:02:46.199
<v Speaker 5>books before I watched the TV show. There's a little

1003
01:02:46.239 --> 01:02:50.039
<v Speaker 5>bit of a gap because the sci fi folks dropped

1004
01:02:50.039 --> 01:02:53.920
<v Speaker 5>the show and then Amazon Prime picked it up and

1005
01:02:54.000 --> 01:02:55.920
<v Speaker 5>so there was like a year where they didn't record.

1006
01:02:55.960 --> 01:02:58.639
<v Speaker 2>But yeah, anyway, it's the TV show.

1007
01:02:58.440 --> 01:03:01.440
<v Speaker 5>Is terrific, but the books or and yes, they do

1008
01:03:01.920 --> 01:03:04.840
<v Speaker 5>stay pretty pretty close to the books.

1009
01:03:06.000 --> 01:03:09.360
<v Speaker 4>So yeah, yeah, so keep things short. That's that's all

1010
01:03:09.400 --> 01:03:12.000
<v Speaker 4>I'll pick today. It's just got finished for that book,

1011
01:03:12.360 --> 01:03:14.960
<v Speaker 4>and I liked it. And I do have to say,

1012
01:03:14.960 --> 01:03:17.760
<v Speaker 4>Avola Sara is worse in the book than in the

1013
01:03:17.800 --> 01:03:19.960
<v Speaker 4>TV show. Previously, I complain all she does in the

1014
01:03:19.960 --> 01:03:22.840
<v Speaker 4>TV show was come in, say the F word a

1015
01:03:22.880 --> 01:03:26.639
<v Speaker 4>couple of times and leave. Yeah, she's the same in

1016
01:03:26.679 --> 01:03:27.719
<v Speaker 4>the book, like.

1017
01:03:27.760 --> 01:03:29.280
<v Speaker 2>Better in there, there's the books.

1018
01:03:29.320 --> 01:03:29.519
<v Speaker 3>Go on.

1019
01:03:30.599 --> 01:03:33.039
<v Speaker 2>Okay, Dan, what are your picks?

1020
01:03:33.440 --> 01:03:36.039
<v Speaker 3>Yeah? So I called Dibbs actually on this pick when

1021
01:03:36.079 --> 01:03:40.239
<v Speaker 3>it came along, because it's so great and it's kind

1022
01:03:40.280 --> 01:03:42.079
<v Speaker 3>of related to some of the stuff were we talk

1023
01:03:42.119 --> 01:03:46.719
<v Speaker 3>about today. So it turns out that this guy called

1024
01:03:46.800 --> 01:03:52.320
<v Speaker 3>Dmitri Mitropoulos I hope I pronounced his name correctly implemented

1025
01:03:52.599 --> 01:03:58.880
<v Speaker 3>the game Doom in the typescript type system. Because, as

1026
01:03:58.920 --> 01:04:03.800
<v Speaker 3>we all know, the typescript type system is touring complete.

1027
01:04:04.440 --> 01:04:07.679
<v Speaker 3>It's effectively a dialect of Lisp, I think in a

1028
01:04:07.679 --> 01:04:12.320
<v Speaker 3>certain way, because you can implement loops with recursion and

1029
01:04:12.519 --> 01:04:18.119
<v Speaker 3>you also do case if statements, you know, along deseignes.

1030
01:04:18.840 --> 01:04:24.840
<v Speaker 3>So he basically managed to implement something like a compiler

1031
01:04:25.119 --> 01:04:29.239
<v Speaker 3>that's something that takes I think ll VM code and

1032
01:04:29.480 --> 01:04:33.000
<v Speaker 3>basically translates it into typescript types. It took him all

1033
01:04:33.039 --> 01:04:36.199
<v Speaker 3>of a year of working ten hour days to implement,

1034
01:04:37.079 --> 01:04:39.599
<v Speaker 3>and I think he has it running at something like

1035
01:04:39.760 --> 01:04:47.159
<v Speaker 3>a frame a week. But it works, and it's the

1036
01:04:47.199 --> 01:04:51.039
<v Speaker 3>most insane thing I've ever seen. He put a video up,

1037
01:04:51.079 --> 01:04:53.800
<v Speaker 3>he said he'll put two more one that he talks

1038
01:04:53.840 --> 01:04:57.480
<v Speaker 3>about you know, he'll go into the details of how

1039
01:04:57.519 --> 01:05:00.119
<v Speaker 3>he actually implemented it. And I'm really trying to to

1040
01:05:00.119 --> 01:05:02.639
<v Speaker 3>get him to come on the show. If you're listening,

1041
01:05:02.679 --> 01:05:07.000
<v Speaker 3>please do. I've reached out to him and I hope

1042
01:05:07.039 --> 01:05:10.559
<v Speaker 3>that I'll be successful. You know, he did something like

1043
01:05:10.800 --> 01:05:14.239
<v Speaker 3>there's something like a trillion types in the code, something

1044
01:05:14.320 --> 01:05:18.280
<v Speaker 3>like that. He had to remove all the limits out

1045
01:05:18.320 --> 01:05:24.000
<v Speaker 3>of the Typescript compiler source code.

1046
01:05:24.719 --> 01:05:27.880
<v Speaker 6>Wow, I wish I worthwhile.

1047
01:05:29.400 --> 01:05:31.440
<v Speaker 2>You know, you're going to change humanity.

1048
01:05:32.880 --> 01:05:39.719
<v Speaker 4>This was very different from the the floppy Bird implementation. Well,

1049
01:05:39.760 --> 01:05:42.199
<v Speaker 4>the floppy Bird was a was an interpreter and this

1050
01:05:42.360 --> 01:05:43.719
<v Speaker 4>is LVM.

1051
01:05:43.960 --> 01:05:46.599
<v Speaker 3>Yeah, something wrong if iind just correctly. Like I said,

1052
01:05:46.599 --> 01:05:48.119
<v Speaker 3>we really need to get him on the show. But

1053
01:05:49.000 --> 01:05:52.480
<v Speaker 3>you know, the funny thing though, it's we talked about

1054
01:05:52.840 --> 01:05:56.239
<v Speaker 3>is the fact that, yeah, the type system in certain

1055
01:05:56.280 --> 01:06:01.000
<v Speaker 3>programming languages, you know, Typescript also a C plus plus

1056
01:06:01.039 --> 01:06:03.639
<v Speaker 3>comes to mind. I think even Java to an extent

1057
01:06:04.360 --> 01:06:07.639
<v Speaker 3>is effectively a touring complete programming language in and off

1058
01:06:07.639 --> 01:06:14.360
<v Speaker 3>its own because you can implement recushion and with halting conditions.

1059
01:06:14.920 --> 01:06:20.239
<v Speaker 3>So yeah, it's pretty nuts. Anyway, you can't top that,

1060
01:06:20.440 --> 01:06:21.840
<v Speaker 3>and that would be my pick for today.

1061
01:06:21.920 --> 01:06:25.599
<v Speaker 2>I can't top that. I'm gonna throw out two picks

1062
01:06:25.639 --> 01:06:27.519
<v Speaker 2>really quick. I'm gonna do a card game.

1063
01:06:27.599 --> 01:06:29.880
<v Speaker 5>I've picked it before, I've picked it recently, but it's

1064
01:06:29.880 --> 01:06:31.960
<v Speaker 5>the one that I've been playing the most lately. It

1065
01:06:32.079 --> 01:06:37.039
<v Speaker 5>is The Gang and it's basically cooperative Texas holden poker.

1066
01:06:38.119 --> 01:06:42.559
<v Speaker 2>And so what you all get dealt your pocket cards?

1067
01:06:43.280 --> 01:06:45.599
<v Speaker 5>You do, you know, you flip the river and the

1068
01:06:45.639 --> 01:06:49.320
<v Speaker 5>flip and the flop right, and at each stage in

1069
01:06:49.360 --> 01:06:52.760
<v Speaker 5>the game, there are chips for each there's one for

1070
01:06:52.840 --> 01:06:56.800
<v Speaker 5>each player, you know, one up to however many there are.

1071
01:06:57.159 --> 01:06:59.320
<v Speaker 5>Whoever thinks they have the winning hand will grab the

1072
01:06:59.320 --> 01:07:04.559
<v Speaker 5>top one right. Sometimes you fight over the chips and

1073
01:07:04.599 --> 01:07:07.119
<v Speaker 5>then you know, you go around and eventually, once you

1074
01:07:07.239 --> 01:07:09.679
<v Speaker 5>settle on the chips, then you do the flop or

1075
01:07:09.719 --> 01:07:12.480
<v Speaker 5>the river and you you know, so you get three

1076
01:07:12.519 --> 01:07:15.239
<v Speaker 5>more cards and then right and so then.

1077
01:07:15.480 --> 01:07:17.960
<v Speaker 2>The the chips change hands.

1078
01:07:17.639 --> 01:07:20.920
<v Speaker 5>Because right now you have a pair or two pair

1079
01:07:21.119 --> 01:07:25.199
<v Speaker 5>or three of a kind or whatever. And anyway, it's

1080
01:07:25.239 --> 01:07:28.199
<v Speaker 5>it's super fun. So you know, it takes about twenty

1081
01:07:28.239 --> 01:07:29.760
<v Speaker 5>minutes to play a game. I played it with four

1082
01:07:29.760 --> 01:07:32.119
<v Speaker 5>and five people. It gets a little harder when there

1083
01:07:32.119 --> 01:07:34.840
<v Speaker 5>are more people, but it's totally fun. So I'm gonna

1084
01:07:34.880 --> 01:07:36.480
<v Speaker 5>pick that. And then the other one is I've been

1085
01:07:36.480 --> 01:07:40.840
<v Speaker 5>watching the latest season of Reacher. I watch a lot

1086
01:07:40.880 --> 01:07:44.679
<v Speaker 5>of these kind of action kind of shows. I really

1087
01:07:44.760 --> 01:07:47.440
<v Speaker 5>enjoy them. I have to say, the plots aren't always

1088
01:07:47.559 --> 01:07:50.400
<v Speaker 5>that creative, right, they have.

1089
01:07:50.360 --> 01:07:52.039
<v Speaker 3>A lot of the same they're not supposed to be.

1090
01:07:52.519 --> 01:07:55.280
<v Speaker 5>But you know, I can just you know, I can

1091
01:07:55.320 --> 01:07:57.880
<v Speaker 5>just sit and vedge and turn my brain off. So anyway,

1092
01:07:57.880 --> 01:07:59.960
<v Speaker 5>I'm enjoying that. There are like four episodes out, man,

1093
01:08:00.199 --> 01:08:02.159
<v Speaker 5>so reach here on Amazon Prime.

1094
01:08:03.239 --> 01:08:04.440
<v Speaker 2>Bob, what are your picks?

1095
01:08:05.360 --> 01:08:08.880
<v Speaker 6>In the spirit of ancient history, there are a couple

1096
01:08:08.920 --> 01:08:12.880
<v Speaker 6>of science fiction books that are worthy of a good,

1097
01:08:13.000 --> 01:08:16.520
<v Speaker 6>solid read, even though they're very old. The books that

1098
01:08:16.600 --> 01:08:20.079
<v Speaker 6>come to mind they're one hundred years old, are When

1099
01:08:20.159 --> 01:08:25.359
<v Speaker 6>Worlds Collide and the sequel After World's Collide. And don't

1100
01:08:25.399 --> 01:08:29.399
<v Speaker 6>get confused by Velikovsky's Worlds in Collision. That's not the

1101
01:08:29.439 --> 01:08:32.880
<v Speaker 6>books that I'm talking about. When World's Collide and Afterworld's

1102
01:08:32.880 --> 01:08:37.000
<v Speaker 6>Collide wonderful stories written in the I think the nineteen

1103
01:08:37.079 --> 01:08:44.479
<v Speaker 6>twenties about an astronomical collision with the planet Earth and

1104
01:08:45.079 --> 01:08:49.279
<v Speaker 6>the way the scientists of the age find a way

1105
01:08:49.359 --> 01:08:51.800
<v Speaker 6>to survive. But I won't go any further than that

1106
01:08:51.960 --> 01:08:54.960
<v Speaker 6>except to say that it's very colorful and lovely and

1107
01:08:55.000 --> 01:08:59.079
<v Speaker 6>wonderful science fiction. If you can tolerate the glaring scientific

1108
01:08:59.199 --> 01:09:02.359
<v Speaker 6>errors that would have been obvious in the nineteen.

1109
01:09:02.039 --> 01:09:06.239
<v Speaker 2>Twenties, awesome.

1110
01:09:07.399 --> 01:09:10.239
<v Speaker 5>Can can you do spoilers after one hundred years? I

1111
01:09:10.239 --> 01:09:14.239
<v Speaker 5>guess maybe you could anyway, Bob. If people want to

1112
01:09:14.279 --> 01:09:17.439
<v Speaker 5>find you on the Internet or connect with you, where

1113
01:09:17.479 --> 01:09:18.439
<v Speaker 5>do they Where do they find you?

1114
01:09:19.039 --> 01:09:21.760
<v Speaker 6>Clean cooder dot com. That's my website c L e

1115
01:09:21.800 --> 01:09:24.560
<v Speaker 6>A n C O d e R dot com. You

1116
01:09:24.600 --> 01:09:28.960
<v Speaker 6>can go there. Twitter handle is uncle Bob Martin beware

1117
01:09:29.640 --> 01:09:35.119
<v Speaker 6>and other than that, I don't know. Just around all right, good.

1118
01:09:34.920 --> 01:09:36.800
<v Speaker 2>Deal, Well, thanks for coming, Bob.

1119
01:09:36.840 --> 01:09:39.000
<v Speaker 6>This was fun, my pleasure always.

1120
01:09:39.079 --> 01:09:40.800
<v Speaker 3>This was awesome. Thank you so much.

1121
01:09:41.560 --> 01:09:43.920
<v Speaker 2>All Right, we're gonna wrap it up until next time, folks.

1122
01:09:44.159 --> 01:09:44.600
<v Speaker 6>That's out.
