WEBVTT
00:00:00.000 --> 00:00:02.399
Welcome to the Computing There I Was podcast.
00:00:02.520 --> 00:00:06.500
I am your host, Richie Bielak. In this podcast,
00:00:06.639 --> 00:00:09.380
we'll have conversations with veterans of the
00:00:09.380 --> 00:00:11.980
computing industry to hear about their adventures.
00:00:30.640 --> 00:00:34.060
Welcome to Computing There I Was podcast. I am
00:00:34.060 --> 00:00:36.740
your host, Richie B. And today we are talking
00:00:36.740 --> 00:00:39.520
to Eric Mintz, a software engineer who recently
00:00:39.520 --> 00:00:42.500
retired from Google. So hi, Eric. How are you?
00:00:42.740 --> 00:00:44.600
Oh, good, Richie. How are you? I'm fine. Good
00:00:44.600 --> 00:00:47.899
to see you again. Nice to see you. So on this
00:00:47.899 --> 00:00:51.000
podcast, what I hope to do is to have a conversation
00:00:51.000 --> 00:00:52.880
with people who worked in computing for a while,
00:00:53.240 --> 00:00:55.420
and just to hear their stories, because there's
00:00:55.420 --> 00:00:57.939
all this cool stuff that happened in past, like,
00:00:58.039 --> 00:01:02.060
50 years. So to start with, tell me how you got
00:01:02.060 --> 00:01:05.060
interested in computers. What happened? Oh, Lord.
00:01:06.359 --> 00:01:11.260
Well, it's all part of the space age technology
00:01:11.260 --> 00:01:14.780
catch up with the Soviet Union. I rode that wave.
00:01:15.739 --> 00:01:20.040
If I ever get to the hereafter, there are there's
00:01:20.040 --> 00:01:22.280
one person I want to thank for saving my life
00:01:22.280 --> 00:01:26.980
twice. And that's Nikita Khrushchev. You left,
00:01:27.200 --> 00:01:29.579
but. Just for people who might not know, when
00:01:29.579 --> 00:01:33.159
was this? This is mid -60s, right? In the late
00:01:33.159 --> 00:01:36.980
50s and early 60s. I don't know when Stalin died.
00:01:37.439 --> 00:01:40.640
It was after World War II, I know that. It was
00:01:40.640 --> 00:01:45.019
in the 50s, I believe. Yeah. When Nikita Khrushchev
00:01:45.019 --> 00:01:49.719
became the premier, he did two things for which
00:01:49.719 --> 00:01:52.640
I shall be eternally grateful, or at least for
00:01:52.640 --> 00:01:55.540
as long as uncomplimentous. First thing he did
00:01:55.540 --> 00:02:01.359
was launch Sputnik. which really scared the United
00:02:01.359 --> 00:02:05.700
States. I think we could use another Sputnik
00:02:05.700 --> 00:02:09.580
moment. But all of a sudden, the United States
00:02:09.580 --> 00:02:13.620
realized that the people who were interested
00:02:13.620 --> 00:02:18.580
in technology, the people who'd been on the outs
00:02:18.580 --> 00:02:23.780
were actually a national resource. And there
00:02:23.780 --> 00:02:28.520
was a whole spate attention to education that
00:02:28.520 --> 00:02:31.539
gave us the school mathematics study group, the
00:02:31.539 --> 00:02:35.500
new math that unfortunately didn't work, I think,
00:02:35.500 --> 00:02:38.840
largely because teachers were not prepared to
00:02:38.840 --> 00:02:42.500
teach it. I was fortunate to have a teacher who
00:02:42.500 --> 00:02:44.879
did know how to teach it. The man saved my life.
00:02:45.120 --> 00:02:49.139
I named my son after him, Commander John P. Howitt.
00:02:49.939 --> 00:02:53.340
You and your whole family are missed. And then
00:02:53.340 --> 00:02:55.740
the other thing that Nikita Khrushchev did was
00:02:55.740 --> 00:02:58.520
allow me to survive to be an adult by backing
00:02:58.520 --> 00:03:04.960
down during the Cuban Missile Crisis. I'm no
00:03:04.960 --> 00:03:08.699
historian. There's lots of information on it,
00:03:08.699 --> 00:03:12.780
but the world teeters the brink of nuclear holocaust
00:03:12.780 --> 00:03:17.919
for a couple of weeks. So what grade was that
00:03:17.919 --> 00:03:21.080
teacher in? He was my seventh grade mathematics,
00:03:21.240 --> 00:03:24.580
and he was my mentor all through high school.
00:03:24.599 --> 00:03:31.699
He encouraged me to develop mathematically, showed
00:03:31.699 --> 00:03:34.580
me that mathematics and arithmetic were different
00:03:34.580 --> 00:03:37.120
subjects, totally different ways of thinking,
00:03:37.740 --> 00:03:42.219
totally different parts of the brain. I, by actual
00:03:42.219 --> 00:03:45.819
examination, am the world's worst clerk in terms
00:03:45.819 --> 00:03:50.349
of the clerical aptitude, I score in the third
00:03:50.349 --> 00:03:57.409
percentile in terms of spatial, mathematical,
00:03:57.650 --> 00:04:00.530
inductive, deductive reasoning. I score very
00:04:00.530 --> 00:04:03.610
high. Yeah, I took a test like that when I was
00:04:03.610 --> 00:04:07.169
in high school. So my special spatial reasoning
00:04:07.169 --> 00:04:11.590
also was kind of up there. Yeah. So but let's
00:04:11.590 --> 00:04:13.189
get the computer. So when the computers come
00:04:13.189 --> 00:04:15.990
in here. Well, there I was in seventh grade.
00:04:16.930 --> 00:04:20.170
I have to preface this by saying I spent my childhood
00:04:20.170 --> 00:04:23.250
and reached my adult height and weight in Ithaca,
00:04:23.370 --> 00:04:25.810
New York. Whether I grew up, of course, is a
00:04:25.810 --> 00:04:30.470
completely different matter. But it's a university
00:04:30.470 --> 00:04:34.490
town and in some respects one of the last bastions
00:04:34.490 --> 00:04:37.610
of feudalism in the United States. The society
00:04:37.610 --> 00:04:39.970
there at the time was highly stratified with
00:04:39.970 --> 00:04:47.290
the university faculty in charge and one Son
00:04:47.290 --> 00:04:49.610
of a faculty member named Tom not the faculty
00:04:49.610 --> 00:04:53.029
member, but my classmate Tom Dimmick again to
00:04:53.029 --> 00:04:56.910
whom I'm eternally grateful I was in my geometry
00:04:56.910 --> 00:05:01.610
class. He suggested that we go bum computer time
00:05:01.610 --> 00:05:07.550
from Cornell and I I'll Say that the difference
00:05:07.550 --> 00:05:10.889
between me and the juvenile delinquents in my
00:05:10.889 --> 00:05:15.290
cohort was the value of the items we stole, you
00:05:15.290 --> 00:05:20.100
know, they shoplift trinkets and I'd steal hours
00:05:20.100 --> 00:05:23.060
of computer time and so very expensive. How did
00:05:23.060 --> 00:05:24.980
you manage to do that? So first of all, what
00:05:24.980 --> 00:05:27.339
kind of computer was this? It was a control data
00:05:27.339 --> 00:05:33.279
1604 and they had an open to undergraduates policy
00:05:33.279 --> 00:05:36.360
of you could sign in and write a small program
00:05:36.360 --> 00:05:40.120
in a teaching language called Cork, which is
00:05:40.120 --> 00:05:45.120
on Eric Raymond's collection of Bad computer
00:05:45.120 --> 00:05:47.620
languages if you want to give it a try you can
00:05:47.620 --> 00:05:51.660
actually download it. I I did it once I didn't
00:05:51.660 --> 00:05:55.720
never Tried it. So when you when you say you
00:05:55.720 --> 00:05:57.439
wrote the programs, how did you actually enter
00:05:57.439 --> 00:05:59.100
them to computer was the punch card? Yeah, it
00:05:59.100 --> 00:06:01.019
was absolutely punch cards. You went to the campus
00:06:01.019 --> 00:06:03.819
store You bought the coding right forms of coding
00:06:03.819 --> 00:06:07.180
coding was very rigid everything had to be just
00:06:07.180 --> 00:06:13.410
so and one of the first My second computer programming
00:06:13.410 --> 00:06:17.310
language was IBM drum card. Because you could...
00:06:17.310 --> 00:06:18.910
Oh, you mean the drum card that goes in the key
00:06:18.910 --> 00:06:22.449
punch? Yes, exactly. Where you set up the card
00:06:22.449 --> 00:06:26.110
punch equivalent of tab stops. I guess for our
00:06:26.110 --> 00:06:28.209
listeners, maybe I'll put a link in the notes
00:06:28.209 --> 00:06:30.769
to like a video of a key punch so you can see
00:06:30.769 --> 00:06:32.850
what we're talking about. Right. Now, be sure
00:06:32.850 --> 00:06:35.569
that it's the old 26, not the old 29. The old
00:06:35.569 --> 00:06:38.230
29 was the high price spread. I don't even think
00:06:38.230 --> 00:06:41.259
it had been introduced yet. OK, so there you
00:06:41.259 --> 00:06:46.480
are. There I am, happily writing Quark. So what
00:06:46.480 --> 00:06:48.839
was Quark like as a language? Was it close to
00:06:48.839 --> 00:06:54.899
assembler or was it more basic? No, it was a
00:06:54.899 --> 00:06:58.639
deliberately designed to be easy to use for the
00:06:58.639 --> 00:07:03.220
time language. It's been described as a mixture
00:07:03.220 --> 00:07:07.180
of a bit of alcohol and linear programming and
00:07:07.180 --> 00:07:09.639
random stuff. One of the things it tried to do
00:07:09.639 --> 00:07:13.639
is when it detected a mistake, it tried to correct
00:07:13.639 --> 00:07:15.360
it. For example, if you misspelled a variable,
00:07:15.699 --> 00:07:20.220
it would assume. Right. And I have a similar
00:07:20.220 --> 00:07:23.750
experience. I used PLC, which was I think it
00:07:23.750 --> 00:07:26.189
was a version of PL1. Wasn't it from Cornell?
00:07:26.209 --> 00:07:28.850
Yes. Same professor, Professor Conway. And it
00:07:28.850 --> 00:07:30.889
did the same thing. And I remember that when
00:07:30.889 --> 00:07:32.990
you make a mistake and try to correct it, sometimes
00:07:32.990 --> 00:07:35.790
you would just go off completely into the weeds.
00:07:37.449 --> 00:07:41.189
We've seen this return, haven't we? We'll get
00:07:41.189 --> 00:07:45.069
to that. I've not tried it. But anyway, PLC has
00:07:45.069 --> 00:07:48.490
been said to stand for programming language by
00:07:48.490 --> 00:07:52.540
Professor Conway. I see. But I think the C was
00:07:52.540 --> 00:07:59.060
meant to stand for Cornell. Anyway, so I had
00:07:59.060 --> 00:08:01.800
the same teacher of that geometry class, who
00:08:01.800 --> 00:08:07.079
I will not name, decided to help a few of us
00:08:07.079 --> 00:08:10.139
who wanted to use computing. So he gave us the
00:08:10.139 --> 00:08:13.959
book, which was nice. I read the book in order
00:08:13.959 --> 00:08:17.000
to read the book. Now remember, I was in 15,
00:08:18.040 --> 00:08:22.480
sophomore, hadn't taken pre -algebra, hadn't
00:08:22.480 --> 00:08:25.560
taken anything. Here was a course that presumed
00:08:25.560 --> 00:08:28.879
at least pre -calculus. So I had to learn about
00:08:28.879 --> 00:08:31.220
radians. I had to learn trigonometric identities.
00:08:31.279 --> 00:08:33.940
I had to learn natural logarithms. I had to learn
00:08:33.940 --> 00:08:37.659
all this stuff that I was slated to learn the
00:08:37.659 --> 00:08:41.279
next year. That had interesting implications
00:08:41.279 --> 00:08:43.860
when I got to that course. It was a case of,
00:08:44.000 --> 00:08:47.059
please, could we please learn something? You
00:08:47.059 --> 00:08:49.840
know, while my classmates struggled, it was not
00:08:49.840 --> 00:08:52.600
really very considerate of me. I owe a number
00:08:52.600 --> 00:08:56.600
of people a number of apologies for that. But,
00:08:56.820 --> 00:09:00.399
you know, youth. Right. But anyway, my first
00:09:00.399 --> 00:09:03.500
program was, well, I was looking for something
00:09:03.500 --> 00:09:09.080
that was simple to understand and hard to do.
00:09:09.320 --> 00:09:12.519
Something I could understand, but either could
00:09:12.519 --> 00:09:15.419
not or would not do by hand. And it occurred
00:09:15.419 --> 00:09:19.879
to me that I could approximate pi by calculating
00:09:19.879 --> 00:09:24.500
the area of a unit circle by treating it as a
00:09:24.500 --> 00:09:28.320
series of trapezoids. Right. Okay. Trapezoidal
00:09:28.320 --> 00:09:30.600
rule, you know. It's basically calculus, really.
00:09:31.899 --> 00:09:34.580
It's integration. It's integration. It is. And
00:09:34.580 --> 00:09:40.159
I knew it. But in any case, so I set the program
00:09:40.159 --> 00:09:43.159
up and I wanted to see how it converged with,
00:09:43.340 --> 00:09:50.370
as you narrowed the width of the Little little
00:09:50.370 --> 00:09:54.830
trapezoids. Yeah, and of course thinking it at
00:09:54.830 --> 00:09:59.570
it now from this was 1965 so goodness me. It's
00:09:59.570 --> 00:10:05.250
what? 70 years ago now I never was good at arithmetic
00:10:05.250 --> 00:10:10.289
meaning 60 years ago. Yeah, so I Did it backwards?
00:10:10.289 --> 00:10:16.340
Okay, you when you? add a list of floating point
00:10:16.340 --> 00:10:18.620
numbers, you want to add from the smallest to
00:10:18.620 --> 00:10:22.879
the largest to preserve significance. But what
00:10:22.879 --> 00:10:25.860
did I know back then? Well, you had floating
00:10:25.860 --> 00:10:28.779
point numbers. That's good. That's good. All
00:10:28.779 --> 00:10:32.980
that Cork had was floating points. And I think
00:10:32.980 --> 00:10:37.059
it had strings too. That's it. But in any case,
00:10:37.759 --> 00:10:40.919
so I set it up and I coded it on the coding pads
00:10:40.919 --> 00:10:45.120
and I showed it to The advisor and he looked
00:10:45.120 --> 00:10:48.379
at it and he said to me I remember this like
00:10:48.379 --> 00:10:50.779
it was yesterday, which probably means I remember
00:10:50.779 --> 00:10:54.759
it badly, but I Said to me is that your first
00:10:54.759 --> 00:10:58.539
program and I said Yeah, I've written one before
00:10:58.539 --> 00:11:03.039
so yes And you're going to calculate pi I said
00:11:03.039 --> 00:11:06.720
well, I hope to Said don't you want to do something
00:11:06.720 --> 00:11:09.500
simpler like read two numbers add them and print
00:11:09.500 --> 00:11:12.519
this result. They said No, I could do that by
00:11:12.519 --> 00:11:15.700
hand. It's not very interesting at all. He said,
00:11:15.700 --> 00:11:18.200
well, if that's your first program, you're out
00:11:18.200 --> 00:11:21.620
of here. So I picked up my program and I left.
00:11:23.100 --> 00:11:25.679
And I went up to Cornell and punched it up. And
00:11:25.679 --> 00:11:28.740
after many attempts at getting it work, I did.
00:11:29.500 --> 00:11:31.759
Did it produce a good result? It produced a decent
00:11:31.759 --> 00:11:33.779
result. I got five figures out of it. Oh, that's
00:11:33.779 --> 00:11:37.000
pretty good. Yeah. And so I took it over and
00:11:37.000 --> 00:11:40.590
showed it to Mr. Howitt. who just crowed, and
00:11:40.590 --> 00:11:43.070
then he showed me another cool way to calculate
00:11:43.070 --> 00:11:47.110
pi by Monte Carlo method. You know what? You
00:11:47.110 --> 00:11:53.470
throw darts at the unit square, which is very
00:11:53.470 --> 00:11:56.309
cool. I understand it converges relatively slowly.
00:11:56.750 --> 00:11:59.850
I've not analyzed it, but I did it. There was
00:11:59.850 --> 00:12:02.990
a random number generator in Cork, so it was
00:12:02.990 --> 00:12:08.330
really very nice. And then I sort of said, well,
00:12:08.509 --> 00:12:13.149
Okay, I'd like to try Fortran and Assembler.
00:12:13.909 --> 00:12:18.610
Now, for that, you required money. Now, what
00:12:18.610 --> 00:12:24.129
I did was I gathered my programs together. I
00:12:24.129 --> 00:12:26.970
walked into the office of the director, John
00:12:26.970 --> 00:12:32.990
Rudan at Cornell. I told him who I was. I told
00:12:32.990 --> 00:12:37.110
him what I was doing. and I asked for access
00:12:37.110 --> 00:12:40.330
and he gave me a staff account. Wow, that's pretty
00:12:40.330 --> 00:12:43.990
cool. Yeah, it was very cool. I learned a big
00:12:43.990 --> 00:12:47.389
lesson from that. And you've probably, having
00:12:47.389 --> 00:12:51.450
worked with me, realized that I'd much rather
00:12:51.450 --> 00:12:54.409
beg forgiveness than be denied permission. We
00:12:54.409 --> 00:12:57.350
can talk about that. So, well, let's talk about
00:12:57.350 --> 00:12:59.549
what happened after high school. You went to
00:12:59.549 --> 00:13:03.559
college and you studied. Oh, did you? Oh, there's
00:13:03.559 --> 00:13:06.720
more stories. Oh, there's more? Sure. First of
00:13:06.720 --> 00:13:10.799
all, the math teacher, three months after the
00:13:10.799 --> 00:13:13.399
math teacher ejected me from the computer club,
00:13:13.840 --> 00:13:20.820
I was teaching him. OK. And then a professor
00:13:20.820 --> 00:13:24.120
from the business school came to me and said,
00:13:25.080 --> 00:13:29.679
Eric, I need help. I have no money for salaries,
00:13:30.320 --> 00:13:33.379
but I have lots of money for computer time."
00:13:33.379 --> 00:13:35.340
He said, are you willing to do that? I said,
00:13:35.500 --> 00:13:39.240
absolutely. I said, absolutely. OK. And then
00:13:39.240 --> 00:13:41.580
he came to me. He said, well, I have to pay you
00:13:41.580 --> 00:13:43.980
a token. I have to pay $10 a month to get you
00:13:43.980 --> 00:13:48.340
on the workman's comp. I said, OK, that's $10
00:13:48.340 --> 00:13:51.840
more than I was expecting. That's fine. And there
00:13:51.840 --> 00:13:54.679
I was. I had the computer. I could use it overnight
00:13:54.679 --> 00:13:59.240
when nobody else was using it. I had this computer.
00:13:59.779 --> 00:14:02.740
So it was all still batch, right? All still batch.
00:14:02.940 --> 00:14:06.840
You fed in your cards and the output comes out.
00:14:06.840 --> 00:14:09.980
And the most, if you want my nomination for best
00:14:09.980 --> 00:14:12.320
computer equipment I've ever seen in my life,
00:14:12.720 --> 00:14:16.740
it was the Control Data 405 card reader. It read
00:14:16.740 --> 00:14:20.799
2000 cards a minute, which is fast. It was gentle
00:14:20.799 --> 00:14:25.419
as a lamb. And it very seldom jammed. I saw the
00:14:25.419 --> 00:14:28.090
IBM equivalent. It was slower, it was rougher
00:14:28.090 --> 00:14:30.769
on the cards, and it jammed far more frequently.
00:14:30.909 --> 00:14:34.490
I just have never seen anything so mechanical,
00:14:34.750 --> 00:14:39.210
mechanism, so elegant in my life. It's just magnificent.
00:14:39.389 --> 00:14:41.730
The way everything just worked. Had a little
00:14:41.730 --> 00:14:44.149
vacuum, it sucked the cards against the belt,
00:14:44.450 --> 00:14:47.330
shot them through, read them twice, validated
00:14:47.330 --> 00:14:50.870
them. It's incredible. It was just everybody
00:14:50.870 --> 00:14:53.269
says, oh, yeah, primitive bunch batch. Yeah.
00:14:53.610 --> 00:14:57.570
No. No, those are pretty amazing machines, mechanically.
00:14:58.250 --> 00:15:06.210
Yeah. Yeah. So I got acknowledgments in papers.
00:15:06.950 --> 00:15:08.990
I wasn't an author or anything, but thank you
00:15:08.990 --> 00:15:13.330
for helping. So now, off to college, right? Did
00:15:13.330 --> 00:15:16.830
you go to Ithaca or Cornell? Cornell, yeah. And
00:15:16.830 --> 00:15:19.049
I have a job in the computing center, and I have
00:15:19.049 --> 00:15:23.019
a little desk where the students work. And, you
00:15:23.019 --> 00:15:27.580
know, a couple of weeks in, I met my dorm advisor
00:15:27.580 --> 00:15:30.539
going into Rand Hall, the computing center. The
00:15:30.539 --> 00:15:33.139
government department had the third floor, and
00:15:33.139 --> 00:15:36.379
the computing center had the floors, the ground
00:15:36.379 --> 00:15:40.679
floor. And felt being respectful, I liked him,
00:15:40.740 --> 00:15:43.000
I held the door for him. He looks at me and he
00:15:43.000 --> 00:15:45.539
says, Eric, what are you doing here? And having
00:15:45.539 --> 00:15:47.980
no conception of what I was saying, none whatsoever,
00:15:48.200 --> 00:15:51.669
I said, oh, Seth, I'm going to my office. He
00:15:51.669 --> 00:15:54.889
says, right. I pull my other leg now. I said,
00:15:55.129 --> 00:15:57.309
no, honestly, truthfully, I'm going to my office.
00:15:57.309 --> 00:15:59.850
I'll show you. He said, I have to see this. There
00:15:59.850 --> 00:16:02.429
it was, my desk all piled up with big computer
00:16:02.429 --> 00:16:04.870
listings and all this stuff. I said, had my little
00:16:04.870 --> 00:16:07.330
name on the panel with the demo maker. He said,
00:16:08.210 --> 00:16:11.590
there it is. I said, I've been working here for
00:16:11.590 --> 00:16:13.669
at least a year now. I started in high school.
00:16:13.830 --> 00:16:18.669
He said, I'll be doggone. You guys amaze me.
00:16:19.539 --> 00:16:22.279
So there it was and I was working, I walked up
00:16:22.279 --> 00:16:26.799
to my soon to be advisor, my physics 207 professor.
00:16:27.580 --> 00:16:29.779
I majored in physics and I almost majored in
00:16:29.779 --> 00:16:31.679
math as well. I was going to ask you what was
00:16:31.679 --> 00:16:35.580
your major? Was there computer major at the time?
00:16:35.960 --> 00:16:43.279
No, there wasn't and I really, you know... Yes,
00:16:43.279 --> 00:16:48.250
I know. We can talk about that, yeah. But I'm
00:16:48.250 --> 00:16:53.110
very glad for my choice of majors. But anyway,
00:16:53.769 --> 00:16:57.009
you know, I said to him, hello, Dr. Castle. And
00:16:57.009 --> 00:17:00.309
he says, hi, Eric. And I said, you know, I work
00:17:00.309 --> 00:17:02.549
here. If there's anything I can do, any way I
00:17:02.549 --> 00:17:06.710
can help out, just ask, please. And he gives
00:17:06.710 --> 00:17:09.269
me this sidelong look, which, of course, being
00:17:09.269 --> 00:17:11.630
young, I didn't understand how outrageous I was
00:17:11.630 --> 00:17:15.569
being. I just wanted to be polite and, you know,
00:17:15.569 --> 00:17:20.690
also you know, become a member of the research
00:17:20.690 --> 00:17:26.150
community. I really wanted this, okay? And then,
00:17:26.150 --> 00:17:28.150
you know, later on he started asking me to help.
00:17:28.309 --> 00:17:31.009
And later on, past that, he said, you know, he
00:17:31.009 --> 00:17:32.950
said, I didn't believe you. I thought you were
00:17:32.950 --> 00:17:36.009
just a wise acre until I asked around and people
00:17:36.009 --> 00:17:38.349
said, oh, no, no, no, you know, take him up on
00:17:38.349 --> 00:17:41.230
it. He knows what he's doing. He's got experience.
00:17:42.190 --> 00:17:44.730
And so, you know, I did all kinds of interesting
00:17:44.730 --> 00:17:50.529
work for him. We did a feasibility study on using
00:17:50.529 --> 00:17:54.609
an IBM 1800 to detect, you know, particle collisions
00:17:54.609 --> 00:17:56.970
in real times. It didn't really have the horsepower
00:17:56.970 --> 00:18:01.609
for it. Yeah, it was out at the airport in Ithaca,
00:18:02.029 --> 00:18:05.589
and I didn't drive at the time, so I had to go
00:18:05.589 --> 00:18:07.269
out. I don't know. I'd have to look to see it.
00:18:07.289 --> 00:18:10.970
It's at least a couple of miles. And at the time,
00:18:11.230 --> 00:18:13.930
Tripama Road out by the airport was deserted.
00:18:14.160 --> 00:18:16.500
many of the night I walked back at two and three
00:18:16.500 --> 00:18:19.319
in the morning, no streetlights, walking down
00:18:19.319 --> 00:18:22.980
the middle of the night on the dotted line so
00:18:22.980 --> 00:18:25.779
I wouldn't roll off into the swamp on either
00:18:25.779 --> 00:18:27.980
side. And when I heard a car coming, I'd get
00:18:27.980 --> 00:18:31.880
off to the side. So there were adventures. But
00:18:31.880 --> 00:18:33.680
the biggest adventure, the biggest adventure
00:18:33.680 --> 00:18:38.660
was having unfettered access to computing, which
00:18:38.660 --> 00:18:41.920
was absolutely unheard of at the time. That and
00:18:41.920 --> 00:18:44.000
a Marchant calculator, a Marchant mechanical
00:18:44.000 --> 00:18:47.460
calculator that my dad picked up for me. Just
00:18:47.460 --> 00:18:50.140
being able to run a least squares from my desk
00:18:50.140 --> 00:18:55.180
at the time was incredible. I have a story about
00:18:55.180 --> 00:18:59.619
least squares. You want to hear it? OK. One of
00:18:59.619 --> 00:19:01.960
the summer jobs I had was at a company called
00:19:01.960 --> 00:19:05.440
Sage Action. If I can throw in a shameless plug,
00:19:05.500 --> 00:19:08.450
if you have anything to do with airflow. And
00:19:08.450 --> 00:19:10.529
I tried to get a former employer to do this,
00:19:10.630 --> 00:19:12.910
and they didn't, and far to their disadvantage.
00:19:13.549 --> 00:19:16.069
If you deal with cooling HVAC airflow, anything
00:19:16.069 --> 00:19:19.690
involving the movement of air, especially for
00:19:19.690 --> 00:19:22.430
cooling or heating, look into the Sage Action
00:19:22.430 --> 00:19:24.589
Bubble Generator. I was there when it was made.
00:19:24.789 --> 00:19:27.410
It blows these little soap bubbles about an eighth
00:19:27.410 --> 00:19:30.190
of an inch in diameter, filled with helium, and
00:19:30.190 --> 00:19:33.440
they're neutrally buoyant. they can visualize
00:19:33.440 --> 00:19:36.180
transonic turbulent air flow. It's the only thing
00:19:36.180 --> 00:19:39.099
that I know of that can do it. Yeah, yeah. Well,
00:19:39.099 --> 00:19:41.920
I was there when it was invented. But we had
00:19:41.920 --> 00:19:47.480
a. Contract with the Cornell Department of Agriculture,
00:19:48.000 --> 00:19:51.839
they had an 1130. And we do calculations for
00:19:51.839 --> 00:19:56.359
people in this woman gave me this. Involves statistical.
00:19:57.779 --> 00:20:01.359
Procedure for fitting calibrating anemometers.
00:20:02.209 --> 00:20:07.950
a polynomial 1 over x squared, 1 over x, x to
00:20:07.950 --> 00:20:11.430
the 0, x to the 1, x squared fit this. She gave
00:20:11.430 --> 00:20:15.869
me the data and the figures and it just blew
00:20:15.869 --> 00:20:20.490
up. It was awful. And so I dumped the matrix
00:20:20.490 --> 00:20:23.509
and the correlation coefficients were all very
00:20:23.509 --> 00:20:26.980
high. So I calculated its determinant and it
00:20:26.980 --> 00:20:30.119
was somewhere around 10 to the minus 22. I mean,
00:20:30.140 --> 00:20:32.000
ain't gonna happen because there was inverting
00:20:32.000 --> 00:20:34.859
the matrix in it. So I called her and I said,
00:20:35.079 --> 00:20:37.819
well, you know, you've got a nearly singular
00:20:37.819 --> 00:20:42.240
matrix. It's determined in this 10 to the minus
00:20:42.240 --> 00:20:46.500
22. This is high school stuff. She's sort of,
00:20:46.500 --> 00:20:49.519
I think reaching to keep up with me. I said,
00:20:50.720 --> 00:20:54.890
this procedure is numerically infeasible. think,
00:20:54.890 --> 00:20:58.009
how about a nice least squares? And she asked
00:20:58.009 --> 00:21:00.410
me, what's that? So I told her about it. You
00:21:00.410 --> 00:21:03.089
know, you look for, you differentiate the coefficient,
00:21:03.150 --> 00:21:06.130
you look for the zero, and it gives you a pretty
00:21:06.130 --> 00:21:10.609
good fit. Can I try it? She said, sure. That
00:21:10.609 --> 00:21:13.390
worked out very nicely. I plotted, I center the
00:21:13.390 --> 00:21:16.710
graph. She said, fine, good. This is the woman
00:21:16.710 --> 00:21:19.430
who also asked me to apply Simpson's rule to
00:21:19.430 --> 00:21:23.160
a polynomial times e to the x. And I said, oh,
00:21:23.359 --> 00:21:25.920
it's got to have a closed form. So I had a handbook
00:21:25.920 --> 00:21:27.680
of chemistry and physics, being a physicist.
00:21:28.259 --> 00:21:31.440
I flipped the integral. There it is. I call her
00:21:31.440 --> 00:21:33.980
up. I said, look, our customer's always right.
00:21:34.039 --> 00:21:37.619
I'll do it the way you ask if you want. But there's
00:21:37.619 --> 00:21:41.059
a closed form solution. And she said, are we
00:21:41.059 --> 00:21:44.000
a whole lot faster, a whole lot more accurate
00:21:44.000 --> 00:21:46.599
to just use that? So what do you think? And she
00:21:46.599 --> 00:21:49.180
said, well, how do I trust the answer? And I
00:21:49.180 --> 00:21:51.559
said, well, I think we can. trust the handbook
00:21:51.559 --> 00:21:53.539
of chemistry and physics and she said okay go
00:21:53.539 --> 00:21:57.559
ahead but you know there are lessons in that
00:21:57.559 --> 00:22:02.259
which is um you need to people talk about having
00:22:02.259 --> 00:22:04.700
a third eye whether you need a third ear if you're
00:22:04.700 --> 00:22:08.440
writing software you have to essentially backtrack
00:22:08.440 --> 00:22:10.640
from the customer's request to the customer's
00:22:10.640 --> 00:22:14.440
need and that's that's the real challenge it's
00:22:14.440 --> 00:22:17.440
a psychological game right so i mean so let's
00:22:17.440 --> 00:22:20.140
talk about what happened after you graduated.
00:22:20.980 --> 00:22:24.180
So what was your job? I mean, your first job
00:22:24.180 --> 00:22:27.700
clearly was at the college. Well, I went off
00:22:27.700 --> 00:22:29.740
to graduate school. I went to graduate school.
00:22:29.740 --> 00:22:32.960
Yeah. Thinking I would study mathematics and
00:22:32.960 --> 00:22:36.500
discovered that I was probably smart enough to
00:22:36.500 --> 00:22:40.599
get a Ph .D. and I might be able to invigil a
00:22:40.599 --> 00:22:44.339
faculty job somewhere, but I never was going
00:22:44.339 --> 00:22:47.690
to make it. I'm not that smart. And I later discovered
00:22:47.690 --> 00:22:52.049
also I have the very much worst personality,
00:22:53.130 --> 00:22:58.049
worst psychological orientation for academia.
00:22:59.349 --> 00:23:04.569
My interests are very broad. Basically, if I'm
00:23:04.569 --> 00:23:06.630
interested in something, I want to belong to
00:23:06.630 --> 00:23:10.309
it, all of it. And that's not academia. It was
00:23:10.309 --> 00:23:13.769
academia maybe 300 years ago, but now academia
00:23:13.769 --> 00:23:19.269
is deep and narrow. Okay. And, you know, it's
00:23:19.269 --> 00:23:21.069
a wonderful thing that there are people who love
00:23:21.069 --> 00:23:25.950
that. We need both. Right. But it's not me. And
00:23:25.950 --> 00:23:28.190
I'm sure that you noticed that, you know, when
00:23:28.190 --> 00:23:31.190
we work together, it could appear that I have
00:23:31.190 --> 00:23:34.369
a lack of focus, when actually what I've done
00:23:34.369 --> 00:23:38.710
is I've taken a problem and found a more general
00:23:38.710 --> 00:23:41.549
approach to it. Well, that's a very mathematical
00:23:41.549 --> 00:23:45.779
approach. Very mathematical indeed. So what happened?
00:23:46.839 --> 00:23:50.599
In graduate school? In graduate school, I failed
00:23:50.599 --> 00:23:53.000
my qualifiers and went and got a master's. This
00:23:53.000 --> 00:23:55.339
is in spite of doing extremely well in all courses.
00:23:56.740 --> 00:23:59.900
I actually was working for the university for
00:23:59.900 --> 00:24:07.019
a while to stay out of Vietnam. I was auditing
00:24:07.019 --> 00:24:10.160
courses. My abstract algebra teacher came to
00:24:10.160 --> 00:24:13.440
me and said, Eric, you're not registered for
00:24:13.440 --> 00:24:15.779
the course. I said, no, no, I'm auditing it.
00:24:15.779 --> 00:24:19.440
He said, we'll go register right now. And I said,
00:24:20.220 --> 00:24:23.440
well, OK, but what makes you tell me to do that?
00:24:23.440 --> 00:24:25.279
Because you've got the highest mark in the class.
00:24:28.539 --> 00:24:33.140
I said, well, I said, I can't really. It might
00:24:33.140 --> 00:24:36.299
attract unwanted attention. He said, but thanks
00:24:36.299 --> 00:24:40.819
very much. So later when I wanted to go to the
00:24:40.819 --> 00:24:45.440
university, asked him would you mind writing
00:24:45.440 --> 00:24:48.339
me a letter of recommendation and he said sure
00:24:48.339 --> 00:24:50.759
where are you applying I said well here and he
00:24:50.759 --> 00:24:53.420
said oh I'm on the admissions committee best
00:24:53.420 --> 00:24:55.000
letter of recommendation I don't have to write
00:24:55.000 --> 00:25:00.720
a thing so it happened anyway so then I made
00:25:00.720 --> 00:25:05.880
a mistake I got involved in the light water breeder
00:25:05.880 --> 00:25:11.329
reactor program a Just helping to design a nuclear
00:25:11.329 --> 00:25:16.569
reactor That bred thorium 232 into uranium 233
00:25:16.569 --> 00:25:20.509
which sounded fascinating and the physics is
00:25:20.509 --> 00:25:25.650
fascinating but the engineering is I Absolutely
00:25:25.650 --> 00:25:29.009
understand why and I absolutely support it You
00:25:29.009 --> 00:25:33.150
go step by step by step by step Everything's
00:25:33.150 --> 00:25:36.210
double -check verified scrutinized intensely
00:25:36.210 --> 00:25:40.930
if you use a little trig Well, for example, we
00:25:40.930 --> 00:25:44.210
were very interested in the position of the rods
00:25:44.210 --> 00:25:49.009
in the bundle. These nuclear reactors are fuel
00:25:49.009 --> 00:25:52.289
and zirconium rods because zirconium is transparent
00:25:52.289 --> 00:25:55.730
to neutrons surrounded by water. That's a pressurized
00:25:55.730 --> 00:26:01.390
nuclear reactor, pressurized water reactor. To
00:26:01.390 --> 00:26:04.549
do your thermodynamics properly, to calculate
00:26:04.549 --> 00:26:07.170
the neutron distribution properly, you have to
00:26:07.170 --> 00:26:10.440
know where everything is. So the question is,
00:26:11.279 --> 00:26:13.559
my boss said, well, I need to know the average
00:26:13.559 --> 00:26:16.799
distance between these rods so I can calculate
00:26:16.799 --> 00:26:19.960
how much of what stuff is in there. And I said
00:26:19.960 --> 00:26:25.119
to him, it sounds to me like the average distance,
00:26:25.200 --> 00:26:28.779
the mean distance between the rods is not that
00:26:28.779 --> 00:26:33.000
the root mean area might actually be more relevant
00:26:33.000 --> 00:26:35.799
because you really want to know the average cell
00:26:35.799 --> 00:26:41.039
size. If you say so. Well, it's not only how
00:26:41.039 --> 00:26:43.039
far apart are the rods, but how much stuff is
00:26:43.039 --> 00:26:46.220
around it. And you're using an average, which
00:26:46.220 --> 00:26:49.160
is linear, to calculate a square, which is non
00:26:49.160 --> 00:26:53.319
-linear. So rather than calculating the average,
00:26:53.680 --> 00:26:56.680
just calculate the average of what you want rather
00:26:56.680 --> 00:26:59.480
than what you can measure. It turns out to be
00:26:59.480 --> 00:27:04.160
very simple. But that went up two levels of management.
00:27:04.779 --> 00:27:08.630
Yeah, I have stories like that too. Kind of computing
00:27:08.630 --> 00:27:11.490
was used in this? Well, it was all highly numeric,
00:27:11.630 --> 00:27:16.609
Cray 6600, 7600. We had a PDP 10 kind of as a
00:27:16.609 --> 00:27:19.009
front end. And of course, everything was locked
00:27:19.009 --> 00:27:23.329
down because this was, I didn't do any work on
00:27:23.329 --> 00:27:26.130
anything military. This had absolutely no military
00:27:26.130 --> 00:27:30.210
application, but there was work on military applications.
00:27:30.450 --> 00:27:32.369
So you said you made a mistake because of that?
00:27:32.369 --> 00:27:35.809
Yes, it was. Well, it was the wrong field for
00:27:35.809 --> 00:27:40.470
me. I see. Okay. The field for me is hardcore
00:27:40.470 --> 00:27:44.250
computer programming, particularly involving
00:27:44.250 --> 00:27:47.069
data modeling. So what happened after nuclear
00:27:47.069 --> 00:27:51.809
reactor then? A guy from New York, whom I met
00:27:51.809 --> 00:27:55.650
at the computing center, named Al Caskell, who
00:27:55.650 --> 00:27:59.049
used to tease me almost to the point of tears.
00:27:59.690 --> 00:28:04.670
Okay. And who I knew through Sage Action. If
00:28:04.670 --> 00:28:08.819
I could backtrack a bit. When I graduated from
00:28:08.819 --> 00:28:11.559
graduate school, came back home because I had
00:28:11.559 --> 00:28:15.039
no place else to go. I were waiting for my security
00:28:15.039 --> 00:28:16.980
clearance. They apparently were coming through
00:28:16.980 --> 00:28:19.480
slowly or maybe I needed extra scrutiny. I don't
00:28:19.480 --> 00:28:23.700
know. But in any case, I went out to Sage Action.
00:28:23.759 --> 00:28:25.559
I called them up and I told them I was available.
00:28:25.660 --> 00:28:28.700
I said, well, we don't have any work, but we'd
00:28:28.700 --> 00:28:30.920
love to see us. Came out and there was a Mod
00:28:30.920 --> 00:28:34.200
Comp 2. What's a Mod Comp 2? It's the computer
00:28:34.200 --> 00:28:37.930
that we brought. and work a big thing in the
00:28:37.930 --> 00:28:42.470
old computer museum. It's a old 16 -bit real
00:28:42.470 --> 00:28:47.430
-time process control computer. It flew the space
00:28:47.430 --> 00:28:50.789
shuttle from the ground. OK, mod comp flew the
00:28:50.789 --> 00:28:55.390
space shuttle. And it was, you know, one of these
00:28:55.390 --> 00:28:59.390
niche computing that was far better value than
00:28:59.390 --> 00:29:01.589
anything the majors were offering. So they bought
00:29:01.589 --> 00:29:03.950
one. And there it was sitting in its shipping
00:29:03.950 --> 00:29:07.109
container. Everything about it was different
00:29:07.109 --> 00:29:11.329
from the IBM 1130. It used a different floating
00:29:11.329 --> 00:29:13.769
point for representation. Oh, really? Oh, yeah.
00:29:13.829 --> 00:29:15.970
Well, there was no IEEE at the time. Everybody,
00:29:16.309 --> 00:29:19.589
every manufacturer had their own. Right. It used
00:29:19.589 --> 00:29:25.509
ASCII instead of EBSDIC. OK. So and it actually
00:29:25.509 --> 00:29:29.630
had quite a bit more memory than the 1130. So
00:29:29.630 --> 00:29:34.069
I said to myself, well, they think. They don't
00:29:34.069 --> 00:29:36.109
have work for me, but there's plenty of work.
00:29:36.930 --> 00:29:38.750
So a few days later, they called me up and said,
00:29:38.750 --> 00:29:40.630
well, you know, we do have to port these programs.
00:29:40.650 --> 00:29:42.269
We got a month worth of work for you. So why
00:29:42.269 --> 00:29:44.670
don't you come on out? OK, great. Works work.
00:29:45.309 --> 00:29:49.170
So I come out and there was a 32 bit arithmetic
00:29:49.170 --> 00:29:53.150
package on the IBM 1130 called the Ideal. It's
00:29:53.150 --> 00:29:55.569
one of these unsupported packages that IBM gave
00:29:55.569 --> 00:30:00.829
away. And the company that was doing the Alcaskels
00:30:00.829 --> 00:30:03.690
company, Manimation, was doing the port. And
00:30:03.690 --> 00:30:05.650
they had this idea while they had this kind of
00:30:05.650 --> 00:30:09.430
homegrown Fortran, what I considered half cook,
00:30:09.529 --> 00:30:13.109
half binary, half decimal arithmetic. Oh, we'll
00:30:13.109 --> 00:30:16.009
just rip that out and put our own in. And then
00:30:16.009 --> 00:30:19.049
people looked at the size of the work and they
00:30:19.049 --> 00:30:21.369
said, oh my gosh, this is going to be a nightmare.
00:30:22.089 --> 00:30:25.009
Of course, me being me, you know, I said, well,
00:30:25.089 --> 00:30:27.930
why don't we just rewrite this package for the
00:30:27.930 --> 00:30:30.289
mod comp? I looked at it, I had all the hardware
00:30:30.289 --> 00:30:32.549
support we needed. So I just started to write
00:30:32.549 --> 00:30:36.799
it. And I was like, well, I can do this. You
00:30:36.799 --> 00:30:39.740
know, I'll make it easy. We'll just rewrite it.
00:30:39.740 --> 00:30:42.240
And this was in Fortran? I wrote it in an assembler.
00:30:42.960 --> 00:30:45.039
The code was in Fortran that we were reporting,
00:30:45.119 --> 00:30:48.460
but this was an assembler. Right. Because I needed
00:30:48.460 --> 00:30:52.880
access to some add with carry and that sort of
00:30:52.880 --> 00:30:55.640
thing. Bit fiddling. Yeah, bit fiddling, basically.
00:30:56.839 --> 00:31:00.180
So about halfway through the project, Don Ordway,
00:31:00.380 --> 00:31:03.440
whom I also love, Sage Action was the kind of
00:31:03.440 --> 00:31:05.599
company, if you were working late, Don would
00:31:05.599 --> 00:31:07.680
bring you dinner. Whatever he was eating, he'd
00:31:07.680 --> 00:31:10.740
bring over to you. Or he'd come over and say,
00:31:10.799 --> 00:31:16.579
go home. Go home. Come back tomorrow. And he
00:31:16.579 --> 00:31:18.799
said, what are you writing this in, by the way?
00:31:18.859 --> 00:31:21.460
And I said, assembler, what else would you write
00:31:21.460 --> 00:31:24.720
it in? Oh, you got to talk to Alvin about this.
00:31:24.799 --> 00:31:27.180
We do everything in Fortran. called up Alvin.
00:31:27.440 --> 00:31:29.799
Alvin, Don wants me to talk with you about writing
00:31:29.799 --> 00:31:31.460
in an assembler, and Alvin's, of course, you
00:31:31.460 --> 00:31:34.000
write in an assembler. But I had to go back to
00:31:34.000 --> 00:31:36.079
Alvin. Alvin says it's okay, you know, special
00:31:36.079 --> 00:31:38.960
case. Right. You know, make people feel happy.
00:31:40.599 --> 00:31:44.660
That's a lesson I'm still learning. So, anyway,
00:31:45.000 --> 00:31:49.980
there it was. We ported some stuff for stage
00:31:49.980 --> 00:31:52.559
action and animation and all this. We also had
00:31:52.559 --> 00:31:56.059
a contract with the local community con. college,
00:31:56.839 --> 00:32:00.819
and we were doing their port, and I was over
00:32:00.819 --> 00:32:02.700
there just in case something goes wrong. I had
00:32:02.700 --> 00:32:05.000
not ported the four -turn code. I'd written the
00:32:05.000 --> 00:32:08.900
support libraries, and one of the guys was sort
00:32:08.900 --> 00:32:10.900
of looking at me, seeing around reading or something,
00:32:10.940 --> 00:32:13.640
and he says, what the hell is that bozo doing
00:32:13.640 --> 00:32:18.859
there? And my colleague, Jimmy, at the time,
00:32:18.960 --> 00:32:22.220
he says, if it weren't for him, this project
00:32:22.220 --> 00:32:25.759
wouldn't make it. Don't diss him. OK. He has
00:32:25.759 --> 00:32:28.339
nothing to do now because he did his job earlier.
00:32:29.660 --> 00:32:36.099
And that is the height of compliment. Your fondest
00:32:36.099 --> 00:32:38.200
hope, or at least my fondest hope when I write
00:32:38.200 --> 00:32:41.660
software is not to be noticed, is for people
00:32:41.660 --> 00:32:44.200
to say, and every once in a while somebody says,
00:32:44.319 --> 00:32:47.019
how do I do ABC with this system? And I say,
00:32:47.140 --> 00:32:50.720
well, do this, this, this, and this. And people,
00:32:51.380 --> 00:32:54.410
is that all? That's all you have to do, really.
00:32:54.470 --> 00:32:57.670
Just this, this, this, and this. And he said,
00:32:58.450 --> 00:33:04.089
well, but how is it so easy? I said, well, you
00:33:04.089 --> 00:33:07.690
know, it's my job to make your life easy. I want
00:33:07.690 --> 00:33:11.710
it to be easy. I want you to say, because this
00:33:11.710 --> 00:33:16.309
is not how you add value. You add value with
00:33:16.309 --> 00:33:18.950
what you do that makes you want to do A, B, C,
00:33:18.950 --> 00:33:22.670
and D. But of course, there's always the danger
00:33:22.670 --> 00:33:26.950
with the people who can't or don't or have this
00:33:26.950 --> 00:33:30.369
orientation where I don't even understand it.
00:33:30.369 --> 00:33:34.450
It's like everything has to be visible. They'll
00:33:34.450 --> 00:33:36.210
say, well, if it's so simple to use, it must
00:33:36.210 --> 00:33:40.329
have been simple to write. Right. No, no. Simplicity
00:33:40.329 --> 00:33:44.529
is hard. And that goes back to Pascal. I think
00:33:44.529 --> 00:33:47.869
he may have said something. Yes, he did. All
00:33:47.869 --> 00:33:50.900
right. So then. Somebody from New York called
00:33:50.900 --> 00:33:56.440
you? Yes, I was working at Westinghouse Atomic
00:33:56.440 --> 00:33:59.940
Power Division. My year of indentured servitude
00:33:59.940 --> 00:34:02.240
was up. I didn't have to pay back my relocation.
00:34:02.660 --> 00:34:06.339
I started looking for work and out of the blue,
00:34:06.819 --> 00:34:09.000
Alvin called me and said, come work for me in
00:34:09.000 --> 00:34:12.639
New York. We'll get you an apartment. And because
00:34:12.639 --> 00:34:15.179
he was hooked up with one of his customers, he
00:34:15.179 --> 00:34:18.469
was related anyway. You know, we'll get you an
00:34:18.469 --> 00:34:22.909
apartment and I'll pay you X and insurance is
00:34:22.909 --> 00:34:27.269
great. When do I start? So I moved to New York
00:34:27.269 --> 00:34:30.829
and had far more fun than the law allowed. It
00:34:30.829 --> 00:34:36.230
was on an IBM 1130 and the worst, most wretched
00:34:36.230 --> 00:34:40.570
computer I ever worked on. Varian data machine
00:34:40.570 --> 00:34:48.500
16 bit. It was dreadful. Why? Well, the hardware
00:34:48.500 --> 00:34:51.280
was unreliable. I know you're not supposed to
00:34:51.280 --> 00:34:54.059
diss things, but it broke all the time. The software
00:34:54.059 --> 00:34:58.820
was unreliable. It was awkward to use. The card
00:34:58.820 --> 00:35:03.480
reader was unreliable. And we did some amazing
00:35:03.480 --> 00:35:07.719
work on it. We did an early, possibly the first,
00:35:08.280 --> 00:35:12.179
call up and charge a theater ticket application.
00:35:12.570 --> 00:35:17.389
All punch cards, all everything. This is in like
00:35:17.389 --> 00:35:20.650
70s, early 70s? Yeah, early 70s, mid 70s. It's
00:35:20.650 --> 00:35:24.130
called Charge It. Okay. And we ran them every
00:35:24.130 --> 00:35:31.469
night. And it was quite something. So let me
00:35:31.469 --> 00:35:34.150
ask you. So you were still using punch cards
00:35:34.150 --> 00:35:37.909
then? Yep, still using punch cards. How did things
00:35:37.909 --> 00:35:41.590
change when first PCs came around? Actually,
00:35:41.610 --> 00:35:46.130
it started changing before that because Manimation
00:35:46.130 --> 00:35:49.110
bought two Prime 300s, moved out to Long Island,
00:35:49.190 --> 00:35:53.769
and we started doing online services. OK, with
00:35:53.769 --> 00:35:56.269
the terminals, right? That's the intermediate.
00:35:56.590 --> 00:36:01.130
That was my first personal computer. OK, very
00:36:01.130 --> 00:36:03.929
expensive. We're using phone lines. Twelve hundred
00:36:03.929 --> 00:36:09.570
baud. Right. And again, it's been hot for the
00:36:09.570 --> 00:36:12.619
time. You know, I'll get to the story about that,
00:36:12.619 --> 00:36:15.400
but if you don't mind, here's another beg forgiveness
00:36:15.400 --> 00:36:19.079
instead of asking permission. Go ahead. OK. There
00:36:19.079 --> 00:36:22.320
was a data entry clerk and I met her and I ended
00:36:22.320 --> 00:36:25.800
up liking her very much. I owe her a lot. I don't
00:36:25.800 --> 00:36:29.679
think I ever thanked her properly for this. The
00:36:29.679 --> 00:36:32.219
terminals we were using had cursor control keys,
00:36:32.360 --> 00:36:35.219
but we weren't using them. We're using them as
00:36:35.219 --> 00:36:39.010
glass teletypes with cursor addressing. She was
00:36:39.010 --> 00:36:42.090
using the cursor control keys to correct. She
00:36:42.090 --> 00:36:43.869
thought she was correcting bad entries, and the
00:36:43.869 --> 00:36:47.170
data was completely corrupt. And my boss was
00:36:47.170 --> 00:36:50.010
yelling at her. And I said to him, look, let
00:36:50.010 --> 00:36:52.090
me just go talk with her. Let me go see what's
00:36:52.090 --> 00:36:55.230
going on, OK? So I come in. I met her. I said,
00:36:55.230 --> 00:36:58.789
hi. You know, talk about the data. I said, I'm
00:36:58.789 --> 00:37:00.650
not going to yell at you. I said, just show me
00:37:00.650 --> 00:37:03.590
what's going on. And she shows me how she's trying
00:37:03.590 --> 00:37:06.210
to do it. I said, I thought about this for a
00:37:06.210 --> 00:37:10.960
second. And I had an epiphany. I said, do you
00:37:10.960 --> 00:37:13.699
know something? He said, you're right. I'm wrong.
00:37:14.219 --> 00:37:16.820
I said, you are right. It should work that way.
00:37:17.440 --> 00:37:22.280
It really should. I mean, unfortunately, it doesn't.
00:37:22.320 --> 00:37:24.860
Not yet. I said, I don't know if we can make
00:37:24.860 --> 00:37:28.119
it work that way or not. Let me propose the following.
00:37:28.559 --> 00:37:31.699
Make a deal with you. If you do it the way we
00:37:31.699 --> 00:37:35.079
need it done now, I will do my absolute level
00:37:35.079 --> 00:37:37.460
best. to make it work the way you think it should.
00:37:37.500 --> 00:37:40.840
Because you're right. You're right. Okay? But
00:37:40.840 --> 00:37:43.760
we need you to do it this way." And she said,
00:37:43.780 --> 00:37:46.039
okay, and you're so nice. You don't yell at me.
00:37:46.039 --> 00:37:49.400
Everybody else yells at me. I said, well, let's
00:37:49.400 --> 00:37:51.719
get this, let's get this sorted. Okay? If I can
00:37:51.719 --> 00:37:53.679
make it, you are right. If I can make it work
00:37:53.679 --> 00:37:57.639
that way, it'll be good for everybody. So, like
00:37:57.639 --> 00:38:00.800
everything else, I started to do it. Turns out,
00:38:00.960 --> 00:38:05.260
just by accident, just by accident, we had bought
00:38:05.260 --> 00:38:08.219
the exact terminals with the exact features we
00:38:08.219 --> 00:38:11.079
need because they had this halfway mode between
00:38:11.079 --> 00:38:15.719
full screen and start stop called line mode where
00:38:15.719 --> 00:38:19.219
you could read a line at a time. OK, and that
00:38:19.219 --> 00:38:21.880
would fit in the prime three hundred's buffers.
00:38:22.340 --> 00:38:26.000
So I started writing the software and now it
00:38:26.000 --> 00:38:27.519
comes up to me and says, Eric, what the heck
00:38:27.519 --> 00:38:29.019
are you doing? And I said, we're going to have
00:38:29.019 --> 00:38:30.639
full screen mode. We're going to support full
00:38:30.639 --> 00:38:33.659
screen on these terminals. He says, no, I can't
00:38:33.659 --> 00:38:35.920
afford that. I said, well, look, I said, you
00:38:35.920 --> 00:38:38.599
can't afford not to. OK, because looking at our
00:38:38.599 --> 00:38:41.159
software, we spend 80 to 90 percent of our time
00:38:41.159 --> 00:38:44.599
of our lines of code managing the screen. I said,
00:38:44.699 --> 00:38:47.219
we've got to automate that. We have to offload
00:38:47.219 --> 00:38:51.280
this to a library. You see something here, Richie?
00:38:51.480 --> 00:38:56.380
Yeah. OK. And my apologies to the audience for
00:38:56.380 --> 00:39:00.460
the in -joke. But I said, OK, I'll tell you what
00:39:00.460 --> 00:39:03.570
I'll do. I'm your friend. So I'm not going to
00:39:03.570 --> 00:39:05.349
do what you tell me, but here's what I will do.
00:39:05.449 --> 00:39:08.670
I said, I will give you a good solid 40 hours
00:39:08.670 --> 00:39:11.550
a week or more on applications. And if I choose
00:39:11.550 --> 00:39:15.130
to work overtime, OK, I'll work on this. I'll
00:39:15.130 --> 00:39:17.769
work on this on my time. I said, I'm doing this
00:39:17.769 --> 00:39:21.550
because I'm your friend. And I meant it 100%.
00:39:21.550 --> 00:39:23.730
He said, well, if you work more, you should work
00:39:23.730 --> 00:39:25.570
on the applications. I said, well, look, Al,
00:39:25.630 --> 00:39:29.250
you pan overtime. He says, no. I said, OK. So
00:39:29.250 --> 00:39:32.699
if I choose to work extra, Voluntarily, it seems
00:39:32.699 --> 00:39:35.860
to me fair that I should be able to work on what
00:39:35.860 --> 00:39:38.579
I want to. He says, you know, I can't argue with
00:39:38.579 --> 00:39:42.239
that. He's a mensch. He was a real mensch. A
00:39:42.239 --> 00:39:44.860
week later, he calls me up and says, you know
00:39:44.860 --> 00:39:46.900
that back burner project you're working on with
00:39:46.900 --> 00:39:50.119
the screens? I said, yes. He said, give it top
00:39:50.119 --> 00:39:52.460
priority. You're right. He said, I've seen it
00:39:52.460 --> 00:39:55.980
working. You're right. We have to do this. We
00:39:55.980 --> 00:39:58.469
did it. I said to him, you won't regret this.
00:39:58.610 --> 00:40:00.269
In three months, you're going to gain back every
00:40:00.269 --> 00:40:03.369
minute of time I spend on this and it'll all
00:40:03.369 --> 00:40:07.250
be gravy after that. And it was, I mean, I converted
00:40:07.250 --> 00:40:10.849
software. I would take eight cards out of 10,
00:40:10.849 --> 00:40:13.869
nine cards and throw them out. Just throw them
00:40:13.869 --> 00:40:18.150
out and replace them with one call. And the users
00:40:18.150 --> 00:40:21.349
loved it. The developers loved it. Everybody
00:40:21.349 --> 00:40:24.429
loved it. OK, but it wouldn't have happened if
00:40:24.429 --> 00:40:29.210
I hadn't been snarky. Right. Contrary and unmanageable.
00:40:30.389 --> 00:40:32.829
And always, I'm not always right. Goodness knows.
00:40:33.889 --> 00:40:37.289
OK, so then so you're right. First we went with
00:40:37.289 --> 00:40:39.170
punch cards, then we moved to terminals. Right.
00:40:39.429 --> 00:40:41.989
And then we moved to personal computers. When
00:40:41.989 --> 00:40:47.050
PCs arrived. Well, there I was consulting. Right.
00:40:47.170 --> 00:40:51.829
When I was when when sort of manimation stopped
00:40:51.829 --> 00:40:54.230
being a good place for me to work, I went off
00:40:54.230 --> 00:40:59.159
and became a freelance consultant on Prime. I
00:40:59.159 --> 00:41:02.119
was doing stuff with their machines that they
00:41:02.119 --> 00:41:05.360
couldn't do. For example, we had a client, a
00:41:05.360 --> 00:41:06.860
dear friend of mine still works there. They were
00:41:06.860 --> 00:41:12.119
moving to Prime. They used a quirk of the IBM
00:41:12.119 --> 00:41:15.380
1130 software that zero divided by zero was zero.
00:41:16.880 --> 00:41:19.000
Go figure. Go figure. But that's the way it was.
00:41:19.059 --> 00:41:21.460
And they used it. Because on the 1130, you used
00:41:21.460 --> 00:41:23.059
everything. You could get your hooks into it.
00:41:23.139 --> 00:41:27.360
Damaging years. Such a... So how do we make this
00:41:27.360 --> 00:41:30.619
work on the Prime? Regional analysts said, can't
00:41:30.619 --> 00:41:33.000
be done. I said, well, let's have a look. I said,
00:41:33.000 --> 00:41:35.360
I knew something about Prime. They used something
00:41:35.360 --> 00:41:39.679
called virtual I .O. and virtualization, where
00:41:39.679 --> 00:41:43.280
the interrupts would reflect back into user space.
00:41:43.860 --> 00:41:48.309
So I poked around in the... segmented loader
00:41:48.309 --> 00:41:54.150
of all things, the what supported 32 -bit software.
00:41:54.869 --> 00:41:58.949
And I saw the arithmetic fault catcher and what
00:41:58.949 --> 00:42:01.730
it did. I said, well, it looks to me as if I
00:42:01.730 --> 00:42:04.190
just clear a couple of registers, zero divided
00:42:04.190 --> 00:42:07.409
by zero will be zero. Tried it and it worked.
00:42:08.449 --> 00:42:12.650
I called the salesman and said, I got this. And
00:42:12.650 --> 00:42:18.090
one of the regional analysts come up to me And
00:42:18.090 --> 00:42:20.050
shook my hand and said, I hear you've been working
00:42:20.050 --> 00:42:25.269
miracles. I said, well, gosh, thanks. And how
00:42:25.269 --> 00:42:27.050
many times have you heard me say this when we
00:42:27.050 --> 00:42:31.389
work together? But there it was. So after that,
00:42:31.929 --> 00:42:35.369
I got this 10 -day gig at Salomon Brothers. We
00:42:35.369 --> 00:42:39.650
need to do this. And I went to them. I went to
00:42:39.650 --> 00:42:41.190
them. I said, well, look, I could write this
00:42:41.190 --> 00:42:43.449
code you want, but let me show you this utility.
00:42:44.469 --> 00:42:47.889
OK? And if you do... This was on Primes? This
00:42:47.889 --> 00:42:51.429
was on Primes, yeah. If you use this, as long
00:42:51.429 --> 00:42:53.329
as you don't need to change these three fields,
00:42:53.449 --> 00:42:55.670
which were key fields, I said, it'll do what
00:42:55.670 --> 00:42:57.550
you need. I said, is that what you need? I said,
00:42:57.670 --> 00:43:00.650
I don't want to take your money unnecessarily.
00:43:01.389 --> 00:43:04.610
And that, of course, drew the attention of the
00:43:04.610 --> 00:43:07.210
guy who was running the group, who called me
00:43:07.210 --> 00:43:09.789
aside and says, shows me something running on
00:43:09.789 --> 00:43:13.349
an 8 -bit machine. and said, I want to do this
00:43:13.349 --> 00:43:16.030
on the IBM PC. Are you interested? I said, yeah.
00:43:16.389 --> 00:43:18.809
And that's how I got into PC. Unfortunately,
00:43:18.809 --> 00:43:22.190
like so many products, a bulk of products that
00:43:22.190 --> 00:43:28.690
can introduce, it flopped. Which product flopped?
00:43:29.210 --> 00:43:31.349
The one that we tried to write. We called it
00:43:31.349 --> 00:43:37.929
the Idea Processor. Anyway. So did you from then
00:43:37.929 --> 00:43:39.929
on just work on PCs? Then I just started working
00:43:39.929 --> 00:43:43.269
on PCs. And one thing led to another. I had a
00:43:43.269 --> 00:43:47.349
client that wanted their time series analytics
00:43:47.349 --> 00:43:53.710
software moved from the Prime to the PC. I did
00:43:53.710 --> 00:43:56.570
it. So on Prime, what kind of program languages
00:43:56.570 --> 00:43:59.829
did you guys use? We use Fortran almost exclusively
00:43:59.829 --> 00:44:04.489
with a little bit of assembler. There was PL1
00:44:04.489 --> 00:44:08.550
and the Prime 32 -bit series was designed for
00:44:08.550 --> 00:44:13.639
PL1. It had the most interesting combination
00:44:13.639 --> 00:44:16.059
of firmware and operating system software I've
00:44:16.059 --> 00:44:18.000
ever seen. I've never seen anything like it.
00:44:18.440 --> 00:44:25.019
The operating system was Multics. And semaphores,
00:44:25.519 --> 00:44:31.579
process switching, queues, and some other normally
00:44:31.579 --> 00:44:34.019
operating system level functionality was built
00:44:34.019 --> 00:44:37.599
into the instruction set. Built into the instruction
00:44:37.599 --> 00:44:41.739
set was processes are either waiting on some
00:44:41.739 --> 00:44:45.159
semaphore or on the ready list. High priority
00:44:45.159 --> 00:44:48.780
process on the ready list runs. Runs until it
00:44:48.780 --> 00:44:53.860
does IO or waits on semaphore. And so the idle
00:44:53.860 --> 00:44:56.460
task was the schedule. It just ran around looking
00:44:56.460 --> 00:44:59.719
at semaphores, looking for semaphores to notify.
00:45:01.480 --> 00:45:05.400
The interrupt instructions were one or two, interrupt
00:45:05.400 --> 00:45:07.530
routines were one or two instructions long. They
00:45:07.530 --> 00:45:09.670
just nailed semaphores. Everything was on the
00:45:09.670 --> 00:45:13.710
semaphore. It was incredible. Multics was developed,
00:45:13.849 --> 00:45:18.489
was it at MIT? MIT, yeah. Yeah, it's at the MIT
00:45:18.489 --> 00:45:22.869
versus New Jersey. Yeah. Prime was, one of their
00:45:22.869 --> 00:45:27.110
mottos was Multics in a matchbox. So then let's
00:45:27.110 --> 00:45:29.530
fast forward a little bit. What happened when
00:45:29.530 --> 00:45:33.179
the internet arrived? Were you involved in Usenet?
00:45:33.719 --> 00:45:37.039
No, nothing like that. No, I got on the Internet
00:45:37.039 --> 00:45:41.739
late. Well, how did the Internet arrive? Well,
00:45:42.099 --> 00:45:44.719
I don't remember how I got on the Internet. I
00:45:44.719 --> 00:45:47.320
tried to get on Rutgers Internet. They wouldn't
00:45:47.320 --> 00:45:51.320
let me. Did you use a member campus server? I
00:45:51.320 --> 00:45:56.780
used a local ISP called CastleNet for email,
00:45:57.219 --> 00:46:02.639
and email was pine. and You know the odd this
00:46:02.639 --> 00:46:05.519
and that but I'm not still I'm not a heavy internet
00:46:05.519 --> 00:46:08.780
user But I'm just curious in terms of the actual
00:46:08.780 --> 00:46:12.460
work that you were doing What was my first internet
00:46:12.460 --> 00:46:15.619
job? I? Don't remember what my first internet
00:46:15.619 --> 00:46:20.599
job was but somehow I ended up at He met a oh
00:46:20.599 --> 00:46:22.840
I wasn't before that I was in a really nasty
00:46:22.840 --> 00:46:25.440
company direct revenue I was brought in to help
00:46:25.440 --> 00:46:30.800
them go legit. They were in the you know lock
00:46:30.800 --> 00:46:34.440
your hook into windows and show you ads business
00:46:34.440 --> 00:46:38.039
and I was trying to help them get into the legitimate
00:46:38.039 --> 00:46:41.579
advertising on websites business that went south
00:46:41.579 --> 00:46:46.460
and Oh, yeah. Yeah. Yeah. I remember how the
00:46:46.460 --> 00:46:51.000
progression now. I actually Came to work in information
00:46:51.000 --> 00:46:54.190
builders. Okay What was that company? What was
00:46:54.190 --> 00:46:58.170
they doing? They made Focus, a 3GL very prominent
00:46:58.170 --> 00:47:02.389
in its day. I think it's still in use. I was
00:47:02.389 --> 00:47:07.610
in the edit division, which was... So Focus was
00:47:07.610 --> 00:47:10.269
like an early database with like a programming
00:47:10.269 --> 00:47:11.969
language. You could build applications on top
00:47:11.969 --> 00:47:16.210
of it. Yes, it was like a hierarchical database,
00:47:16.289 --> 00:47:18.550
maybe with a little network thrown in. I never
00:47:18.550 --> 00:47:21.489
learned it, even though I worked there. I worked
00:47:21.489 --> 00:47:26.510
on basically cross platform, cross database software,
00:47:26.670 --> 00:47:29.829
middleware. My first project was on the SQ. No,
00:47:29.909 --> 00:47:33.349
my first project was hooking Lotus 123 to focus.
00:47:33.849 --> 00:47:38.010
Oh, interesting. We had a focus to SQL translator.
00:47:39.670 --> 00:47:45.710
123 had a SQL interface data lens. And so my
00:47:45.710 --> 00:47:48.369
job was to the boss came in. I had the world's
00:47:48.369 --> 00:47:50.110
shortest interview there. I looked at him. He
00:47:50.110 --> 00:47:52.860
looked at me. We chatted briefly, and he said,
00:47:52.900 --> 00:47:54.500
well, I'll let you know. I wish I could let you
00:47:54.500 --> 00:47:56.300
know now, but I can't. I'll call you in a couple
00:47:56.300 --> 00:48:01.840
of days. And I was hired. And he gave me the
00:48:01.840 --> 00:48:04.539
developer's manual for data lenses. Well, do
00:48:04.539 --> 00:48:06.159
this. Let me know how you're doing every once
00:48:06.159 --> 00:48:09.000
in a while. And I was getting up one feature
00:48:09.000 --> 00:48:13.039
a week. Sorry, one major feature every three
00:48:13.039 --> 00:48:15.199
weeks. So what were you programming on PC then?
00:48:15.699 --> 00:48:23.420
C. C. Yeah, I switched to C. Then I yeah That
00:48:23.420 --> 00:48:26.039
was sort of how I got that was the company where
00:48:26.039 --> 00:48:28.239
I got to know the internet worked at various
00:48:28.239 --> 00:48:31.019
other places Did you get these Unix at any of
00:48:31.019 --> 00:48:34.300
those places? Oh, yes. Yes. I started I had a
00:48:34.300 --> 00:48:37.739
Sun workstation Oh, okay. Yeah, which one solaris.
00:48:37.739 --> 00:48:41.159
Oh, yeah solaris. I had one in my house for a
00:48:41.159 --> 00:48:44.519
while too. Yeah, I bought one used because I
00:48:44.519 --> 00:48:49.670
got And I still think it's great. I got in enthusiastic
00:48:49.670 --> 00:48:53.710
about the Schleyer -Meller methodology, which
00:48:53.710 --> 00:48:57.550
models software as... That's when object -oriented
00:48:57.550 --> 00:49:00.469
programming kind of started happening. Yes. You're
00:49:00.469 --> 00:49:03.489
talking about the mid -90s? Yeah. Models software
00:49:03.489 --> 00:49:08.550
as a petri net of state machines. I still write
00:49:08.550 --> 00:49:11.550
software that way. People say my software looks
00:49:11.550 --> 00:49:16.710
different. That's one of the reasons why. I managed
00:49:16.710 --> 00:49:20.230
to get my hands on the premier modeling tool
00:49:20.230 --> 00:49:24.869
at the time, IOA from Kennedy Carter, and I needed
00:49:24.869 --> 00:49:27.750
a Sun workstation. So I bought a used one and
00:49:27.750 --> 00:49:32.489
ran it. I still think it's a magnificent software
00:49:32.489 --> 00:49:36.570
development environment. Nobody uses it. But
00:49:36.570 --> 00:49:42.309
during that day, I supervised an independent
00:49:42.309 --> 00:49:45.289
study project at the local high school, a student
00:49:45.289 --> 00:49:48.739
who's now a big wheel at NVIDIA. ran the school
00:49:48.739 --> 00:49:51.619
out of math courses between a sophomore and junior
00:49:51.619 --> 00:49:54.159
year. He went off to Rutgers and took calculus.
00:49:54.820 --> 00:49:58.800
And the assistant superintendent called me. They
00:49:58.800 --> 00:50:01.420
knew me and they said, can you do something for
00:50:01.420 --> 00:50:05.139
us? We need a math course for this kid. We talked
00:50:05.139 --> 00:50:07.460
and he wanted to model, he was interested in
00:50:07.460 --> 00:50:09.519
chaotic behavior, wanted to model an ecosystem.
00:50:09.619 --> 00:50:11.500
And I said, I have the perfect methodology for
00:50:11.500 --> 00:50:15.440
do this. Let's do it. And we did it all by hand.
00:50:16.039 --> 00:50:20.340
And he wrote 3 ,000 lines of C++ code from it
00:50:20.340 --> 00:50:24.860
in six weeks. He was basically just hand translating
00:50:24.860 --> 00:50:28.079
the model into C++. Everything integrated smoothly,
00:50:28.199 --> 00:50:31.579
just slid together. There were two bugs. One
00:50:31.579 --> 00:50:35.139
defect every 1 ,500 lines of code, which is IBM's
00:50:35.139 --> 00:50:38.519
gold standard. And we traced those bugs back
00:50:38.519 --> 00:50:44.360
to the model. He ended up presenting his results
00:50:44.360 --> 00:50:47.360
at an international software conference. I listed
00:50:47.360 --> 00:50:50.719
him as senior author because he did all the work.
00:50:51.340 --> 00:50:56.579
Anyway, C++, that happened at Information Builders.
00:50:56.760 --> 00:50:59.440
I had this brush project for IBM. Didn't you
00:50:59.440 --> 00:51:02.480
also win some kind of a movie award? Oh, yeah.
00:51:02.940 --> 00:51:07.079
Oh, so tell me about that. Well, this is bound
00:51:07.079 --> 00:51:11.360
up with my courtship with Shelley. I was sick
00:51:11.360 --> 00:51:13.679
and tired of the New York social scene. Shelly
00:51:13.679 --> 00:51:15.679
was living in Los Angeles and sick and tired
00:51:15.679 --> 00:51:19.340
of the Los Angeles social scene. We both sort
00:51:19.340 --> 00:51:23.420
of wanted to meet somebody nice and settle down.
00:51:24.019 --> 00:51:26.039
Basically, her best friend married my best friends
00:51:26.039 --> 00:51:28.900
and they set us up cross country. Nice. So we
00:51:28.900 --> 00:51:32.119
started writing letters. I even bought a fountain
00:51:32.119 --> 00:51:40.039
pen. And then we started talking. I bought into
00:51:40.039 --> 00:51:43.480
IBM's long -distance service for a time so I
00:51:43.480 --> 00:51:45.340
could retain at least some of the money I brought
00:51:45.340 --> 00:51:51.159
in. And my buddy Dick Bernstein from graduate
00:51:51.159 --> 00:51:55.019
school came in and showed me a project he was
00:51:55.019 --> 00:51:58.639
working on. He cuts sound, and he's cut sound
00:51:58.639 --> 00:52:02.920
for really famous people like James Cameron.
00:52:05.059 --> 00:52:07.679
I worked on Batman and Back to the Future, it
00:52:07.679 --> 00:52:12.360
turns out. So his idea was take an IBM PC, put
00:52:12.360 --> 00:52:16.940
a top -end graphics card in it, that could take
00:52:16.940 --> 00:52:23.460
external video and do the movie sound cues using
00:52:23.460 --> 00:52:28.079
the computer. The way they had been done classically
00:52:28.079 --> 00:52:30.849
is you take a print and you mutilate it. You
00:52:30.849 --> 00:52:33.670
need to put a metronome track in. You actually
00:52:33.670 --> 00:52:38.010
punch holes in the soundtrack so that it would
00:52:38.010 --> 00:52:41.110
click. Oh, interesting. OK. And if you were going
00:52:41.110 --> 00:52:46.250
to have a piece of the music that had to synchronize
00:52:46.250 --> 00:52:50.210
with a particular action, like for example, sometime
00:52:50.210 --> 00:52:53.289
there'll be a shot of somebody carrying a briefcase
00:52:53.289 --> 00:52:55.710
and they're going to make a handoff. They put
00:52:55.710 --> 00:52:57.929
the briefcase down and there'll be a cymbal clash.
00:52:58.670 --> 00:53:01.250
Right. I forget the name for it. What's the musical
00:53:01.250 --> 00:53:04.170
name for when you hit the music hard? Accent
00:53:04.170 --> 00:53:07.210
an accent, but there's a particular Italian world
00:53:07.210 --> 00:53:11.889
word for it. Anyway, you actually the 10 frames
00:53:11.889 --> 00:53:14.530
before you lay a ruler on the film and you scratch
00:53:14.530 --> 00:53:17.590
it and then you punch out the frame where you
00:53:17.590 --> 00:53:21.309
want the music to be so that the conductor can
00:53:21.309 --> 00:53:23.269
see here it comes with the line moving across
00:53:23.269 --> 00:53:27.590
the screen and flash. So I did the real time
00:53:27.590 --> 00:53:30.519
kernel for this. I had to hook the clock, interrupt,
00:53:31.159 --> 00:53:34.300
speed it up. We'd have a whole queue of events.
00:53:34.579 --> 00:53:36.619
We'd just chew through it. One of the events
00:53:36.619 --> 00:53:39.420
in the queue was advance the computer clock,
00:53:40.219 --> 00:53:42.519
because we didn't want to lose track of the time
00:53:42.519 --> 00:53:46.719
of day, of course. And that won an Oscar and
00:53:46.719 --> 00:53:52.420
an Emmy, used in TV and music production. You
00:53:52.420 --> 00:53:54.619
mean the system itself? The system itself, yes.
00:53:54.619 --> 00:53:59.500
Cool. So I have an Emmy Award in my... in your
00:53:59.500 --> 00:54:05.300
layer. We've been talking for almost an hour.
00:54:06.300 --> 00:54:11.400
What I wanted to ask you, as part of this podcast,
00:54:11.579 --> 00:54:15.679
I would like to have people give advice to newer
00:54:15.679 --> 00:54:17.139
software engineers, people who are just getting
00:54:17.139 --> 00:54:21.409
into the field. What is your advice? So I want
00:54:21.409 --> 00:54:23.849
to ask about that. Also, I know you've interviewed
00:54:23.849 --> 00:54:26.989
lots of people, and I like your interview questions,
00:54:27.050 --> 00:54:29.250
so I'd like to talk about that as well. OK. Let's
00:54:29.250 --> 00:54:33.849
talk about the advice. OK. Computer software
00:54:33.849 --> 00:54:37.869
development, unless you're really in the bowels
00:54:37.869 --> 00:54:40.329
of the operating system, and even then this holds,
00:54:41.530 --> 00:54:47.750
is largely a psychological game. One of the most
00:54:47.750 --> 00:54:53.170
important aspects is empathy. Remembering that
00:54:53.170 --> 00:54:59.530
we're servants. We serve our users. You sound
00:54:59.530 --> 00:55:02.889
like a character from Tron. Well, okay, I've
00:55:02.889 --> 00:55:05.389
never seen, actually I did see Tron, I think.
00:55:05.389 --> 00:55:08.010
I don't remember it, but I did see it. But we
00:55:08.010 --> 00:55:14.829
are, look, who funds us? Who pays us? Who gives
00:55:14.829 --> 00:55:18.309
us our satisfaction? You know, those of us who
00:55:18.300 --> 00:55:22.199
who writes software that makes it out in the
00:55:22.199 --> 00:55:25.659
real, in the general world. I don't want to say
00:55:25.659 --> 00:55:27.619
the real world because every aspect of the world
00:55:27.619 --> 00:55:30.840
is real. Well, if I may interrupt, so like one
00:55:30.840 --> 00:55:34.940
of the things I advise students when, which kind
00:55:34.940 --> 00:55:38.019
of saying essentially what you're saying is I
00:55:38.019 --> 00:55:40.280
tell them, you know, study humanities because
00:55:40.280 --> 00:55:42.820
you'll be building systems for humans. Exactly.
00:55:43.559 --> 00:55:47.079
And then I think we're both fans of parole, aren't
00:55:47.079 --> 00:55:52.800
we? Um, but as Agatha Christie's or Kiel Paro
00:55:52.800 --> 00:55:55.800
would say, you must use the little gray cells
00:55:55.800 --> 00:56:01.099
and it's true, you know, learn how to solve problems.
00:56:01.320 --> 00:56:03.019
It's much more important to learn how to solve
00:56:03.019 --> 00:56:06.039
problems than to learn technology. The technology
00:56:06.039 --> 00:56:09.559
will sort itself as you use it, but learn how
00:56:09.559 --> 00:56:12.960
to see a problem, learn how to solve a problem,
00:56:13.000 --> 00:56:16.179
learn how to translate a user's request for a
00:56:16.179 --> 00:56:20.570
particular system. into a statement of need.
00:56:21.269 --> 00:56:25.489
One of the things I ask in job interviews, you
00:56:25.489 --> 00:56:29.250
know, sort of towards the end, I say, I need
00:56:29.250 --> 00:56:34.130
to know one thing. One thing where I want to
00:56:34.130 --> 00:56:38.809
start is, where does it hurt? Every organization
00:56:38.809 --> 00:56:43.050
has a set of problems that, great, you know,
00:56:43.050 --> 00:56:46.150
they hold things back, but they don't seem to
00:56:46.150 --> 00:56:49.639
be They never become acute, but they're chronic.
00:56:50.420 --> 00:56:54.420
I said, I'm interested in those problems. Okay.
00:56:54.599 --> 00:56:58.699
Because I found that solving them yields far
00:56:58.699 --> 00:57:02.440
more benefits than everybody, generally anybody
00:57:02.440 --> 00:57:07.440
ever conceived. Those are the grit in the works.
00:57:08.219 --> 00:57:10.139
That's what I like to, that's how I like to clean
00:57:10.139 --> 00:57:18.349
that out. Okay. So learn to solve problems. For
00:57:18.349 --> 00:57:23.590
goodness sakes, learn about yourself. Learn what
00:57:23.590 --> 00:57:25.349
you like to do. Learn what you don't like to
00:57:25.349 --> 00:57:28.429
do. Pay attention to what you do well. Pay attention
00:57:28.429 --> 00:57:31.849
to what you don't do well. That matters too.
00:57:32.510 --> 00:57:34.909
People say, oh, my weakness is, oh, my gosh,
00:57:34.909 --> 00:57:38.190
it's terrible. It's you. It's you. You have to
00:57:38.190 --> 00:57:40.489
live with it. You have no choice. Pay attention
00:57:40.489 --> 00:57:43.630
to it. Learn how to live with it gracefully.
00:57:44.130 --> 00:57:46.949
I'm the world's worst clerk. I live with it as
00:57:46.949 --> 00:57:49.530
gracefully as I can. I live in a world where
00:57:49.530 --> 00:57:53.769
clerkship trumps everything. Every time you do
00:57:53.769 --> 00:57:55.710
anything, you have to be a clerk. Go pick up
00:57:55.710 --> 00:57:58.429
a prescription at the grocery store. Buy groceries.
00:57:58.750 --> 00:58:02.110
Go, go, go. I don't know. Get your driver's license
00:58:02.110 --> 00:58:05.389
renewed. Anything. You run against clerkship.
00:58:05.969 --> 00:58:09.730
We're a society of clerking. Well, what exactly
00:58:09.730 --> 00:58:12.739
do you mean? Filling out forms filling out a
00:58:12.739 --> 00:58:15.059
form that seems simple to everybody. I always
00:58:15.059 --> 00:58:18.900
take two copies Uh -huh one to mess up and then
00:58:18.900 --> 00:58:22.500
and and scratch over and then copy from The one
00:58:22.500 --> 00:58:25.880
I messed up to the one I turned in always you'll
00:58:25.880 --> 00:58:29.300
always see me take two I'm not trying to be selfish.
00:58:29.300 --> 00:58:31.300
I don't want to generate the waste, but I need
00:58:31.300 --> 00:58:37.280
it Everybody has something now When it comes
00:58:37.280 --> 00:58:40.840
to solving problems, I advocate them the following
00:58:40.840 --> 00:58:44.079
with the caveat that it doesn't apply to everybody,
00:58:44.280 --> 00:58:48.320
but I suggest that everybody give it a try. Okay.
00:58:49.239 --> 00:58:53.480
Start with the nouns. What's in it? What's it
00:58:53.480 --> 00:58:56.360
made of? How do the pieces interrelate? Okay.
00:58:56.500 --> 00:58:59.960
And go finer and finer and finer and finer. For
00:58:59.960 --> 00:59:03.679
example, okay. Let's look at a typical business
00:59:03.679 --> 00:59:08.099
concept, a customer. Okay. Ask yourself the question,
00:59:08.380 --> 00:59:11.980
am I a customer? Well, the question is incomplete,
00:59:12.420 --> 00:59:15.619
okay? You can't just be a customer in isolation.
00:59:15.619 --> 00:59:19.599
You have to be a customer of some other organization.
00:59:20.619 --> 00:59:22.960
So what is a customer? Do customers walk around
00:59:22.960 --> 00:59:27.320
in the real world? No. People walk around in
00:59:27.320 --> 00:59:30.440
the real world and they act as customer. Customer
00:59:30.440 --> 00:59:32.940
is not a first -class object in the way that
00:59:32.940 --> 00:59:35.679
people and coffee cups and chairs and tables
00:59:35.679 --> 00:59:39.380
and computers and the natural numbers are, okay?
00:59:39.610 --> 00:59:43.989
Customer is a role. You learn that. What do you
00:59:43.989 --> 00:59:46.010
need help with regarding a customer who is a
00:59:46.010 --> 00:59:49.190
role? Please provide more details so I can...
00:59:49.190 --> 00:59:54.809
Leave that in. Yeah, Gemini decided to pipe in.
00:59:55.090 --> 01:00:00.489
Yeah, Gemini must think we're a deli. Buttered
01:00:00.489 --> 01:00:02.849
roll! Yeah, that's good. I think I'm going to
01:00:02.849 --> 01:00:08.909
leave that in the recording. So, I say... that
01:00:08.909 --> 01:00:12.690
the truth is in the nouns if you go deep enough.
01:00:13.190 --> 01:00:18.570
Learn to go deep, okay? Learn to ask what? Never
01:00:18.570 --> 01:00:21.949
ask why. Why is a challenge. If you need to know
01:00:21.949 --> 01:00:26.170
why, say, could you provide some context, please?
01:00:26.190 --> 01:00:30.929
I'm confused. Don't be afraid to be confused
01:00:30.929 --> 01:00:34.869
and to lack knowledge. You can use them as tools.
01:00:35.969 --> 01:00:40.250
Say, I'm sorry, I... I don't make jewelry. Please
01:00:40.250 --> 01:00:42.409
tell me about making jewelry. And I did write
01:00:42.409 --> 01:00:44.809
a system that made jewelry that recovered eight
01:00:44.809 --> 01:00:48.010
pounds of gold, eight pounds, a gallon of milk's
01:00:48.010 --> 01:00:53.010
worth of gold from dead inventory. Please tell
01:00:53.010 --> 01:00:58.190
me. I want to know what you touch. Don't ask
01:00:58.190 --> 01:01:00.349
people what they do. They can't tell you. They
01:01:00.349 --> 01:01:02.869
internalize it too much. I can't tell you how
01:01:02.869 --> 01:01:06.539
I write software. No. Ask people what they touch,
01:01:06.719 --> 01:01:08.559
what they handle, what passes over their desk,
01:01:09.019 --> 01:01:13.000
what their colleagues touch, how items and information
01:01:13.000 --> 01:01:19.039
moves. I know one of your favorite questions
01:01:19.039 --> 01:01:21.539
that you would ask in software engineering interviews
01:01:21.539 --> 01:01:25.000
was the quadratic equation. Can you explain that?
01:01:25.219 --> 01:01:30.000
I always like that. When I interview people,
01:01:30.519 --> 01:01:33.210
I like to know... to discover how they think,
01:01:33.449 --> 01:01:35.550
to actually take a journey with them through
01:01:35.550 --> 01:01:40.250
their thoughts. And I'm evaluating two things,
01:01:40.630 --> 01:01:45.349
what they can do and what they can learn. And
01:01:45.349 --> 01:01:48.210
I'd rather work with somebody who can do little
01:01:48.210 --> 01:01:50.809
and learn a lot than someone who can do a lot
01:01:50.809 --> 01:01:54.170
and learn a little, because the half -life of
01:01:54.170 --> 01:01:56.909
knowledge is very, very short. Especially in
01:01:56.909 --> 01:02:00.900
this field. Yeah. I mean, at one time, I could
01:02:00.900 --> 01:02:04.340
recite entire prime manuals from memory. What
01:02:04.340 --> 01:02:07.280
good is that now? It's good material for storytelling,
01:02:07.719 --> 01:02:10.059
and it'll be clear to anyone who listens to this,
01:02:10.059 --> 01:02:14.739
I love telling stories. But as a practical matter,
01:02:15.420 --> 01:02:20.360
it's not worth much. But the ability to go into
01:02:20.360 --> 01:02:23.579
a system and learn about it and use it effectively,
01:02:24.179 --> 01:02:26.840
to come up to the speed, to come up to that 80
01:02:26.840 --> 01:02:29.119
% level where you're able to function quickly,
01:02:30.889 --> 01:02:35.030
by digging into the nouns, okay, which is how
01:02:35.030 --> 01:02:39.670
I do it. That will sustain you for a lifetime.
01:02:39.929 --> 01:02:44.469
So the question is, you know, how do you think?
01:02:44.989 --> 01:02:47.130
No, no. So the question that you ask. The question
01:02:47.130 --> 01:02:51.070
that I ask is, it's very simple, okay? I like
01:02:51.070 --> 01:02:53.190
to ask this with people at the beginning of their
01:02:53.190 --> 01:02:56.989
careers. I say, you know, there's no requirement
01:02:57.360 --> 01:03:01.579
that you know the answer to this question. Not
01:03:01.579 --> 01:03:04.300
knowing or not remembering is fine, but do you
01:03:04.300 --> 01:03:07.059
happen to remember the formula for solving a
01:03:07.059 --> 01:03:09.920
quadratic equation? No tricks, just what we all
01:03:09.920 --> 01:03:13.420
learned in high school. I just want to make sure
01:03:13.420 --> 01:03:17.559
you know it by way of preparing to ask a question.
01:03:18.539 --> 01:03:21.159
And we make sure that they remember the formula
01:03:21.159 --> 01:03:25.019
properly. I said, OK, all I want you to do is
01:03:25.019 --> 01:03:28.340
to write a program to solve quadratic equations.
01:03:29.340 --> 01:03:33.059
You may be in C. Solve it. Any way you want.
01:03:33.159 --> 01:03:35.199
Any language you want. You can write it in, you
01:03:35.199 --> 01:03:37.079
know, just write the steps down if you want.
01:03:37.539 --> 01:03:39.280
You don't have to write it in computer language.
01:03:39.360 --> 01:03:42.039
I just want to see how you go about doing it.
01:03:42.539 --> 01:03:46.099
Now, you might ask, well, they know the answer.
01:03:46.800 --> 01:03:49.320
Okay. Why do you ask them? Why do you give them
01:03:49.320 --> 01:03:51.179
the answer? Well, of course, I don't give them
01:03:51.179 --> 01:03:53.659
the answer. I give them the easy part. Okay.
01:03:54.079 --> 01:03:58.119
The hard part. What are the inputs? What are
01:03:58.119 --> 01:04:01.099
the outputs? What are the outputs to add to that?
01:04:01.880 --> 01:04:05.760
Okay. What are the preconditions? Okay. Well,
01:04:05.780 --> 01:04:08.980
post -conditions and invariants are not so relevant
01:04:08.980 --> 01:04:13.960
in this case. Okay. But I've had people do the
01:04:13.960 --> 01:04:18.500
doggonest things. A, B, and C int. Not checking
01:04:18.500 --> 01:04:22.860
if A is zero is not zero. Okay. A is non -zero.
01:04:23.219 --> 01:04:26.659
What do you do if it's zero? Well, what are your
01:04:26.659 --> 01:04:29.659
choices? Well, you can say naughty, naughty.
01:04:30.619 --> 01:04:34.039
Or you can say, ah, OK, it's zero. I'll treat
01:04:34.039 --> 01:04:37.579
this as a linear equation. And there are arguments
01:04:37.579 --> 01:04:43.920
for either one. It's ambiguous. I want the candidate,
01:04:43.960 --> 01:04:49.199
the potential future colleague, to tell me, what's
01:04:49.199 --> 01:04:52.039
your opinion? These are matters of opinion and
01:04:52.039 --> 01:04:58.360
value. personal values and engineering methodology.
01:04:59.539 --> 01:05:03.739
What do you do if the discriminant is negative?
01:05:04.519 --> 01:05:08.639
What do you do? Well, some people would say you
01:05:08.639 --> 01:05:11.039
throw an exception because it's wrong. But is
01:05:11.039 --> 01:05:15.579
it wrong to ask how many roots an equation has
01:05:15.579 --> 01:05:20.019
when it has none? Is it wrong? What do you do
01:05:20.019 --> 01:05:22.599
in the degenerate case where there's only one
01:05:22.599 --> 01:05:28.960
root? The ideal candidate would treat A equals
01:05:28.960 --> 01:05:31.000
zero one way or the other. It doesn't matter.
01:05:31.139 --> 01:05:34.219
As I say, there's justification for both. Return
01:05:34.219 --> 01:05:36.599
zero roots if there are zero roots. Return one
01:05:36.599 --> 01:05:38.679
root if there's one root. Return two roots if
01:05:38.679 --> 01:05:41.159
there are two roots. So you return an array or
01:05:41.159 --> 01:05:46.039
a list. I don't care which. And I've had in interviews,
01:05:46.360 --> 01:05:48.559
I was interviewing at some bank and they asked
01:05:48.559 --> 01:05:53.530
me these really easy questions. I wanted to get
01:05:53.530 --> 01:05:56.210
a feel of them, so I told them, if you're interested
01:05:56.210 --> 01:05:59.389
in what I would ask in circumstances like this,
01:05:59.389 --> 01:06:01.590
and I gave them this question. They looked at
01:06:01.590 --> 01:06:04.670
me puzzled, and I told them why, and they said,
01:06:05.349 --> 01:06:08.289
but that's unfair. I said, nobody's ever said
01:06:08.289 --> 01:06:11.769
that before. What's unfair about it? Well, the
01:06:11.769 --> 01:06:14.349
candidate doesn't know what you want. I said,
01:06:14.610 --> 01:06:18.670
but that's the way it is in this world. It's
01:06:18.670 --> 01:06:23.320
ambiguous. I'm part of the job as a software
01:06:23.320 --> 01:06:27.679
engineer is to find out what the right thing
01:06:27.679 --> 01:06:33.019
is. Okay, so just to wrap it up, so what do you
01:06:33.019 --> 01:06:40.599
do now that you've retired? Well, I mentor a
01:06:40.599 --> 01:06:44.579
robotics team and I'm looking for something interesting
01:06:44.579 --> 01:06:49.260
part -time to do, not necessarily lucrative immediately.
01:06:51.039 --> 01:06:53.960
I'm actually toying with the idea of learning
01:06:53.960 --> 01:06:57.739
COBOL because there's lots and lots and lots
01:06:57.739 --> 01:07:00.119
of part -time gigs using COBOL. There's going
01:07:00.119 --> 01:07:03.300
to be lots of gigs to fix a vibe code and application.
01:07:03.519 --> 01:07:05.820
Yes, there is. That I think I could just walk
01:07:05.820 --> 01:07:09.280
in and do. Fixing applications, again, it would
01:07:09.280 --> 01:07:11.760
be very interesting because debugging, again,
01:07:11.800 --> 01:07:15.320
is largely a psychological game because you have
01:07:15.320 --> 01:07:17.559
to get in the head of the original author. How
01:07:17.559 --> 01:07:20.159
you get in chat GPT's head, That would be an
01:07:20.159 --> 01:07:23.340
interesting question. You don't want to go there.
01:07:24.000 --> 01:07:26.400
Okay. Well, thanks very much. Oh, you're welcome.
01:07:26.539 --> 01:07:28.780
That was a great conversation. I enjoyed it too.
01:07:29.280 --> 01:07:32.219
I hope our readers do as well. Listeners. Sorry,
01:07:32.460 --> 01:07:34.559
not readers. I hope our listeners do as well.
01:07:35.480 --> 01:07:37.639
Well, if you got to this point, thank you so
01:07:37.639 --> 01:07:40.619
much for listening and we'll see you next time.
01:07:55.819 --> 01:07:58.739
you you you
00:00:00.000 --> 00:00:02.399
Welcome to the Computing There I Was podcast.
00:00:02.520 --> 00:00:06.500
I am your host, Richie Bielak. In this podcast,
00:00:06.639 --> 00:00:09.380
we'll have conversations with veterans of the
00:00:09.380 --> 00:00:11.980
computing industry to hear about their adventures.
00:00:30.640 --> 00:00:34.060
Welcome to Computing There I Was podcast. I am
00:00:34.060 --> 00:00:36.740
your host, Richie B. And today we are talking
00:00:36.740 --> 00:00:39.520
to Eric Mintz, a software engineer who recently
00:00:39.520 --> 00:00:42.500
retired from Google. So hi, Eric. How are you?
00:00:42.740 --> 00:00:44.600
Oh, good, Richie. How are you? I'm fine. Good
00:00:44.600 --> 00:00:47.899
to see you again. Nice to see you. So on this
00:00:47.899 --> 00:00:51.000
podcast, what I hope to do is to have a conversation
00:00:51.000 --> 00:00:52.880
with people who worked in computing for a while,
00:00:53.240 --> 00:00:55.420
and just to hear their stories, because there's
00:00:55.420 --> 00:00:57.939
all this cool stuff that happened in past, like,
00:00:58.039 --> 00:01:02.060
50 years. So to start with, tell me how you got
00:01:02.060 --> 00:01:05.060
interested in computers. What happened? Oh, Lord.
00:01:06.359 --> 00:01:11.260
Well, it's all part of the space age technology
00:01:11.260 --> 00:01:14.780
catch up with the Soviet Union. I rode that wave.
00:01:15.739 --> 00:01:20.040
If I ever get to the hereafter, there are there's
00:01:20.040 --> 00:01:22.280
one person I want to thank for saving my life
00:01:22.280 --> 00:01:26.980
twice. And that's Nikita Khrushchev. You left,
00:01:27.200 --> 00:01:29.579
but. Just for people who might not know, when
00:01:29.579 --> 00:01:33.159
was this? This is mid -60s, right? In the late
00:01:33.159 --> 00:01:36.980
50s and early 60s. I don't know when Stalin died.
00:01:37.439 --> 00:01:40.640
It was after World War II, I know that. It was
00:01:40.640 --> 00:01:45.019
in the 50s, I believe. Yeah. When Nikita Khrushchev
00:01:45.019 --> 00:01:49.719
became the premier, he did two things for which
00:01:49.719 --> 00:01:52.640
I shall be eternally grateful, or at least for
00:01:52.640 --> 00:01:55.540
as long as uncomplimentous. First thing he did
00:01:55.540 --> 00:02:01.359
was launch Sputnik. which really scared the United
00:02:01.359 --> 00:02:05.700
States. I think we could use another Sputnik
00:02:05.700 --> 00:02:09.580
moment. But all of a sudden, the United States
00:02:09.580 --> 00:02:13.620
realized that the people who were interested
00:02:13.620 --> 00:02:18.580
in technology, the people who'd been on the outs
00:02:18.580 --> 00:02:23.780
were actually a national resource. And there
00:02:23.780 --> 00:02:28.520
was a whole spate attention to education that
00:02:28.520 --> 00:02:31.539
gave us the school mathematics study group, the
00:02:31.539 --> 00:02:35.500
new math that unfortunately didn't work, I think,
00:02:35.500 --> 00:02:38.840
largely because teachers were not prepared to
00:02:38.840 --> 00:02:42.500
teach it. I was fortunate to have a teacher who
00:02:42.500 --> 00:02:44.879
did know how to teach it. The man saved my life.
00:02:45.120 --> 00:02:49.139
I named my son after him, Commander John P. Howitt.
00:02:49.939 --> 00:02:53.340
You and your whole family are missed. And then
00:02:53.340 --> 00:02:55.740
the other thing that Nikita Khrushchev did was
00:02:55.740 --> 00:02:58.520
allow me to survive to be an adult by backing
00:02:58.520 --> 00:03:04.960
down during the Cuban Missile Crisis. I'm no
00:03:04.960 --> 00:03:08.699
historian. There's lots of information on it,
00:03:08.699 --> 00:03:12.780
but the world teeters the brink of nuclear holocaust
00:03:12.780 --> 00:03:17.919
for a couple of weeks. So what grade was that
00:03:17.919 --> 00:03:21.080
teacher in? He was my seventh grade mathematics,
00:03:21.240 --> 00:03:24.580
and he was my mentor all through high school.
00:03:24.599 --> 00:03:31.699
He encouraged me to develop mathematically, showed
00:03:31.699 --> 00:03:34.580
me that mathematics and arithmetic were different
00:03:34.580 --> 00:03:37.120
subjects, totally different ways of thinking,
00:03:37.740 --> 00:03:42.219
totally different parts of the brain. I, by actual
00:03:42.219 --> 00:03:45.819
examination, am the world's worst clerk in terms
00:03:45.819 --> 00:03:50.349
of the clerical aptitude, I score in the third
00:03:50.349 --> 00:03:57.409
percentile in terms of spatial, mathematical,
00:03:57.650 --> 00:04:00.530
inductive, deductive reasoning. I score very
00:04:00.530 --> 00:04:03.610
high. Yeah, I took a test like that when I was
00:04:03.610 --> 00:04:07.169
in high school. So my special spatial reasoning
00:04:07.169 --> 00:04:11.590
also was kind of up there. Yeah. So but let's
00:04:11.590 --> 00:04:13.189
get the computer. So when the computers come
00:04:13.189 --> 00:04:15.990
in here. Well, there I was in seventh grade.
00:04:16.930 --> 00:04:20.170
I have to preface this by saying I spent my childhood
00:04:20.170 --> 00:04:23.250
and reached my adult height and weight in Ithaca,
00:04:23.370 --> 00:04:25.810
New York. Whether I grew up, of course, is a
00:04:25.810 --> 00:04:30.470
completely different matter. But it's a university
00:04:30.470 --> 00:04:34.490
town and in some respects one of the last bastions
00:04:34.490 --> 00:04:37.610
of feudalism in the United States. The society
00:04:37.610 --> 00:04:39.970
there at the time was highly stratified with
00:04:39.970 --> 00:04:47.290
the university faculty in charge and one Son
00:04:47.290 --> 00:04:49.610
of a faculty member named Tom not the faculty
00:04:49.610 --> 00:04:53.029
member, but my classmate Tom Dimmick again to
00:04:53.029 --> 00:04:56.910
whom I'm eternally grateful I was in my geometry
00:04:56.910 --> 00:05:01.610
class. He suggested that we go bum computer time
00:05:01.610 --> 00:05:07.550
from Cornell and I I'll Say that the difference
00:05:07.550 --> 00:05:10.889
between me and the juvenile delinquents in my
00:05:10.889 --> 00:05:15.290
cohort was the value of the items we stole, you
00:05:15.290 --> 00:05:20.100
know, they shoplift trinkets and I'd steal hours
00:05:20.100 --> 00:05:23.060
of computer time and so very expensive. How did
00:05:23.060 --> 00:05:24.980
you manage to do that? So first of all, what
00:05:24.980 --> 00:05:27.339
kind of computer was this? It was a control data
00:05:27.339 --> 00:05:33.279
1604 and they had an open to undergraduates policy
00:05:33.279 --> 00:05:36.360
of you could sign in and write a small program
00:05:36.360 --> 00:05:40.120
in a teaching language called Cork, which is
00:05:40.120 --> 00:05:45.120
on Eric Raymond's collection of Bad computer
00:05:45.120 --> 00:05:47.620
languages if you want to give it a try you can
00:05:47.620 --> 00:05:51.660
actually download it. I I did it once I didn't
00:05:51.660 --> 00:05:55.720
never Tried it. So when you when you say you
00:05:55.720 --> 00:05:57.439
wrote the programs, how did you actually enter
00:05:57.439 --> 00:05:59.100
them to computer was the punch card? Yeah, it
00:05:59.100 --> 00:06:01.019
was absolutely punch cards. You went to the campus
00:06:01.019 --> 00:06:03.819
store You bought the coding right forms of coding
00:06:03.819 --> 00:06:07.180
coding was very rigid everything had to be just
00:06:07.180 --> 00:06:13.410
so and one of the first My second computer programming
00:06:13.410 --> 00:06:17.310
language was IBM drum card. Because you could...
00:06:17.310 --> 00:06:18.910
Oh, you mean the drum card that goes in the key
00:06:18.910 --> 00:06:22.449
punch? Yes, exactly. Where you set up the card
00:06:22.449 --> 00:06:26.110
punch equivalent of tab stops. I guess for our
00:06:26.110 --> 00:06:28.209
listeners, maybe I'll put a link in the notes
00:06:28.209 --> 00:06:30.769
to like a video of a key punch so you can see
00:06:30.769 --> 00:06:32.850
what we're talking about. Right. Now, be sure
00:06:32.850 --> 00:06:35.569
that it's the old 26, not the old 29. The old
00:06:35.569 --> 00:06:38.230
29 was the high price spread. I don't even think
00:06:38.230 --> 00:06:41.259
it had been introduced yet. OK, so there you
00:06:41.259 --> 00:06:46.480
are. There I am, happily writing Quark. So what
00:06:46.480 --> 00:06:48.839
was Quark like as a language? Was it close to
00:06:48.839 --> 00:06:54.899
assembler or was it more basic? No, it was a
00:06:54.899 --> 00:06:58.639
deliberately designed to be easy to use for the
00:06:58.639 --> 00:07:03.220
time language. It's been described as a mixture
00:07:03.220 --> 00:07:07.180
of a bit of alcohol and linear programming and
00:07:07.180 --> 00:07:09.639
random stuff. One of the things it tried to do
00:07:09.639 --> 00:07:13.639
is when it detected a mistake, it tried to correct
00:07:13.639 --> 00:07:15.360
it. For example, if you misspelled a variable,
00:07:15.699 --> 00:07:20.220
it would assume. Right. And I have a similar
00:07:20.220 --> 00:07:23.750
experience. I used PLC, which was I think it
00:07:23.750 --> 00:07:26.189
was a version of PL1. Wasn't it from Cornell?
00:07:26.209 --> 00:07:28.850
Yes. Same professor, Professor Conway. And it
00:07:28.850 --> 00:07:30.889
did the same thing. And I remember that when
00:07:30.889 --> 00:07:32.990
you make a mistake and try to correct it, sometimes
00:07:32.990 --> 00:07:35.790
you would just go off completely into the weeds.
00:07:37.449 --> 00:07:41.189
We've seen this return, haven't we? We'll get
00:07:41.189 --> 00:07:45.069
to that. I've not tried it. But anyway, PLC has
00:07:45.069 --> 00:07:48.490
been said to stand for programming language by
00:07:48.490 --> 00:07:52.540
Professor Conway. I see. But I think the C was
00:07:52.540 --> 00:07:59.060
meant to stand for Cornell. Anyway, so I had
00:07:59.060 --> 00:08:01.800
the same teacher of that geometry class, who
00:08:01.800 --> 00:08:07.079
I will not name, decided to help a few of us
00:08:07.079 --> 00:08:10.139
who wanted to use computing. So he gave us the
00:08:10.139 --> 00:08:13.959
book, which was nice. I read the book in order
00:08:13.959 --> 00:08:17.000
to read the book. Now remember, I was in 15,
00:08:18.040 --> 00:08:22.480
sophomore, hadn't taken pre -algebra, hadn't
00:08:22.480 --> 00:08:25.560
taken anything. Here was a course that presumed
00:08:25.560 --> 00:08:28.879
at least pre -calculus. So I had to learn about
00:08:28.879 --> 00:08:31.220
radians. I had to learn trigonometric identities.
00:08:31.279 --> 00:08:33.940
I had to learn natural logarithms. I had to learn
00:08:33.940 --> 00:08:37.659
all this stuff that I was slated to learn the
00:08:37.659 --> 00:08:41.279
next year. That had interesting implications
00:08:41.279 --> 00:08:43.860
when I got to that course. It was a case of,
00:08:44.000 --> 00:08:47.059
please, could we please learn something? You
00:08:47.059 --> 00:08:49.840
know, while my classmates struggled, it was not
00:08:49.840 --> 00:08:52.600
really very considerate of me. I owe a number
00:08:52.600 --> 00:08:56.600
of people a number of apologies for that. But,
00:08:56.820 --> 00:09:00.399
you know, youth. Right. But anyway, my first
00:09:00.399 --> 00:09:03.500
program was, well, I was looking for something
00:09:03.500 --> 00:09:09.080
that was simple to understand and hard to do.
00:09:09.320 --> 00:09:12.519
Something I could understand, but either could
00:09:12.519 --> 00:09:15.419
not or would not do by hand. And it occurred
00:09:15.419 --> 00:09:19.879
to me that I could approximate pi by calculating
00:09:19.879 --> 00:09:24.500
the area of a unit circle by treating it as a
00:09:24.500 --> 00:09:28.320
series of trapezoids. Right. Okay. Trapezoidal
00:09:28.320 --> 00:09:30.600
rule, you know. It's basically calculus, really.
00:09:31.899 --> 00:09:34.580
It's integration. It's integration. It is. And
00:09:34.580 --> 00:09:40.159
I knew it. But in any case, so I set the program
00:09:40.159 --> 00:09:43.159
up and I wanted to see how it converged with,
00:09:43.340 --> 00:09:50.370
as you narrowed the width of the Little little
00:09:50.370 --> 00:09:54.830
trapezoids. Yeah, and of course thinking it at
00:09:54.830 --> 00:09:59.570
it now from this was 1965 so goodness me. It's
00:09:59.570 --> 00:10:05.250
what? 70 years ago now I never was good at arithmetic
00:10:05.250 --> 00:10:10.289
meaning 60 years ago. Yeah, so I Did it backwards?
00:10:10.289 --> 00:10:16.340
Okay, you when you? add a list of floating point
00:10:16.340 --> 00:10:18.620
numbers, you want to add from the smallest to
00:10:18.620 --> 00:10:22.879
the largest to preserve significance. But what
00:10:22.879 --> 00:10:25.860
did I know back then? Well, you had floating
00:10:25.860 --> 00:10:28.779
point numbers. That's good. That's good. All
00:10:28.779 --> 00:10:32.980
that Cork had was floating points. And I think
00:10:32.980 --> 00:10:37.059
it had strings too. That's it. But in any case,
00:10:37.759 --> 00:10:40.919
so I set it up and I coded it on the coding pads
00:10:40.919 --> 00:10:45.120
and I showed it to The advisor and he looked
00:10:45.120 --> 00:10:48.379
at it and he said to me I remember this like
00:10:48.379 --> 00:10:50.779
it was yesterday, which probably means I remember
00:10:50.779 --> 00:10:54.759
it badly, but I Said to me is that your first
00:10:54.759 --> 00:10:58.539
program and I said Yeah, I've written one before
00:10:58.539 --> 00:11:03.039
so yes And you're going to calculate pi I said
00:11:03.039 --> 00:11:06.720
well, I hope to Said don't you want to do something
00:11:06.720 --> 00:11:09.500
simpler like read two numbers add them and print
00:11:09.500 --> 00:11:12.519
this result. They said No, I could do that by
00:11:12.519 --> 00:11:15.700
hand. It's not very interesting at all. He said,
00:11:15.700 --> 00:11:18.200
well, if that's your first program, you're out
00:11:18.200 --> 00:11:21.620
of here. So I picked up my program and I left.
00:11:23.100 --> 00:11:25.679
And I went up to Cornell and punched it up. And
00:11:25.679 --> 00:11:28.740
after many attempts at getting it work, I did.
00:11:29.500 --> 00:11:31.759
Did it produce a good result? It produced a decent
00:11:31.759 --> 00:11:33.779
result. I got five figures out of it. Oh, that's
00:11:33.779 --> 00:11:37.000
pretty good. Yeah. And so I took it over and
00:11:37.000 --> 00:11:40.590
showed it to Mr. Howitt. who just crowed, and
00:11:40.590 --> 00:11:43.070
then he showed me another cool way to calculate
00:11:43.070 --> 00:11:47.110
pi by Monte Carlo method. You know what? You
00:11:47.110 --> 00:11:53.470
throw darts at the unit square, which is very
00:11:53.470 --> 00:11:56.309
cool. I understand it converges relatively slowly.
00:11:56.750 --> 00:11:59.850
I've not analyzed it, but I did it. There was
00:11:59.850 --> 00:12:02.990
a random number generator in Cork, so it was
00:12:02.990 --> 00:12:08.330
really very nice. And then I sort of said, well,
00:12:08.509 --> 00:12:13.149
Okay, I'd like to try Fortran and Assembler.
00:12:13.909 --> 00:12:18.610
Now, for that, you required money. Now, what
00:12:18.610 --> 00:12:24.129
I did was I gathered my programs together. I
00:12:24.129 --> 00:12:26.970
walked into the office of the director, John
00:12:26.970 --> 00:12:32.990
Rudan at Cornell. I told him who I was. I told
00:12:32.990 --> 00:12:37.110
him what I was doing. and I asked for access
00:12:37.110 --> 00:12:40.330
and he gave me a staff account. Wow, that's pretty
00:12:40.330 --> 00:12:43.990
cool. Yeah, it was very cool. I learned a big
00:12:43.990 --> 00:12:47.389
lesson from that. And you've probably, having
00:12:47.389 --> 00:12:51.450
worked with me, realized that I'd much rather
00:12:51.450 --> 00:12:54.409
beg forgiveness than be denied permission. We
00:12:54.409 --> 00:12:57.350
can talk about that. So, well, let's talk about
00:12:57.350 --> 00:12:59.549
what happened after high school. You went to
00:12:59.549 --> 00:13:03.559
college and you studied. Oh, did you? Oh, there's
00:13:03.559 --> 00:13:06.720
more stories. Oh, there's more? Sure. First of
00:13:06.720 --> 00:13:10.799
all, the math teacher, three months after the
00:13:10.799 --> 00:13:13.399
math teacher ejected me from the computer club,
00:13:13.840 --> 00:13:20.820
I was teaching him. OK. And then a professor
00:13:20.820 --> 00:13:24.120
from the business school came to me and said,
00:13:25.080 --> 00:13:29.679
Eric, I need help. I have no money for salaries,
00:13:30.320 --> 00:13:33.379
but I have lots of money for computer time."
00:13:33.379 --> 00:13:35.340
He said, are you willing to do that? I said,
00:13:35.500 --> 00:13:39.240
absolutely. I said, absolutely. OK. And then
00:13:39.240 --> 00:13:41.580
he came to me. He said, well, I have to pay you
00:13:41.580 --> 00:13:43.980
a token. I have to pay $10 a month to get you
00:13:43.980 --> 00:13:48.340
on the workman's comp. I said, OK, that's $10
00:13:48.340 --> 00:13:51.840
more than I was expecting. That's fine. And there
00:13:51.840 --> 00:13:54.679
I was. I had the computer. I could use it overnight
00:13:54.679 --> 00:13:59.240
when nobody else was using it. I had this computer.
00:13:59.779 --> 00:14:02.740
So it was all still batch, right? All still batch.
00:14:02.940 --> 00:14:06.840
You fed in your cards and the output comes out.
00:14:06.840 --> 00:14:09.980
And the most, if you want my nomination for best
00:14:09.980 --> 00:14:12.320
computer equipment I've ever seen in my life,
00:14:12.720 --> 00:14:16.740
it was the Control Data 405 card reader. It read
00:14:16.740 --> 00:14:20.799
2000 cards a minute, which is fast. It was gentle
00:14:20.799 --> 00:14:25.419
as a lamb. And it very seldom jammed. I saw the
00:14:25.419 --> 00:14:28.090
IBM equivalent. It was slower, it was rougher
00:14:28.090 --> 00:14:30.769
on the cards, and it jammed far more frequently.
00:14:30.909 --> 00:14:34.490
I just have never seen anything so mechanical,
00:14:34.750 --> 00:14:39.210
mechanism, so elegant in my life. It's just magnificent.
00:14:39.389 --> 00:14:41.730
The way everything just worked. Had a little
00:14:41.730 --> 00:14:44.149
vacuum, it sucked the cards against the belt,
00:14:44.450 --> 00:14:47.330
shot them through, read them twice, validated
00:14:47.330 --> 00:14:50.870
them. It's incredible. It was just everybody
00:14:50.870 --> 00:14:53.269
says, oh, yeah, primitive bunch batch. Yeah.
00:14:53.610 --> 00:14:57.570
No. No, those are pretty amazing machines, mechanically.
00:14:58.250 --> 00:15:06.210
Yeah. Yeah. So I got acknowledgments in papers.
00:15:06.950 --> 00:15:08.990
I wasn't an author or anything, but thank you
00:15:08.990 --> 00:15:13.330
for helping. So now, off to college, right? Did
00:15:13.330 --> 00:15:16.830
you go to Ithaca or Cornell? Cornell, yeah. And
00:15:16.830 --> 00:15:19.049
I have a job in the computing center, and I have
00:15:19.049 --> 00:15:23.019
a little desk where the students work. And, you
00:15:23.019 --> 00:15:27.580
know, a couple of weeks in, I met my dorm advisor
00:15:27.580 --> 00:15:30.539
going into Rand Hall, the computing center. The
00:15:30.539 --> 00:15:33.139
government department had the third floor, and
00:15:33.139 --> 00:15:36.379
the computing center had the floors, the ground
00:15:36.379 --> 00:15:40.679
floor. And felt being respectful, I liked him,
00:15:40.740 --> 00:15:43.000
I held the door for him. He looks at me and he
00:15:43.000 --> 00:15:45.539
says, Eric, what are you doing here? And having
00:15:45.539 --> 00:15:47.980
no conception of what I was saying, none whatsoever,
00:15:48.200 --> 00:15:51.669
I said, oh, Seth, I'm going to my office. He
00:15:51.669 --> 00:15:54.889
says, right. I pull my other leg now. I said,
00:15:55.129 --> 00:15:57.309
no, honestly, truthfully, I'm going to my office.
00:15:57.309 --> 00:15:59.850
I'll show you. He said, I have to see this. There
00:15:59.850 --> 00:16:02.429
it was, my desk all piled up with big computer
00:16:02.429 --> 00:16:04.870
listings and all this stuff. I said, had my little
00:16:04.870 --> 00:16:07.330
name on the panel with the demo maker. He said,
00:16:08.210 --> 00:16:11.590
there it is. I said, I've been working here for
00:16:11.590 --> 00:16:13.669
at least a year now. I started in high school.
00:16:13.830 --> 00:16:18.669
He said, I'll be doggone. You guys amaze me.
00:16:19.539 --> 00:16:22.279
So there it was and I was working, I walked up
00:16:22.279 --> 00:16:26.799
to my soon to be advisor, my physics 207 professor.
00:16:27.580 --> 00:16:29.779
I majored in physics and I almost majored in
00:16:29.779 --> 00:16:31.679
math as well. I was going to ask you what was
00:16:31.679 --> 00:16:35.580
your major? Was there computer major at the time?
00:16:35.960 --> 00:16:43.279
No, there wasn't and I really, you know... Yes,
00:16:43.279 --> 00:16:48.250
I know. We can talk about that, yeah. But I'm
00:16:48.250 --> 00:16:53.110
very glad for my choice of majors. But anyway,
00:16:53.769 --> 00:16:57.009
you know, I said to him, hello, Dr. Castle. And
00:16:57.009 --> 00:17:00.309
he says, hi, Eric. And I said, you know, I work
00:17:00.309 --> 00:17:02.549
here. If there's anything I can do, any way I
00:17:02.549 --> 00:17:06.710
can help out, just ask, please. And he gives
00:17:06.710 --> 00:17:09.269
me this sidelong look, which, of course, being
00:17:09.269 --> 00:17:11.630
young, I didn't understand how outrageous I was
00:17:11.630 --> 00:17:15.569
being. I just wanted to be polite and, you know,
00:17:15.569 --> 00:17:20.690
also you know, become a member of the research
00:17:20.690 --> 00:17:26.150
community. I really wanted this, okay? And then,
00:17:26.150 --> 00:17:28.150
you know, later on he started asking me to help.
00:17:28.309 --> 00:17:31.009
And later on, past that, he said, you know, he
00:17:31.009 --> 00:17:32.950
said, I didn't believe you. I thought you were
00:17:32.950 --> 00:17:36.009
just a wise acre until I asked around and people
00:17:36.009 --> 00:17:38.349
said, oh, no, no, no, you know, take him up on
00:17:38.349 --> 00:17:41.230
it. He knows what he's doing. He's got experience.
00:17:42.190 --> 00:17:44.730
And so, you know, I did all kinds of interesting
00:17:44.730 --> 00:17:50.529
work for him. We did a feasibility study on using
00:17:50.529 --> 00:17:54.609
an IBM 1800 to detect, you know, particle collisions
00:17:54.609 --> 00:17:56.970
in real times. It didn't really have the horsepower
00:17:56.970 --> 00:18:01.609
for it. Yeah, it was out at the airport in Ithaca,
00:18:02.029 --> 00:18:05.589
and I didn't drive at the time, so I had to go
00:18:05.589 --> 00:18:07.269
out. I don't know. I'd have to look to see it.
00:18:07.289 --> 00:18:10.970
It's at least a couple of miles. And at the time,
00:18:11.230 --> 00:18:13.930
Tripama Road out by the airport was deserted.
00:18:14.160 --> 00:18:16.500
many of the night I walked back at two and three
00:18:16.500 --> 00:18:19.319
in the morning, no streetlights, walking down
00:18:19.319 --> 00:18:22.980
the middle of the night on the dotted line so
00:18:22.980 --> 00:18:25.779
I wouldn't roll off into the swamp on either
00:18:25.779 --> 00:18:27.980
side. And when I heard a car coming, I'd get
00:18:27.980 --> 00:18:31.880
off to the side. So there were adventures. But
00:18:31.880 --> 00:18:33.680
the biggest adventure, the biggest adventure
00:18:33.680 --> 00:18:38.660
was having unfettered access to computing, which
00:18:38.660 --> 00:18:41.920
was absolutely unheard of at the time. That and
00:18:41.920 --> 00:18:44.000
a Marchant calculator, a Marchant mechanical
00:18:44.000 --> 00:18:47.460
calculator that my dad picked up for me. Just
00:18:47.460 --> 00:18:50.140
being able to run a least squares from my desk
00:18:50.140 --> 00:18:55.180
at the time was incredible. I have a story about
00:18:55.180 --> 00:18:59.619
least squares. You want to hear it? OK. One of
00:18:59.619 --> 00:19:01.960
the summer jobs I had was at a company called
00:19:01.960 --> 00:19:05.440
Sage Action. If I can throw in a shameless plug,
00:19:05.500 --> 00:19:08.450
if you have anything to do with airflow. And
00:19:08.450 --> 00:19:10.529
I tried to get a former employer to do this,
00:19:10.630 --> 00:19:12.910
and they didn't, and far to their disadvantage.
00:19:13.549 --> 00:19:16.069
If you deal with cooling HVAC airflow, anything
00:19:16.069 --> 00:19:19.690
involving the movement of air, especially for
00:19:19.690 --> 00:19:22.430
cooling or heating, look into the Sage Action
00:19:22.430 --> 00:19:24.589
Bubble Generator. I was there when it was made.
00:19:24.789 --> 00:19:27.410
It blows these little soap bubbles about an eighth
00:19:27.410 --> 00:19:30.190
of an inch in diameter, filled with helium, and
00:19:30.190 --> 00:19:33.440
they're neutrally buoyant. they can visualize
00:19:33.440 --> 00:19:36.180
transonic turbulent air flow. It's the only thing
00:19:36.180 --> 00:19:39.099
that I know of that can do it. Yeah, yeah. Well,
00:19:39.099 --> 00:19:41.920
I was there when it was invented. But we had
00:19:41.920 --> 00:19:47.480
a. Contract with the Cornell Department of Agriculture,
00:19:48.000 --> 00:19:51.839
they had an 1130. And we do calculations for
00:19:51.839 --> 00:19:56.359
people in this woman gave me this. Involves statistical.
00:19:57.779 --> 00:20:01.359
Procedure for fitting calibrating anemometers.
00:20:02.209 --> 00:20:07.950
a polynomial 1 over x squared, 1 over x, x to
00:20:07.950 --> 00:20:11.430
the 0, x to the 1, x squared fit this. She gave
00:20:11.430 --> 00:20:15.869
me the data and the figures and it just blew
00:20:15.869 --> 00:20:20.490
up. It was awful. And so I dumped the matrix
00:20:20.490 --> 00:20:23.509
and the correlation coefficients were all very
00:20:23.509 --> 00:20:26.980
high. So I calculated its determinant and it
00:20:26.980 --> 00:20:30.119
was somewhere around 10 to the minus 22. I mean,
00:20:30.140 --> 00:20:32.000
ain't gonna happen because there was inverting
00:20:32.000 --> 00:20:34.859
the matrix in it. So I called her and I said,
00:20:35.079 --> 00:20:37.819
well, you know, you've got a nearly singular
00:20:37.819 --> 00:20:42.240
matrix. It's determined in this 10 to the minus
00:20:42.240 --> 00:20:46.500
22. This is high school stuff. She's sort of,
00:20:46.500 --> 00:20:49.519
I think reaching to keep up with me. I said,
00:20:50.720 --> 00:20:54.890
this procedure is numerically infeasible. think,
00:20:54.890 --> 00:20:58.009
how about a nice least squares? And she asked
00:20:58.009 --> 00:21:00.410
me, what's that? So I told her about it. You
00:21:00.410 --> 00:21:03.089
know, you look for, you differentiate the coefficient,
00:21:03.150 --> 00:21:06.130
you look for the zero, and it gives you a pretty
00:21:06.130 --> 00:21:10.609
good fit. Can I try it? She said, sure. That
00:21:10.609 --> 00:21:13.390
worked out very nicely. I plotted, I center the
00:21:13.390 --> 00:21:16.710
graph. She said, fine, good. This is the woman
00:21:16.710 --> 00:21:19.430
who also asked me to apply Simpson's rule to
00:21:19.430 --> 00:21:23.160
a polynomial times e to the x. And I said, oh,
00:21:23.359 --> 00:21:25.920
it's got to have a closed form. So I had a handbook
00:21:25.920 --> 00:21:27.680
of chemistry and physics, being a physicist.
00:21:28.259 --> 00:21:31.440
I flipped the integral. There it is. I call her
00:21:31.440 --> 00:21:33.980
up. I said, look, our customer's always right.
00:21:34.039 --> 00:21:37.619
I'll do it the way you ask if you want. But there's
00:21:37.619 --> 00:21:41.059
a closed form solution. And she said, are we
00:21:41.059 --> 00:21:44.000
a whole lot faster, a whole lot more accurate
00:21:44.000 --> 00:21:46.599
to just use that? So what do you think? And she
00:21:46.599 --> 00:21:49.180
said, well, how do I trust the answer? And I
00:21:49.180 --> 00:21:51.559
said, well, I think we can. trust the handbook
00:21:51.559 --> 00:21:53.539
of chemistry and physics and she said okay go
00:21:53.539 --> 00:21:57.559
ahead but you know there are lessons in that
00:21:57.559 --> 00:22:02.259
which is um you need to people talk about having
00:22:02.259 --> 00:22:04.700
a third eye whether you need a third ear if you're
00:22:04.700 --> 00:22:08.440
writing software you have to essentially backtrack
00:22:08.440 --> 00:22:10.640
from the customer's request to the customer's
00:22:10.640 --> 00:22:14.440
need and that's that's the real challenge it's
00:22:14.440 --> 00:22:17.440
a psychological game right so i mean so let's
00:22:17.440 --> 00:22:20.140
talk about what happened after you graduated.
00:22:20.980 --> 00:22:24.180
So what was your job? I mean, your first job
00:22:24.180 --> 00:22:27.700
clearly was at the college. Well, I went off
00:22:27.700 --> 00:22:29.740
to graduate school. I went to graduate school.
00:22:29.740 --> 00:22:32.960
Yeah. Thinking I would study mathematics and
00:22:32.960 --> 00:22:36.500
discovered that I was probably smart enough to
00:22:36.500 --> 00:22:40.599
get a Ph .D. and I might be able to invigil a
00:22:40.599 --> 00:22:44.339
faculty job somewhere, but I never was going
00:22:44.339 --> 00:22:47.690
to make it. I'm not that smart. And I later discovered
00:22:47.690 --> 00:22:52.049
also I have the very much worst personality,
00:22:53.130 --> 00:22:58.049
worst psychological orientation for academia.
00:22:59.349 --> 00:23:04.569
My interests are very broad. Basically, if I'm
00:23:04.569 --> 00:23:06.630
interested in something, I want to belong to
00:23:06.630 --> 00:23:10.309
it, all of it. And that's not academia. It was
00:23:10.309 --> 00:23:13.769
academia maybe 300 years ago, but now academia
00:23:13.769 --> 00:23:19.269
is deep and narrow. Okay. And, you know, it's
00:23:19.269 --> 00:23:21.069
a wonderful thing that there are people who love
00:23:21.069 --> 00:23:25.950
that. We need both. Right. But it's not me. And
00:23:25.950 --> 00:23:28.190
I'm sure that you noticed that, you know, when
00:23:28.190 --> 00:23:31.190
we work together, it could appear that I have
00:23:31.190 --> 00:23:34.369
a lack of focus, when actually what I've done
00:23:34.369 --> 00:23:38.710
is I've taken a problem and found a more general
00:23:38.710 --> 00:23:41.549
approach to it. Well, that's a very mathematical
00:23:41.549 --> 00:23:45.779
approach. Very mathematical indeed. So what happened?
00:23:46.839 --> 00:23:50.599
In graduate school? In graduate school, I failed
00:23:50.599 --> 00:23:53.000
my qualifiers and went and got a master's. This
00:23:53.000 --> 00:23:55.339
is in spite of doing extremely well in all courses.
00:23:56.740 --> 00:23:59.900
I actually was working for the university for
00:23:59.900 --> 00:24:07.019
a while to stay out of Vietnam. I was auditing
00:24:07.019 --> 00:24:10.160
courses. My abstract algebra teacher came to
00:24:10.160 --> 00:24:13.440
me and said, Eric, you're not registered for
00:24:13.440 --> 00:24:15.779
the course. I said, no, no, I'm auditing it.
00:24:15.779 --> 00:24:19.440
He said, we'll go register right now. And I said,
00:24:20.220 --> 00:24:23.440
well, OK, but what makes you tell me to do that?
00:24:23.440 --> 00:24:25.279
Because you've got the highest mark in the class.
00:24:28.539 --> 00:24:33.140
I said, well, I said, I can't really. It might
00:24:33.140 --> 00:24:36.299
attract unwanted attention. He said, but thanks
00:24:36.299 --> 00:24:40.819
very much. So later when I wanted to go to the
00:24:40.819 --> 00:24:45.440
university, asked him would you mind writing
00:24:45.440 --> 00:24:48.339
me a letter of recommendation and he said sure
00:24:48.339 --> 00:24:50.759
where are you applying I said well here and he
00:24:50.759 --> 00:24:53.420
said oh I'm on the admissions committee best
00:24:53.420 --> 00:24:55.000
letter of recommendation I don't have to write
00:24:55.000 --> 00:25:00.720
a thing so it happened anyway so then I made
00:25:00.720 --> 00:25:05.880
a mistake I got involved in the light water breeder
00:25:05.880 --> 00:25:11.329
reactor program a Just helping to design a nuclear
00:25:11.329 --> 00:25:16.569
reactor That bred thorium 232 into uranium 233
00:25:16.569 --> 00:25:20.509
which sounded fascinating and the physics is
00:25:20.509 --> 00:25:25.650
fascinating but the engineering is I Absolutely
00:25:25.650 --> 00:25:29.009
understand why and I absolutely support it You
00:25:29.009 --> 00:25:33.150
go step by step by step by step Everything's
00:25:33.150 --> 00:25:36.210
double -check verified scrutinized intensely
00:25:36.210 --> 00:25:40.930
if you use a little trig Well, for example, we
00:25:40.930 --> 00:25:44.210
were very interested in the position of the rods
00:25:44.210 --> 00:25:49.009
in the bundle. These nuclear reactors are fuel
00:25:49.009 --> 00:25:52.289
and zirconium rods because zirconium is transparent
00:25:52.289 --> 00:25:55.730
to neutrons surrounded by water. That's a pressurized
00:25:55.730 --> 00:26:01.390
nuclear reactor, pressurized water reactor. To
00:26:01.390 --> 00:26:04.549
do your thermodynamics properly, to calculate
00:26:04.549 --> 00:26:07.170
the neutron distribution properly, you have to
00:26:07.170 --> 00:26:10.440
know where everything is. So the question is,
00:26:11.279 --> 00:26:13.559
my boss said, well, I need to know the average
00:26:13.559 --> 00:26:16.799
distance between these rods so I can calculate
00:26:16.799 --> 00:26:19.960
how much of what stuff is in there. And I said
00:26:19.960 --> 00:26:25.119
to him, it sounds to me like the average distance,
00:26:25.200 --> 00:26:28.779
the mean distance between the rods is not that
00:26:28.779 --> 00:26:33.000
the root mean area might actually be more relevant
00:26:33.000 --> 00:26:35.799
because you really want to know the average cell
00:26:35.799 --> 00:26:41.039
size. If you say so. Well, it's not only how
00:26:41.039 --> 00:26:43.039
far apart are the rods, but how much stuff is
00:26:43.039 --> 00:26:46.220
around it. And you're using an average, which
00:26:46.220 --> 00:26:49.160
is linear, to calculate a square, which is non
00:26:49.160 --> 00:26:53.319
-linear. So rather than calculating the average,
00:26:53.680 --> 00:26:56.680
just calculate the average of what you want rather
00:26:56.680 --> 00:26:59.480
than what you can measure. It turns out to be
00:26:59.480 --> 00:27:04.160
very simple. But that went up two levels of management.
00:27:04.779 --> 00:27:08.630
Yeah, I have stories like that too. Kind of computing
00:27:08.630 --> 00:27:11.490
was used in this? Well, it was all highly numeric,
00:27:11.630 --> 00:27:16.609
Cray 6600, 7600. We had a PDP 10 kind of as a
00:27:16.609 --> 00:27:19.009
front end. And of course, everything was locked
00:27:19.009 --> 00:27:23.329
down because this was, I didn't do any work on
00:27:23.329 --> 00:27:26.130
anything military. This had absolutely no military
00:27:26.130 --> 00:27:30.210
application, but there was work on military applications.
00:27:30.450 --> 00:27:32.369
So you said you made a mistake because of that?
00:27:32.369 --> 00:27:35.809
Yes, it was. Well, it was the wrong field for
00:27:35.809 --> 00:27:40.470
me. I see. Okay. The field for me is hardcore
00:27:40.470 --> 00:27:44.250
computer programming, particularly involving
00:27:44.250 --> 00:27:47.069
data modeling. So what happened after nuclear
00:27:47.069 --> 00:27:51.809
reactor then? A guy from New York, whom I met
00:27:51.809 --> 00:27:55.650
at the computing center, named Al Caskell, who
00:27:55.650 --> 00:27:59.049
used to tease me almost to the point of tears.
00:27:59.690 --> 00:28:04.670
Okay. And who I knew through Sage Action. If
00:28:04.670 --> 00:28:08.819
I could backtrack a bit. When I graduated from
00:28:08.819 --> 00:28:11.559
graduate school, came back home because I had
00:28:11.559 --> 00:28:15.039
no place else to go. I were waiting for my security
00:28:15.039 --> 00:28:16.980
clearance. They apparently were coming through
00:28:16.980 --> 00:28:19.480
slowly or maybe I needed extra scrutiny. I don't
00:28:19.480 --> 00:28:23.700
know. But in any case, I went out to Sage Action.
00:28:23.759 --> 00:28:25.559
I called them up and I told them I was available.
00:28:25.660 --> 00:28:28.700
I said, well, we don't have any work, but we'd
00:28:28.700 --> 00:28:30.920
love to see us. Came out and there was a Mod
00:28:30.920 --> 00:28:34.200
Comp 2. What's a Mod Comp 2? It's the computer
00:28:34.200 --> 00:28:37.930
that we brought. and work a big thing in the
00:28:37.930 --> 00:28:42.470
old computer museum. It's a old 16 -bit real
00:28:42.470 --> 00:28:47.430
-time process control computer. It flew the space
00:28:47.430 --> 00:28:50.789
shuttle from the ground. OK, mod comp flew the
00:28:50.789 --> 00:28:55.390
space shuttle. And it was, you know, one of these
00:28:55.390 --> 00:28:59.390
niche computing that was far better value than
00:28:59.390 --> 00:29:01.589
anything the majors were offering. So they bought
00:29:01.589 --> 00:29:03.950
one. And there it was sitting in its shipping
00:29:03.950 --> 00:29:07.109
container. Everything about it was different
00:29:07.109 --> 00:29:11.329
from the IBM 1130. It used a different floating
00:29:11.329 --> 00:29:13.769
point for representation. Oh, really? Oh, yeah.
00:29:13.829 --> 00:29:15.970
Well, there was no IEEE at the time. Everybody,
00:29:16.309 --> 00:29:19.589
every manufacturer had their own. Right. It used
00:29:19.589 --> 00:29:25.509
ASCII instead of EBSDIC. OK. So and it actually
00:29:25.509 --> 00:29:29.630
had quite a bit more memory than the 1130. So
00:29:29.630 --> 00:29:34.069
I said to myself, well, they think. They don't
00:29:34.069 --> 00:29:36.109
have work for me, but there's plenty of work.
00:29:36.930 --> 00:29:38.750
So a few days later, they called me up and said,
00:29:38.750 --> 00:29:40.630
well, you know, we do have to port these programs.
00:29:40.650 --> 00:29:42.269
We got a month worth of work for you. So why
00:29:42.269 --> 00:29:44.670
don't you come on out? OK, great. Works work.
00:29:45.309 --> 00:29:49.170
So I come out and there was a 32 bit arithmetic
00:29:49.170 --> 00:29:53.150
package on the IBM 1130 called the Ideal. It's
00:29:53.150 --> 00:29:55.569
one of these unsupported packages that IBM gave
00:29:55.569 --> 00:30:00.829
away. And the company that was doing the Alcaskels
00:30:00.829 --> 00:30:03.690
company, Manimation, was doing the port. And
00:30:03.690 --> 00:30:05.650
they had this idea while they had this kind of
00:30:05.650 --> 00:30:09.430
homegrown Fortran, what I considered half cook,
00:30:09.529 --> 00:30:13.109
half binary, half decimal arithmetic. Oh, we'll
00:30:13.109 --> 00:30:16.009
just rip that out and put our own in. And then
00:30:16.009 --> 00:30:19.049
people looked at the size of the work and they
00:30:19.049 --> 00:30:21.369
said, oh my gosh, this is going to be a nightmare.
00:30:22.089 --> 00:30:25.009
Of course, me being me, you know, I said, well,
00:30:25.089 --> 00:30:27.930
why don't we just rewrite this package for the
00:30:27.930 --> 00:30:30.289
mod comp? I looked at it, I had all the hardware
00:30:30.289 --> 00:30:32.549
support we needed. So I just started to write
00:30:32.549 --> 00:30:36.799
it. And I was like, well, I can do this. You
00:30:36.799 --> 00:30:39.740
know, I'll make it easy. We'll just rewrite it.
00:30:39.740 --> 00:30:42.240
And this was in Fortran? I wrote it in an assembler.
00:30:42.960 --> 00:30:45.039
The code was in Fortran that we were reporting,
00:30:45.119 --> 00:30:48.460
but this was an assembler. Right. Because I needed
00:30:48.460 --> 00:30:52.880
access to some add with carry and that sort of
00:30:52.880 --> 00:30:55.640
thing. Bit fiddling. Yeah, bit fiddling, basically.
00:30:56.839 --> 00:31:00.180
So about halfway through the project, Don Ordway,
00:31:00.380 --> 00:31:03.440
whom I also love, Sage Action was the kind of
00:31:03.440 --> 00:31:05.599
company, if you were working late, Don would
00:31:05.599 --> 00:31:07.680
bring you dinner. Whatever he was eating, he'd
00:31:07.680 --> 00:31:10.740
bring over to you. Or he'd come over and say,
00:31:10.799 --> 00:31:16.579
go home. Go home. Come back tomorrow. And he
00:31:16.579 --> 00:31:18.799
said, what are you writing this in, by the way?
00:31:18.859 --> 00:31:21.460
And I said, assembler, what else would you write
00:31:21.460 --> 00:31:24.720
it in? Oh, you got to talk to Alvin about this.
00:31:24.799 --> 00:31:27.180
We do everything in Fortran. called up Alvin.
00:31:27.440 --> 00:31:29.799
Alvin, Don wants me to talk with you about writing
00:31:29.799 --> 00:31:31.460
in an assembler, and Alvin's, of course, you
00:31:31.460 --> 00:31:34.000
write in an assembler. But I had to go back to
00:31:34.000 --> 00:31:36.079
Alvin. Alvin says it's okay, you know, special
00:31:36.079 --> 00:31:38.960
case. Right. You know, make people feel happy.
00:31:40.599 --> 00:31:44.660
That's a lesson I'm still learning. So, anyway,
00:31:45.000 --> 00:31:49.980
there it was. We ported some stuff for stage
00:31:49.980 --> 00:31:52.559
action and animation and all this. We also had
00:31:52.559 --> 00:31:56.059
a contract with the local community con. college,
00:31:56.839 --> 00:32:00.819
and we were doing their port, and I was over
00:32:00.819 --> 00:32:02.700
there just in case something goes wrong. I had
00:32:02.700 --> 00:32:05.000
not ported the four -turn code. I'd written the
00:32:05.000 --> 00:32:08.900
support libraries, and one of the guys was sort
00:32:08.900 --> 00:32:10.900
of looking at me, seeing around reading or something,
00:32:10.940 --> 00:32:13.640
and he says, what the hell is that bozo doing
00:32:13.640 --> 00:32:18.859
there? And my colleague, Jimmy, at the time,
00:32:18.960 --> 00:32:22.220
he says, if it weren't for him, this project
00:32:22.220 --> 00:32:25.759
wouldn't make it. Don't diss him. OK. He has
00:32:25.759 --> 00:32:28.339
nothing to do now because he did his job earlier.
00:32:29.660 --> 00:32:36.099
And that is the height of compliment. Your fondest
00:32:36.099 --> 00:32:38.200
hope, or at least my fondest hope when I write
00:32:38.200 --> 00:32:41.660
software is not to be noticed, is for people
00:32:41.660 --> 00:32:44.200
to say, and every once in a while somebody says,
00:32:44.319 --> 00:32:47.019
how do I do ABC with this system? And I say,
00:32:47.140 --> 00:32:50.720
well, do this, this, this, and this. And people,
00:32:51.380 --> 00:32:54.410
is that all? That's all you have to do, really.
00:32:54.470 --> 00:32:57.670
Just this, this, this, and this. And he said,
00:32:58.450 --> 00:33:04.089
well, but how is it so easy? I said, well, you
00:33:04.089 --> 00:33:07.690
know, it's my job to make your life easy. I want
00:33:07.690 --> 00:33:11.710
it to be easy. I want you to say, because this
00:33:11.710 --> 00:33:16.309
is not how you add value. You add value with
00:33:16.309 --> 00:33:18.950
what you do that makes you want to do A, B, C,
00:33:18.950 --> 00:33:22.670
and D. But of course, there's always the danger
00:33:22.670 --> 00:33:26.950
with the people who can't or don't or have this
00:33:26.950 --> 00:33:30.369
orientation where I don't even understand it.
00:33:30.369 --> 00:33:34.450
It's like everything has to be visible. They'll
00:33:34.450 --> 00:33:36.210
say, well, if it's so simple to use, it must
00:33:36.210 --> 00:33:40.329
have been simple to write. Right. No, no. Simplicity
00:33:40.329 --> 00:33:44.529
is hard. And that goes back to Pascal. I think
00:33:44.529 --> 00:33:47.869
he may have said something. Yes, he did. All
00:33:47.869 --> 00:33:50.900
right. So then. Somebody from New York called
00:33:50.900 --> 00:33:56.440
you? Yes, I was working at Westinghouse Atomic
00:33:56.440 --> 00:33:59.940
Power Division. My year of indentured servitude
00:33:59.940 --> 00:34:02.240
was up. I didn't have to pay back my relocation.
00:34:02.660 --> 00:34:06.339
I started looking for work and out of the blue,
00:34:06.819 --> 00:34:09.000
Alvin called me and said, come work for me in
00:34:09.000 --> 00:34:12.639
New York. We'll get you an apartment. And because
00:34:12.639 --> 00:34:15.179
he was hooked up with one of his customers, he
00:34:15.179 --> 00:34:18.469
was related anyway. You know, we'll get you an
00:34:18.469 --> 00:34:22.909
apartment and I'll pay you X and insurance is
00:34:22.909 --> 00:34:27.269
great. When do I start? So I moved to New York
00:34:27.269 --> 00:34:30.829
and had far more fun than the law allowed. It
00:34:30.829 --> 00:34:36.230
was on an IBM 1130 and the worst, most wretched
00:34:36.230 --> 00:34:40.570
computer I ever worked on. Varian data machine
00:34:40.570 --> 00:34:48.500
16 bit. It was dreadful. Why? Well, the hardware
00:34:48.500 --> 00:34:51.280
was unreliable. I know you're not supposed to
00:34:51.280 --> 00:34:54.059
diss things, but it broke all the time. The software
00:34:54.059 --> 00:34:58.820
was unreliable. It was awkward to use. The card
00:34:58.820 --> 00:35:03.480
reader was unreliable. And we did some amazing
00:35:03.480 --> 00:35:07.719
work on it. We did an early, possibly the first,
00:35:08.280 --> 00:35:12.179
call up and charge a theater ticket application.
00:35:12.570 --> 00:35:17.389
All punch cards, all everything. This is in like
00:35:17.389 --> 00:35:20.650
70s, early 70s? Yeah, early 70s, mid 70s. It's
00:35:20.650 --> 00:35:24.130
called Charge It. Okay. And we ran them every
00:35:24.130 --> 00:35:31.469
night. And it was quite something. So let me
00:35:31.469 --> 00:35:34.150
ask you. So you were still using punch cards
00:35:34.150 --> 00:35:37.909
then? Yep, still using punch cards. How did things
00:35:37.909 --> 00:35:41.590
change when first PCs came around? Actually,
00:35:41.610 --> 00:35:46.130
it started changing before that because Manimation
00:35:46.130 --> 00:35:49.110
bought two Prime 300s, moved out to Long Island,
00:35:49.190 --> 00:35:53.769
and we started doing online services. OK, with
00:35:53.769 --> 00:35:56.269
the terminals, right? That's the intermediate.
00:35:56.590 --> 00:36:01.130
That was my first personal computer. OK, very
00:36:01.130 --> 00:36:03.929
expensive. We're using phone lines. Twelve hundred
00:36:03.929 --> 00:36:09.570
baud. Right. And again, it's been hot for the
00:36:09.570 --> 00:36:12.619
time. You know, I'll get to the story about that,
00:36:12.619 --> 00:36:15.400
but if you don't mind, here's another beg forgiveness
00:36:15.400 --> 00:36:19.079
instead of asking permission. Go ahead. OK. There
00:36:19.079 --> 00:36:22.320
was a data entry clerk and I met her and I ended
00:36:22.320 --> 00:36:25.800
up liking her very much. I owe her a lot. I don't
00:36:25.800 --> 00:36:29.679
think I ever thanked her properly for this. The
00:36:29.679 --> 00:36:32.219
terminals we were using had cursor control keys,
00:36:32.360 --> 00:36:35.219
but we weren't using them. We're using them as
00:36:35.219 --> 00:36:39.010
glass teletypes with cursor addressing. She was
00:36:39.010 --> 00:36:42.090
using the cursor control keys to correct. She
00:36:42.090 --> 00:36:43.869
thought she was correcting bad entries, and the
00:36:43.869 --> 00:36:47.170
data was completely corrupt. And my boss was
00:36:47.170 --> 00:36:50.010
yelling at her. And I said to him, look, let
00:36:50.010 --> 00:36:52.090
me just go talk with her. Let me go see what's
00:36:52.090 --> 00:36:55.230
going on, OK? So I come in. I met her. I said,
00:36:55.230 --> 00:36:58.789
hi. You know, talk about the data. I said, I'm
00:36:58.789 --> 00:37:00.650
not going to yell at you. I said, just show me
00:37:00.650 --> 00:37:03.590
what's going on. And she shows me how she's trying
00:37:03.590 --> 00:37:06.210
to do it. I said, I thought about this for a
00:37:06.210 --> 00:37:10.960
second. And I had an epiphany. I said, do you
00:37:10.960 --> 00:37:13.699
know something? He said, you're right. I'm wrong.
00:37:14.219 --> 00:37:16.820
I said, you are right. It should work that way.
00:37:17.440 --> 00:37:22.280
It really should. I mean, unfortunately, it doesn't.
00:37:22.320 --> 00:37:24.860
Not yet. I said, I don't know if we can make
00:37:24.860 --> 00:37:28.119
it work that way or not. Let me propose the following.
00:37:28.559 --> 00:37:31.699
Make a deal with you. If you do it the way we
00:37:31.699 --> 00:37:35.079
need it done now, I will do my absolute level
00:37:35.079 --> 00:37:37.460
best. to make it work the way you think it should.
00:37:37.500 --> 00:37:40.840
Because you're right. You're right. Okay? But
00:37:40.840 --> 00:37:43.760
we need you to do it this way." And she said,
00:37:43.780 --> 00:37:46.039
okay, and you're so nice. You don't yell at me.
00:37:46.039 --> 00:37:49.400
Everybody else yells at me. I said, well, let's
00:37:49.400 --> 00:37:51.719
get this, let's get this sorted. Okay? If I can
00:37:51.719 --> 00:37:53.679
make it, you are right. If I can make it work
00:37:53.679 --> 00:37:57.639
that way, it'll be good for everybody. So, like
00:37:57.639 --> 00:38:00.800
everything else, I started to do it. Turns out,
00:38:00.960 --> 00:38:05.260
just by accident, just by accident, we had bought
00:38:05.260 --> 00:38:08.219
the exact terminals with the exact features we
00:38:08.219 --> 00:38:11.079
need because they had this halfway mode between
00:38:11.079 --> 00:38:15.719
full screen and start stop called line mode where
00:38:15.719 --> 00:38:19.219
you could read a line at a time. OK, and that
00:38:19.219 --> 00:38:21.880
would fit in the prime three hundred's buffers.
00:38:22.340 --> 00:38:26.000
So I started writing the software and now it
00:38:26.000 --> 00:38:27.519
comes up to me and says, Eric, what the heck
00:38:27.519 --> 00:38:29.019
are you doing? And I said, we're going to have
00:38:29.019 --> 00:38:30.639
full screen mode. We're going to support full
00:38:30.639 --> 00:38:33.659
screen on these terminals. He says, no, I can't
00:38:33.659 --> 00:38:35.920
afford that. I said, well, look, I said, you
00:38:35.920 --> 00:38:38.599
can't afford not to. OK, because looking at our
00:38:38.599 --> 00:38:41.159
software, we spend 80 to 90 percent of our time
00:38:41.159 --> 00:38:44.599
of our lines of code managing the screen. I said,
00:38:44.699 --> 00:38:47.219
we've got to automate that. We have to offload
00:38:47.219 --> 00:38:51.280
this to a library. You see something here, Richie?
00:38:51.480 --> 00:38:56.380
Yeah. OK. And my apologies to the audience for
00:38:56.380 --> 00:39:00.460
the in -joke. But I said, OK, I'll tell you what
00:39:00.460 --> 00:39:03.570
I'll do. I'm your friend. So I'm not going to
00:39:03.570 --> 00:39:05.349
do what you tell me, but here's what I will do.
00:39:05.449 --> 00:39:08.670
I said, I will give you a good solid 40 hours
00:39:08.670 --> 00:39:11.550
a week or more on applications. And if I choose
00:39:11.550 --> 00:39:15.130
to work overtime, OK, I'll work on this. I'll
00:39:15.130 --> 00:39:17.769
work on this on my time. I said, I'm doing this
00:39:17.769 --> 00:39:21.550
because I'm your friend. And I meant it 100%.
00:39:21.550 --> 00:39:23.730
He said, well, if you work more, you should work
00:39:23.730 --> 00:39:25.570
on the applications. I said, well, look, Al,
00:39:25.630 --> 00:39:29.250
you pan overtime. He says, no. I said, OK. So
00:39:29.250 --> 00:39:32.699
if I choose to work extra, Voluntarily, it seems
00:39:32.699 --> 00:39:35.860
to me fair that I should be able to work on what
00:39:35.860 --> 00:39:38.579
I want to. He says, you know, I can't argue with
00:39:38.579 --> 00:39:42.239
that. He's a mensch. He was a real mensch. A
00:39:42.239 --> 00:39:44.860
week later, he calls me up and says, you know
00:39:44.860 --> 00:39:46.900
that back burner project you're working on with
00:39:46.900 --> 00:39:50.119
the screens? I said, yes. He said, give it top
00:39:50.119 --> 00:39:52.460
priority. You're right. He said, I've seen it
00:39:52.460 --> 00:39:55.980
working. You're right. We have to do this. We
00:39:55.980 --> 00:39:58.469
did it. I said to him, you won't regret this.
00:39:58.610 --> 00:40:00.269
In three months, you're going to gain back every
00:40:00.269 --> 00:40:03.369
minute of time I spend on this and it'll all
00:40:03.369 --> 00:40:07.250
be gravy after that. And it was, I mean, I converted
00:40:07.250 --> 00:40:10.849
software. I would take eight cards out of 10,
00:40:10.849 --> 00:40:13.869
nine cards and throw them out. Just throw them
00:40:13.869 --> 00:40:18.150
out and replace them with one call. And the users
00:40:18.150 --> 00:40:21.349
loved it. The developers loved it. Everybody
00:40:21.349 --> 00:40:24.429
loved it. OK, but it wouldn't have happened if
00:40:24.429 --> 00:40:29.210
I hadn't been snarky. Right. Contrary and unmanageable.
00:40:30.389 --> 00:40:32.829
And always, I'm not always right. Goodness knows.
00:40:33.889 --> 00:40:37.289
OK, so then so you're right. First we went with
00:40:37.289 --> 00:40:39.170
punch cards, then we moved to terminals. Right.
00:40:39.429 --> 00:40:41.989
And then we moved to personal computers. When
00:40:41.989 --> 00:40:47.050
PCs arrived. Well, there I was consulting. Right.
00:40:47.170 --> 00:40:51.829
When I was when when sort of manimation stopped
00:40:51.829 --> 00:40:54.230
being a good place for me to work, I went off
00:40:54.230 --> 00:40:59.159
and became a freelance consultant on Prime. I
00:40:59.159 --> 00:41:02.119
was doing stuff with their machines that they
00:41:02.119 --> 00:41:05.360
couldn't do. For example, we had a client, a
00:41:05.360 --> 00:41:06.860
dear friend of mine still works there. They were
00:41:06.860 --> 00:41:12.119
moving to Prime. They used a quirk of the IBM
00:41:12.119 --> 00:41:15.380
1130 software that zero divided by zero was zero.
00:41:16.880 --> 00:41:19.000
Go figure. Go figure. But that's the way it was.
00:41:19.059 --> 00:41:21.460
And they used it. Because on the 1130, you used
00:41:21.460 --> 00:41:23.059
everything. You could get your hooks into it.
00:41:23.139 --> 00:41:27.360
Damaging years. Such a... So how do we make this
00:41:27.360 --> 00:41:30.619
work on the Prime? Regional analysts said, can't
00:41:30.619 --> 00:41:33.000
be done. I said, well, let's have a look. I said,
00:41:33.000 --> 00:41:35.360
I knew something about Prime. They used something
00:41:35.360 --> 00:41:39.679
called virtual I .O. and virtualization, where
00:41:39.679 --> 00:41:43.280
the interrupts would reflect back into user space.
00:41:43.860 --> 00:41:48.309
So I poked around in the... segmented loader
00:41:48.309 --> 00:41:54.150
of all things, the what supported 32 -bit software.
00:41:54.869 --> 00:41:58.949
And I saw the arithmetic fault catcher and what
00:41:58.949 --> 00:42:01.730
it did. I said, well, it looks to me as if I
00:42:01.730 --> 00:42:04.190
just clear a couple of registers, zero divided
00:42:04.190 --> 00:42:07.409
by zero will be zero. Tried it and it worked.
00:42:08.449 --> 00:42:12.650
I called the salesman and said, I got this. And
00:42:12.650 --> 00:42:18.090
one of the regional analysts come up to me And
00:42:18.090 --> 00:42:20.050
shook my hand and said, I hear you've been working
00:42:20.050 --> 00:42:25.269
miracles. I said, well, gosh, thanks. And how
00:42:25.269 --> 00:42:27.050
many times have you heard me say this when we
00:42:27.050 --> 00:42:31.389
work together? But there it was. So after that,
00:42:31.929 --> 00:42:35.369
I got this 10 -day gig at Salomon Brothers. We
00:42:35.369 --> 00:42:39.650
need to do this. And I went to them. I went to
00:42:39.650 --> 00:42:41.190
them. I said, well, look, I could write this
00:42:41.190 --> 00:42:43.449
code you want, but let me show you this utility.
00:42:44.469 --> 00:42:47.889
OK? And if you do... This was on Primes? This
00:42:47.889 --> 00:42:51.429
was on Primes, yeah. If you use this, as long
00:42:51.429 --> 00:42:53.329
as you don't need to change these three fields,
00:42:53.449 --> 00:42:55.670
which were key fields, I said, it'll do what
00:42:55.670 --> 00:42:57.550
you need. I said, is that what you need? I said,
00:42:57.670 --> 00:43:00.650
I don't want to take your money unnecessarily.
00:43:01.389 --> 00:43:04.610
And that, of course, drew the attention of the
00:43:04.610 --> 00:43:07.210
guy who was running the group, who called me
00:43:07.210 --> 00:43:09.789
aside and says, shows me something running on
00:43:09.789 --> 00:43:13.349
an 8 -bit machine. and said, I want to do this
00:43:13.349 --> 00:43:16.030
on the IBM PC. Are you interested? I said, yeah.
00:43:16.389 --> 00:43:18.809
And that's how I got into PC. Unfortunately,
00:43:18.809 --> 00:43:22.190
like so many products, a bulk of products that
00:43:22.190 --> 00:43:28.690
can introduce, it flopped. Which product flopped?
00:43:29.210 --> 00:43:31.349
The one that we tried to write. We called it
00:43:31.349 --> 00:43:37.929
the Idea Processor. Anyway. So did you from then
00:43:37.929 --> 00:43:39.929
on just work on PCs? Then I just started working
00:43:39.929 --> 00:43:43.269
on PCs. And one thing led to another. I had a
00:43:43.269 --> 00:43:47.349
client that wanted their time series analytics
00:43:47.349 --> 00:43:53.710
software moved from the Prime to the PC. I did
00:43:53.710 --> 00:43:56.570
it. So on Prime, what kind of program languages
00:43:56.570 --> 00:43:59.829
did you guys use? We use Fortran almost exclusively
00:43:59.829 --> 00:44:04.489
with a little bit of assembler. There was PL1
00:44:04.489 --> 00:44:08.550
and the Prime 32 -bit series was designed for
00:44:08.550 --> 00:44:13.639
PL1. It had the most interesting combination
00:44:13.639 --> 00:44:16.059
of firmware and operating system software I've
00:44:16.059 --> 00:44:18.000
ever seen. I've never seen anything like it.
00:44:18.440 --> 00:44:25.019
The operating system was Multics. And semaphores,
00:44:25.519 --> 00:44:31.579
process switching, queues, and some other normally
00:44:31.579 --> 00:44:34.019
operating system level functionality was built
00:44:34.019 --> 00:44:37.599
into the instruction set. Built into the instruction
00:44:37.599 --> 00:44:41.739
set was processes are either waiting on some
00:44:41.739 --> 00:44:45.159
semaphore or on the ready list. High priority
00:44:45.159 --> 00:44:48.780
process on the ready list runs. Runs until it
00:44:48.780 --> 00:44:53.860
does IO or waits on semaphore. And so the idle
00:44:53.860 --> 00:44:56.460
task was the schedule. It just ran around looking
00:44:56.460 --> 00:44:59.719
at semaphores, looking for semaphores to notify.
00:45:01.480 --> 00:45:05.400
The interrupt instructions were one or two, interrupt
00:45:05.400 --> 00:45:07.530
routines were one or two instructions long. They
00:45:07.530 --> 00:45:09.670
just nailed semaphores. Everything was on the
00:45:09.670 --> 00:45:13.710
semaphore. It was incredible. Multics was developed,
00:45:13.849 --> 00:45:18.489
was it at MIT? MIT, yeah. Yeah, it's at the MIT
00:45:18.489 --> 00:45:22.869
versus New Jersey. Yeah. Prime was, one of their
00:45:22.869 --> 00:45:27.110
mottos was Multics in a matchbox. So then let's
00:45:27.110 --> 00:45:29.530
fast forward a little bit. What happened when
00:45:29.530 --> 00:45:33.179
the internet arrived? Were you involved in Usenet?
00:45:33.719 --> 00:45:37.039
No, nothing like that. No, I got on the Internet
00:45:37.039 --> 00:45:41.739
late. Well, how did the Internet arrive? Well,
00:45:42.099 --> 00:45:44.719
I don't remember how I got on the Internet. I
00:45:44.719 --> 00:45:47.320
tried to get on Rutgers Internet. They wouldn't
00:45:47.320 --> 00:45:51.320
let me. Did you use a member campus server? I
00:45:51.320 --> 00:45:56.780
used a local ISP called CastleNet for email,
00:45:57.219 --> 00:46:02.639
and email was pine. and You know the odd this
00:46:02.639 --> 00:46:05.519
and that but I'm not still I'm not a heavy internet
00:46:05.519 --> 00:46:08.780
user But I'm just curious in terms of the actual
00:46:08.780 --> 00:46:12.460
work that you were doing What was my first internet
00:46:12.460 --> 00:46:15.619
job? I? Don't remember what my first internet
00:46:15.619 --> 00:46:20.599
job was but somehow I ended up at He met a oh
00:46:20.599 --> 00:46:22.840
I wasn't before that I was in a really nasty
00:46:22.840 --> 00:46:25.440
company direct revenue I was brought in to help
00:46:25.440 --> 00:46:30.800
them go legit. They were in the you know lock
00:46:30.800 --> 00:46:34.440
your hook into windows and show you ads business
00:46:34.440 --> 00:46:38.039
and I was trying to help them get into the legitimate
00:46:38.039 --> 00:46:41.579
advertising on websites business that went south
00:46:41.579 --> 00:46:46.460
and Oh, yeah. Yeah. Yeah. I remember how the
00:46:46.460 --> 00:46:51.000
progression now. I actually Came to work in information
00:46:51.000 --> 00:46:54.190
builders. Okay What was that company? What was
00:46:54.190 --> 00:46:58.170
they doing? They made Focus, a 3GL very prominent
00:46:58.170 --> 00:47:02.389
in its day. I think it's still in use. I was
00:47:02.389 --> 00:47:07.610
in the edit division, which was... So Focus was
00:47:07.610 --> 00:47:10.269
like an early database with like a programming
00:47:10.269 --> 00:47:11.969
language. You could build applications on top
00:47:11.969 --> 00:47:16.210
of it. Yes, it was like a hierarchical database,
00:47:16.289 --> 00:47:18.550
maybe with a little network thrown in. I never
00:47:18.550 --> 00:47:21.489
learned it, even though I worked there. I worked
00:47:21.489 --> 00:47:26.510
on basically cross platform, cross database software,
00:47:26.670 --> 00:47:29.829
middleware. My first project was on the SQ. No,
00:47:29.909 --> 00:47:33.349
my first project was hooking Lotus 123 to focus.
00:47:33.849 --> 00:47:38.010
Oh, interesting. We had a focus to SQL translator.
00:47:39.670 --> 00:47:45.710
123 had a SQL interface data lens. And so my
00:47:45.710 --> 00:47:48.369
job was to the boss came in. I had the world's
00:47:48.369 --> 00:47:50.110
shortest interview there. I looked at him. He
00:47:50.110 --> 00:47:52.860
looked at me. We chatted briefly, and he said,
00:47:52.900 --> 00:47:54.500
well, I'll let you know. I wish I could let you
00:47:54.500 --> 00:47:56.300
know now, but I can't. I'll call you in a couple
00:47:56.300 --> 00:48:01.840
of days. And I was hired. And he gave me the
00:48:01.840 --> 00:48:04.539
developer's manual for data lenses. Well, do
00:48:04.539 --> 00:48:06.159
this. Let me know how you're doing every once
00:48:06.159 --> 00:48:09.000
in a while. And I was getting up one feature
00:48:09.000 --> 00:48:13.039
a week. Sorry, one major feature every three
00:48:13.039 --> 00:48:15.199
weeks. So what were you programming on PC then?
00:48:15.699 --> 00:48:23.420
C. C. Yeah, I switched to C. Then I yeah That
00:48:23.420 --> 00:48:26.039
was sort of how I got that was the company where
00:48:26.039 --> 00:48:28.239
I got to know the internet worked at various
00:48:28.239 --> 00:48:31.019
other places Did you get these Unix at any of
00:48:31.019 --> 00:48:34.300
those places? Oh, yes. Yes. I started I had a
00:48:34.300 --> 00:48:37.739
Sun workstation Oh, okay. Yeah, which one solaris.
00:48:37.739 --> 00:48:41.159
Oh, yeah solaris. I had one in my house for a
00:48:41.159 --> 00:48:44.519
while too. Yeah, I bought one used because I
00:48:44.519 --> 00:48:49.670
got And I still think it's great. I got in enthusiastic
00:48:49.670 --> 00:48:53.710
about the Schleyer -Meller methodology, which
00:48:53.710 --> 00:48:57.550
models software as... That's when object -oriented
00:48:57.550 --> 00:49:00.469
programming kind of started happening. Yes. You're
00:49:00.469 --> 00:49:03.489
talking about the mid -90s? Yeah. Models software
00:49:03.489 --> 00:49:08.550
as a petri net of state machines. I still write
00:49:08.550 --> 00:49:11.550
software that way. People say my software looks
00:49:11.550 --> 00:49:16.710
different. That's one of the reasons why. I managed
00:49:16.710 --> 00:49:20.230
to get my hands on the premier modeling tool
00:49:20.230 --> 00:49:24.869
at the time, IOA from Kennedy Carter, and I needed
00:49:24.869 --> 00:49:27.750
a Sun workstation. So I bought a used one and
00:49:27.750 --> 00:49:32.489
ran it. I still think it's a magnificent software
00:49:32.489 --> 00:49:36.570
development environment. Nobody uses it. But
00:49:36.570 --> 00:49:42.309
during that day, I supervised an independent
00:49:42.309 --> 00:49:45.289
study project at the local high school, a student
00:49:45.289 --> 00:49:48.739
who's now a big wheel at NVIDIA. ran the school
00:49:48.739 --> 00:49:51.619
out of math courses between a sophomore and junior
00:49:51.619 --> 00:49:54.159
year. He went off to Rutgers and took calculus.
00:49:54.820 --> 00:49:58.800
And the assistant superintendent called me. They
00:49:58.800 --> 00:50:01.420
knew me and they said, can you do something for
00:50:01.420 --> 00:50:05.139
us? We need a math course for this kid. We talked
00:50:05.139 --> 00:50:07.460
and he wanted to model, he was interested in
00:50:07.460 --> 00:50:09.519
chaotic behavior, wanted to model an ecosystem.
00:50:09.619 --> 00:50:11.500
And I said, I have the perfect methodology for
00:50:11.500 --> 00:50:15.440
do this. Let's do it. And we did it all by hand.
00:50:16.039 --> 00:50:20.340
And he wrote 3 ,000 lines of C++ code from it
00:50:20.340 --> 00:50:24.860
in six weeks. He was basically just hand translating
00:50:24.860 --> 00:50:28.079
the model into C++. Everything integrated smoothly,
00:50:28.199 --> 00:50:31.579
just slid together. There were two bugs. One
00:50:31.579 --> 00:50:35.139
defect every 1 ,500 lines of code, which is IBM's
00:50:35.139 --> 00:50:38.519
gold standard. And we traced those bugs back
00:50:38.519 --> 00:50:44.360
to the model. He ended up presenting his results
00:50:44.360 --> 00:50:47.360
at an international software conference. I listed
00:50:47.360 --> 00:50:50.719
him as senior author because he did all the work.
00:50:51.340 --> 00:50:56.579
Anyway, C++, that happened at Information Builders.
00:50:56.760 --> 00:50:59.440
I had this brush project for IBM. Didn't you
00:50:59.440 --> 00:51:02.480
also win some kind of a movie award? Oh, yeah.
00:51:02.940 --> 00:51:07.079
Oh, so tell me about that. Well, this is bound
00:51:07.079 --> 00:51:11.360
up with my courtship with Shelley. I was sick
00:51:11.360 --> 00:51:13.679
and tired of the New York social scene. Shelly
00:51:13.679 --> 00:51:15.679
was living in Los Angeles and sick and tired
00:51:15.679 --> 00:51:19.340
of the Los Angeles social scene. We both sort
00:51:19.340 --> 00:51:23.420
of wanted to meet somebody nice and settle down.
00:51:24.019 --> 00:51:26.039
Basically, her best friend married my best friends
00:51:26.039 --> 00:51:28.900
and they set us up cross country. Nice. So we
00:51:28.900 --> 00:51:32.119
started writing letters. I even bought a fountain
00:51:32.119 --> 00:51:40.039
pen. And then we started talking. I bought into
00:51:40.039 --> 00:51:43.480
IBM's long -distance service for a time so I
00:51:43.480 --> 00:51:45.340
could retain at least some of the money I brought
00:51:45.340 --> 00:51:51.159
in. And my buddy Dick Bernstein from graduate
00:51:51.159 --> 00:51:55.019
school came in and showed me a project he was
00:51:55.019 --> 00:51:58.639
working on. He cuts sound, and he's cut sound
00:51:58.639 --> 00:52:02.920
for really famous people like James Cameron.
00:52:05.059 --> 00:52:07.679
I worked on Batman and Back to the Future, it
00:52:07.679 --> 00:52:12.360
turns out. So his idea was take an IBM PC, put
00:52:12.360 --> 00:52:16.940
a top -end graphics card in it, that could take
00:52:16.940 --> 00:52:23.460
external video and do the movie sound cues using
00:52:23.460 --> 00:52:28.079
the computer. The way they had been done classically
00:52:28.079 --> 00:52:30.849
is you take a print and you mutilate it. You
00:52:30.849 --> 00:52:33.670
need to put a metronome track in. You actually
00:52:33.670 --> 00:52:38.010
punch holes in the soundtrack so that it would
00:52:38.010 --> 00:52:41.110
click. Oh, interesting. OK. And if you were going
00:52:41.110 --> 00:52:46.250
to have a piece of the music that had to synchronize
00:52:46.250 --> 00:52:50.210
with a particular action, like for example, sometime
00:52:50.210 --> 00:52:53.289
there'll be a shot of somebody carrying a briefcase
00:52:53.289 --> 00:52:55.710
and they're going to make a handoff. They put
00:52:55.710 --> 00:52:57.929
the briefcase down and there'll be a cymbal clash.
00:52:58.670 --> 00:53:01.250
Right. I forget the name for it. What's the musical
00:53:01.250 --> 00:53:04.170
name for when you hit the music hard? Accent
00:53:04.170 --> 00:53:07.210
an accent, but there's a particular Italian world
00:53:07.210 --> 00:53:11.889
word for it. Anyway, you actually the 10 frames
00:53:11.889 --> 00:53:14.530
before you lay a ruler on the film and you scratch
00:53:14.530 --> 00:53:17.590
it and then you punch out the frame where you
00:53:17.590 --> 00:53:21.309
want the music to be so that the conductor can
00:53:21.309 --> 00:53:23.269
see here it comes with the line moving across
00:53:23.269 --> 00:53:27.590
the screen and flash. So I did the real time
00:53:27.590 --> 00:53:30.519
kernel for this. I had to hook the clock, interrupt,
00:53:31.159 --> 00:53:34.300
speed it up. We'd have a whole queue of events.
00:53:34.579 --> 00:53:36.619
We'd just chew through it. One of the events
00:53:36.619 --> 00:53:39.420
in the queue was advance the computer clock,
00:53:40.219 --> 00:53:42.519
because we didn't want to lose track of the time
00:53:42.519 --> 00:53:46.719
of day, of course. And that won an Oscar and
00:53:46.719 --> 00:53:52.420
an Emmy, used in TV and music production. You
00:53:52.420 --> 00:53:54.619
mean the system itself? The system itself, yes.
00:53:54.619 --> 00:53:59.500
Cool. So I have an Emmy Award in my... in your
00:53:59.500 --> 00:54:05.300
layer. We've been talking for almost an hour.
00:54:06.300 --> 00:54:11.400
What I wanted to ask you, as part of this podcast,
00:54:11.579 --> 00:54:15.679
I would like to have people give advice to newer
00:54:15.679 --> 00:54:17.139
software engineers, people who are just getting
00:54:17.139 --> 00:54:21.409
into the field. What is your advice? So I want
00:54:21.409 --> 00:54:23.849
to ask about that. Also, I know you've interviewed
00:54:23.849 --> 00:54:26.989
lots of people, and I like your interview questions,
00:54:27.050 --> 00:54:29.250
so I'd like to talk about that as well. OK. Let's
00:54:29.250 --> 00:54:33.849
talk about the advice. OK. Computer software
00:54:33.849 --> 00:54:37.869
development, unless you're really in the bowels
00:54:37.869 --> 00:54:40.329
of the operating system, and even then this holds,
00:54:41.530 --> 00:54:47.750
is largely a psychological game. One of the most
00:54:47.750 --> 00:54:53.170
important aspects is empathy. Remembering that
00:54:53.170 --> 00:54:59.530
we're servants. We serve our users. You sound
00:54:59.530 --> 00:55:02.889
like a character from Tron. Well, okay, I've
00:55:02.889 --> 00:55:05.389
never seen, actually I did see Tron, I think.
00:55:05.389 --> 00:55:08.010
I don't remember it, but I did see it. But we
00:55:08.010 --> 00:55:14.829
are, look, who funds us? Who pays us? Who gives
00:55:14.829 --> 00:55:18.309
us our satisfaction? You know, those of us who
00:55:18.300 --> 00:55:22.199
who writes software that makes it out in the
00:55:22.199 --> 00:55:25.659
real, in the general world. I don't want to say
00:55:25.659 --> 00:55:27.619
the real world because every aspect of the world
00:55:27.619 --> 00:55:30.840
is real. Well, if I may interrupt, so like one
00:55:30.840 --> 00:55:34.940
of the things I advise students when, which kind
00:55:34.940 --> 00:55:38.019
of saying essentially what you're saying is I
00:55:38.019 --> 00:55:40.280
tell them, you know, study humanities because
00:55:40.280 --> 00:55:42.820
you'll be building systems for humans. Exactly.
00:55:43.559 --> 00:55:47.079
And then I think we're both fans of parole, aren't
00:55:47.079 --> 00:55:52.800
we? Um, but as Agatha Christie's or Kiel Paro
00:55:52.800 --> 00:55:55.800
would say, you must use the little gray cells
00:55:55.800 --> 00:56:01.099
and it's true, you know, learn how to solve problems.
00:56:01.320 --> 00:56:03.019
It's much more important to learn how to solve
00:56:03.019 --> 00:56:06.039
problems than to learn technology. The technology
00:56:06.039 --> 00:56:09.559
will sort itself as you use it, but learn how
00:56:09.559 --> 00:56:12.960
to see a problem, learn how to solve a problem,
00:56:13.000 --> 00:56:16.179
learn how to translate a user's request for a
00:56:16.179 --> 00:56:20.570
particular system. into a statement of need.
00:56:21.269 --> 00:56:25.489
One of the things I ask in job interviews, you
00:56:25.489 --> 00:56:29.250
know, sort of towards the end, I say, I need
00:56:29.250 --> 00:56:34.130
to know one thing. One thing where I want to
00:56:34.130 --> 00:56:38.809
start is, where does it hurt? Every organization
00:56:38.809 --> 00:56:43.050
has a set of problems that, great, you know,
00:56:43.050 --> 00:56:46.150
they hold things back, but they don't seem to
00:56:46.150 --> 00:56:49.639
be They never become acute, but they're chronic.
00:56:50.420 --> 00:56:54.420
I said, I'm interested in those problems. Okay.
00:56:54.599 --> 00:56:58.699
Because I found that solving them yields far
00:56:58.699 --> 00:57:02.440
more benefits than everybody, generally anybody
00:57:02.440 --> 00:57:07.440
ever conceived. Those are the grit in the works.
00:57:08.219 --> 00:57:10.139
That's what I like to, that's how I like to clean
00:57:10.139 --> 00:57:18.349
that out. Okay. So learn to solve problems. For
00:57:18.349 --> 00:57:23.590
goodness sakes, learn about yourself. Learn what
00:57:23.590 --> 00:57:25.349
you like to do. Learn what you don't like to
00:57:25.349 --> 00:57:28.429
do. Pay attention to what you do well. Pay attention
00:57:28.429 --> 00:57:31.849
to what you don't do well. That matters too.
00:57:32.510 --> 00:57:34.909
People say, oh, my weakness is, oh, my gosh,
00:57:34.909 --> 00:57:38.190
it's terrible. It's you. It's you. You have to
00:57:38.190 --> 00:57:40.489
live with it. You have no choice. Pay attention
00:57:40.489 --> 00:57:43.630
to it. Learn how to live with it gracefully.
00:57:44.130 --> 00:57:46.949
I'm the world's worst clerk. I live with it as
00:57:46.949 --> 00:57:49.530
gracefully as I can. I live in a world where
00:57:49.530 --> 00:57:53.769
clerkship trumps everything. Every time you do
00:57:53.769 --> 00:57:55.710
anything, you have to be a clerk. Go pick up
00:57:55.710 --> 00:57:58.429
a prescription at the grocery store. Buy groceries.
00:57:58.750 --> 00:58:02.110
Go, go, go. I don't know. Get your driver's license
00:58:02.110 --> 00:58:05.389
renewed. Anything. You run against clerkship.
00:58:05.969 --> 00:58:09.730
We're a society of clerking. Well, what exactly
00:58:09.730 --> 00:58:12.739
do you mean? Filling out forms filling out a
00:58:12.739 --> 00:58:15.059
form that seems simple to everybody. I always
00:58:15.059 --> 00:58:18.900
take two copies Uh -huh one to mess up and then
00:58:18.900 --> 00:58:22.500
and and scratch over and then copy from The one
00:58:22.500 --> 00:58:25.880
I messed up to the one I turned in always you'll
00:58:25.880 --> 00:58:29.300
always see me take two I'm not trying to be selfish.
00:58:29.300 --> 00:58:31.300
I don't want to generate the waste, but I need
00:58:31.300 --> 00:58:37.280
it Everybody has something now When it comes
00:58:37.280 --> 00:58:40.840
to solving problems, I advocate them the following
00:58:40.840 --> 00:58:44.079
with the caveat that it doesn't apply to everybody,
00:58:44.280 --> 00:58:48.320
but I suggest that everybody give it a try. Okay.
00:58:49.239 --> 00:58:53.480
Start with the nouns. What's in it? What's it
00:58:53.480 --> 00:58:56.360
made of? How do the pieces interrelate? Okay.
00:58:56.500 --> 00:58:59.960
And go finer and finer and finer and finer. For
00:58:59.960 --> 00:59:03.679
example, okay. Let's look at a typical business
00:59:03.679 --> 00:59:08.099
concept, a customer. Okay. Ask yourself the question,
00:59:08.380 --> 00:59:11.980
am I a customer? Well, the question is incomplete,
00:59:12.420 --> 00:59:15.619
okay? You can't just be a customer in isolation.
00:59:15.619 --> 00:59:19.599
You have to be a customer of some other organization.
00:59:20.619 --> 00:59:22.960
So what is a customer? Do customers walk around
00:59:22.960 --> 00:59:27.320
in the real world? No. People walk around in
00:59:27.320 --> 00:59:30.440
the real world and they act as customer. Customer
00:59:30.440 --> 00:59:32.940
is not a first -class object in the way that
00:59:32.940 --> 00:59:35.679
people and coffee cups and chairs and tables
00:59:35.679 --> 00:59:39.380
and computers and the natural numbers are, okay?
00:59:39.610 --> 00:59:43.989
Customer is a role. You learn that. What do you
00:59:43.989 --> 00:59:46.010
need help with regarding a customer who is a
00:59:46.010 --> 00:59:49.190
role? Please provide more details so I can...
00:59:49.190 --> 00:59:54.809
Leave that in. Yeah, Gemini decided to pipe in.
00:59:55.090 --> 01:00:00.489
Yeah, Gemini must think we're a deli. Buttered
01:00:00.489 --> 01:00:02.849
roll! Yeah, that's good. I think I'm going to
01:00:02.849 --> 01:00:08.909
leave that in the recording. So, I say... that
01:00:08.909 --> 01:00:12.690
the truth is in the nouns if you go deep enough.
01:00:13.190 --> 01:00:18.570
Learn to go deep, okay? Learn to ask what? Never
01:00:18.570 --> 01:00:21.949
ask why. Why is a challenge. If you need to know
01:00:21.949 --> 01:00:26.170
why, say, could you provide some context, please?
01:00:26.190 --> 01:00:30.929
I'm confused. Don't be afraid to be confused
01:00:30.929 --> 01:00:34.869
and to lack knowledge. You can use them as tools.
01:00:35.969 --> 01:00:40.250
Say, I'm sorry, I... I don't make jewelry. Please
01:00:40.250 --> 01:00:42.409
tell me about making jewelry. And I did write
01:00:42.409 --> 01:00:44.809
a system that made jewelry that recovered eight
01:00:44.809 --> 01:00:48.010
pounds of gold, eight pounds, a gallon of milk's
01:00:48.010 --> 01:00:53.010
worth of gold from dead inventory. Please tell
01:00:53.010 --> 01:00:58.190
me. I want to know what you touch. Don't ask
01:00:58.190 --> 01:01:00.349
people what they do. They can't tell you. They
01:01:00.349 --> 01:01:02.869
internalize it too much. I can't tell you how
01:01:02.869 --> 01:01:06.539
I write software. No. Ask people what they touch,
01:01:06.719 --> 01:01:08.559
what they handle, what passes over their desk,
01:01:09.019 --> 01:01:13.000
what their colleagues touch, how items and information
01:01:13.000 --> 01:01:19.039
moves. I know one of your favorite questions
01:01:19.039 --> 01:01:21.539
that you would ask in software engineering interviews
01:01:21.539 --> 01:01:25.000
was the quadratic equation. Can you explain that?
01:01:25.219 --> 01:01:30.000
I always like that. When I interview people,
01:01:30.519 --> 01:01:33.210
I like to know... to discover how they think,
01:01:33.449 --> 01:01:35.550
to actually take a journey with them through
01:01:35.550 --> 01:01:40.250
their thoughts. And I'm evaluating two things,
01:01:40.630 --> 01:01:45.349
what they can do and what they can learn. And
01:01:45.349 --> 01:01:48.210
I'd rather work with somebody who can do little
01:01:48.210 --> 01:01:50.809
and learn a lot than someone who can do a lot
01:01:50.809 --> 01:01:54.170
and learn a little, because the half -life of
01:01:54.170 --> 01:01:56.909
knowledge is very, very short. Especially in
01:01:56.909 --> 01:02:00.900
this field. Yeah. I mean, at one time, I could
01:02:00.900 --> 01:02:04.340
recite entire prime manuals from memory. What
01:02:04.340 --> 01:02:07.280
good is that now? It's good material for storytelling,
01:02:07.719 --> 01:02:10.059
and it'll be clear to anyone who listens to this,
01:02:10.059 --> 01:02:14.739
I love telling stories. But as a practical matter,
01:02:15.420 --> 01:02:20.360
it's not worth much. But the ability to go into
01:02:20.360 --> 01:02:23.579
a system and learn about it and use it effectively,
01:02:24.179 --> 01:02:26.840
to come up to the speed, to come up to that 80
01:02:26.840 --> 01:02:29.119
% level where you're able to function quickly,
01:02:30.889 --> 01:02:35.030
by digging into the nouns, okay, which is how
01:02:35.030 --> 01:02:39.670
I do it. That will sustain you for a lifetime.
01:02:39.929 --> 01:02:44.469
So the question is, you know, how do you think?
01:02:44.989 --> 01:02:47.130
No, no. So the question that you ask. The question
01:02:47.130 --> 01:02:51.070
that I ask is, it's very simple, okay? I like
01:02:51.070 --> 01:02:53.190
to ask this with people at the beginning of their
01:02:53.190 --> 01:02:56.989
careers. I say, you know, there's no requirement
01:02:57.360 --> 01:03:01.579
that you know the answer to this question. Not
01:03:01.579 --> 01:03:04.300
knowing or not remembering is fine, but do you
01:03:04.300 --> 01:03:07.059
happen to remember the formula for solving a
01:03:07.059 --> 01:03:09.920
quadratic equation? No tricks, just what we all
01:03:09.920 --> 01:03:13.420
learned in high school. I just want to make sure
01:03:13.420 --> 01:03:17.559
you know it by way of preparing to ask a question.
01:03:18.539 --> 01:03:21.159
And we make sure that they remember the formula
01:03:21.159 --> 01:03:25.019
properly. I said, OK, all I want you to do is
01:03:25.019 --> 01:03:28.340
to write a program to solve quadratic equations.
01:03:29.340 --> 01:03:33.059
You may be in C. Solve it. Any way you want.
01:03:33.159 --> 01:03:35.199
Any language you want. You can write it in, you
01:03:35.199 --> 01:03:37.079
know, just write the steps down if you want.
01:03:37.539 --> 01:03:39.280
You don't have to write it in computer language.
01:03:39.360 --> 01:03:42.039
I just want to see how you go about doing it.
01:03:42.539 --> 01:03:46.099
Now, you might ask, well, they know the answer.
01:03:46.800 --> 01:03:49.320
Okay. Why do you ask them? Why do you give them
01:03:49.320 --> 01:03:51.179
the answer? Well, of course, I don't give them
01:03:51.179 --> 01:03:53.659
the answer. I give them the easy part. Okay.
01:03:54.079 --> 01:03:58.119
The hard part. What are the inputs? What are
01:03:58.119 --> 01:04:01.099
the outputs? What are the outputs to add to that?
01:04:01.880 --> 01:04:05.760
Okay. What are the preconditions? Okay. Well,
01:04:05.780 --> 01:04:08.980
post -conditions and invariants are not so relevant
01:04:08.980 --> 01:04:13.960
in this case. Okay. But I've had people do the
01:04:13.960 --> 01:04:18.500
doggonest things. A, B, and C int. Not checking
01:04:18.500 --> 01:04:22.860
if A is zero is not zero. Okay. A is non -zero.
01:04:23.219 --> 01:04:26.659
What do you do if it's zero? Well, what are your
01:04:26.659 --> 01:04:29.659
choices? Well, you can say naughty, naughty.
01:04:30.619 --> 01:04:34.039
Or you can say, ah, OK, it's zero. I'll treat
01:04:34.039 --> 01:04:37.579
this as a linear equation. And there are arguments
01:04:37.579 --> 01:04:43.920
for either one. It's ambiguous. I want the candidate,
01:04:43.960 --> 01:04:49.199
the potential future colleague, to tell me, what's
01:04:49.199 --> 01:04:52.039
your opinion? These are matters of opinion and
01:04:52.039 --> 01:04:58.360
value. personal values and engineering methodology.
01:04:59.539 --> 01:05:03.739
What do you do if the discriminant is negative?
01:05:04.519 --> 01:05:08.639
What do you do? Well, some people would say you
01:05:08.639 --> 01:05:11.039
throw an exception because it's wrong. But is
01:05:11.039 --> 01:05:15.579
it wrong to ask how many roots an equation has
01:05:15.579 --> 01:05:20.019
when it has none? Is it wrong? What do you do
01:05:20.019 --> 01:05:22.599
in the degenerate case where there's only one
01:05:22.599 --> 01:05:28.960
root? The ideal candidate would treat A equals
01:05:28.960 --> 01:05:31.000
zero one way or the other. It doesn't matter.
01:05:31.139 --> 01:05:34.219
As I say, there's justification for both. Return
01:05:34.219 --> 01:05:36.599
zero roots if there are zero roots. Return one
01:05:36.599 --> 01:05:38.679
root if there's one root. Return two roots if
01:05:38.679 --> 01:05:41.159
there are two roots. So you return an array or
01:05:41.159 --> 01:05:46.039
a list. I don't care which. And I've had in interviews,
01:05:46.360 --> 01:05:48.559
I was interviewing at some bank and they asked
01:05:48.559 --> 01:05:53.530
me these really easy questions. I wanted to get
01:05:53.530 --> 01:05:56.210
a feel of them, so I told them, if you're interested
01:05:56.210 --> 01:05:59.389
in what I would ask in circumstances like this,
01:05:59.389 --> 01:06:01.590
and I gave them this question. They looked at
01:06:01.590 --> 01:06:04.670
me puzzled, and I told them why, and they said,
01:06:05.349 --> 01:06:08.289
but that's unfair. I said, nobody's ever said
01:06:08.289 --> 01:06:11.769
that before. What's unfair about it? Well, the
01:06:11.769 --> 01:06:14.349
candidate doesn't know what you want. I said,
01:06:14.610 --> 01:06:18.670
but that's the way it is in this world. It's
01:06:18.670 --> 01:06:23.320
ambiguous. I'm part of the job as a software
01:06:23.320 --> 01:06:27.679
engineer is to find out what the right thing
01:06:27.679 --> 01:06:33.019
is. Okay, so just to wrap it up, so what do you
01:06:33.019 --> 01:06:40.599
do now that you've retired? Well, I mentor a
01:06:40.599 --> 01:06:44.579
robotics team and I'm looking for something interesting
01:06:44.579 --> 01:06:49.260
part -time to do, not necessarily lucrative immediately.
01:06:51.039 --> 01:06:53.960
I'm actually toying with the idea of learning
01:06:53.960 --> 01:06:57.739
COBOL because there's lots and lots and lots
01:06:57.739 --> 01:07:00.119
of part -time gigs using COBOL. There's going
01:07:00.119 --> 01:07:03.300
to be lots of gigs to fix a vibe code and application.
01:07:03.519 --> 01:07:05.820
Yes, there is. That I think I could just walk
01:07:05.820 --> 01:07:09.280
in and do. Fixing applications, again, it would
01:07:09.280 --> 01:07:11.760
be very interesting because debugging, again,
01:07:11.800 --> 01:07:15.320
is largely a psychological game because you have
01:07:15.320 --> 01:07:17.559
to get in the head of the original author. How
01:07:17.559 --> 01:07:20.159
you get in chat GPT's head, That would be an
01:07:20.159 --> 01:07:23.340
interesting question. You don't want to go there.
01:07:24.000 --> 01:07:26.400
Okay. Well, thanks very much. Oh, you're welcome.
01:07:26.539 --> 01:07:28.780
That was a great conversation. I enjoyed it too.
01:07:29.280 --> 01:07:32.219
I hope our readers do as well. Listeners. Sorry,
01:07:32.460 --> 01:07:34.559
not readers. I hope our listeners do as well.
01:07:35.480 --> 01:07:37.639
Well, if you got to this point, thank you so
01:07:37.639 --> 01:07:40.619
much for listening and we'll see you next time.
01:07:55.819 --> 01:07:58.739
you you you