ARPANET
In 2004, Bob Kahn would share the Turing award with Vint
Cerf “For pioneering work on internetworking, including the design
and implementation of the Internet's basic communications protocols, TCP/IP,
and for inspired leadership in networking.” Bob and Vint would also be
awarded the Presidential Medal of Freedom for their work on TCP-IP, the Internet's
basic communications protocols. Vint Cerf is the person most often called the
father of the Internet (sorry, Al Gore), but I think Bob deserves just as much
credit.
I first met Bob at BBN in the late 60s. He joined BBN a year
or two after I did. Bob would often come into my office to bounce ideas off me.
At one point he came in to discuss a problem he was having trying to work out
some combinatoric issues with regard to the ARPANET that was just being
implemented. The issue had to do with how you connected up n nodes. Did
each node have to connect to each other? Should there be some “hubs” as with
the airline industry? Etc.
I had taken a course in Combinatorial Analysis from Marshall
Hall[1]
when at Caltech and we touched on a discipline called Block Design. I told Bob
that his problem sounded like a problem in Block Design and suggested he
consult Marshall Hall’s book on Block Design. He came back a day or so later
and told me that I had just saved him months of work.
Bob gave me a much more interesting assignment when he came
to me on another occasion and asked if I would write a program in BBN LISP that
simulated traffic on the ARPANET – at that time, there were only about a dozen
sites! – in order to enable him to study various important aspects of
networking. He was especially interested in the ways in which networks become
clogged. He also wanted to experiment with various algorithms and heuristics
for unclogging them.
The idea was that Bob could specify various policies for
dealing with outages, traffic, etc., and then we would inject packets into the
simulated net and watch what happened. For example, if a packet was going from L.A. to Boston, we might
pull Denver off line and see – on the display –
whether the packet would automatically reroute to Salt Lake
City and go around Denver.
When the packet got to Salt Lake City and discovered that the line to Chicago
was very congested, would it automatically reroute to St. Louis? Could we
create situations in which a packet would loop around in a circle because it
would keep changing its mind about what was the shortest path?
We actually observed some scenarios in which the network
seemed to deadlock. We weren’t quite sure whether or not to believe my
simulation program, but indeed, a year or so later when we were able to
actually field test the ARPANET, we found that the simulation program had in
fact accurately predicted this behavior.
I gave a talk about my ARPANET simulation program at the
Third Princeton Conference on Information Sciences and Systems in 1969. The
talk was well received, and the abstract of the talk subsequently received a
lot of citations. (See Figure 33.)
I’m sorry that we didn’t write a full paper, and even more so that I don’t have
any screen shots. It was a lot of fun, though.
For these activities, as well
as my work on BBN LISP, I would be considered an ARPANET Pioneer and invited to
participate in the celebration of the 25th anniversary of the
ARPANET in 1994 (see Figure 34).
From a professional perspective, I consider myself fortunate
and honored to what little degree I was able to help Bob in his early efforts.
But Bob and I also became friends outside of work. We frequently playing
squash, tennis, and went skiing together. I also managed to lure him once into
a dog sledding outing. That’s Bob with Korak and Orc, Ken Ledeen’s dog, in Figure 35.
Bob was 30 at the time.
Bob introduced me to golf. Bob was an excellent golfer, and
had played on the varsity golf team in college. He would address the ball, and
I could tell he was thinking something like, “Would I rather be 240 yards out
on the left or 260 yards out on the right?” When I got up to address the ball,
I would be thinking “I sure hope I don’t miss the ball entirely!”
In addition to playing the full size course at Stow, Bob introduced me and Danny Bobrow to the Powderhorn
Par-3 Course in Lexington.
On one of my first outings, I had hit my ball into a sand trap that was
elevated about eight feet above the green. I knew from reading Sports
Illustrated that I was supposed to hit behind the ball and “explode” it out of
the sand. However, with the typical beginner’s reluctance to hit the ground, I
skulled my shot.
On a skulled shot, the leading edge of the club hits the
ball near the ball's middle, sending the ball screaming off on a low trajectory
with little or no spin. A skull often travels farther than expected or desired,
especially on skulled shots around the green.
This was certainly the case with my shot. It went rocketing
across the green and probably would have come to rest a hundred yards away.
Instead, the ball hit the flag, and dropped neatly into the cup! Since this was
only my second or third time playing, I turned to Bob and innocently asked,
“Does that happen often?” Bob just shook his head in disgust several times and
walked away.
I was the Principal Investigator on BBN’s ARPA contract. One
benefit derived from this was that I got
to attend the meeting of all of the ARPA PI’s that was held at Alta Ski area!
The Alta conference was the best boondoggle I ever got to attend (although a
conference I went to at Capri,
Italy in 1982
was a close second). I guess it wasn’t really a boondoggle in that we did do
useful work. We would meet in the mornings and evenings, but we would get to
ski in the afternoons!
Bob Taylor hosted the conference. Bob Taylor had run ARPA
for a number of years in the 60s. He would later be my boss when I went to
Xerox PARC. But at this point in time, he was decompressing at nearby
University of Utah.
The PI’s [Principal Investigator] met and discussed various ongoing
ARPA research projects in our meetings. The atmosphere was very casual, and
also thin! This was my first time at a high altitude. Although it was only a
modest 8500 feet, nevertheless the atmosphere had quite an effect on me. I
remember midway down my second or third ski run on the first day almost
overcome by the desire to ski off to the side and take a nap. Serious oxygen
debt. I didn’t realize I had to make a conscious effort to breathe. And one
time in a meeting, somebody said something funny, and I started laughing and
couldn’t stop. I was rolling around on the floor and everybody was looking at
me in amazement. I’m sure it was the altitude.
I met a number of people at the Alta Conference that would
later play an important part in my professional life, including Alan Kay, Jim
Mitchell, and Bob Balzer.
I was invited to join the International Federation for
Information Processing Working Group 2.3 in 1968. I am not sure quite how and
why I was invited, but it sounded prestigious and I got to travel to Europe, so
how could I refuse? IFIP WG 2.3 was a working group on Programming Methodology,
which covered a pretty wide area as I would find out.
The first meeting I attended was in Rome in 1968. (This was
where I had my adventure at St. Peter’s with the two schoolteachers discussed
earlier.) I gave a talk about the work I had been doing with BBN LISP aimed at
making it easier for developers to find and fix bugs quickly. I explained how
users could put in breakpoints, examine the state of their program, edit the
program and continue with the computation. If an error occurred, the program
would automatically go into a break in which the user could examine the current
state of their program variables and data. They could reset these variables or
modify data structures, could edit their source program, and continue the
computation with their changes taking immediate effect.
While I was talking, one of the more famous computer
scientists in the world, Edsger Dijkstra began shaking his head from side to
side in disapproval and frowning. Dijkstra is considered to be the father of
structured programming. He was a determined crusader against the use of GOTO
statements in programs. He considered these to be inherently evil, arguing they
should be replaced by structured control constructs such as the while loop. He
would win the Turing award in 1972. The citation reads: He is one of the principal proponents of the science and art of
programming languages in general, and has greatly contributed to our
understanding of their structure, representation, and implementation. And Dijkstra was clearly very unhappy
with me.
He was sitting in one of the first few rows, so it was hard
for me to ignore his obvious disapproval of what I was saying. Finally, he
stood up and raised his hand. I had to recognize him and he began a little
speech. He told the gathering that he felt that making it easier for
programmers to recover from errors was basically the devil’s work, and
encouraged sloppy thinking. That when one of his students found a bug in a
program, he made them go into an empty room with a blank sheet of paper and
rethink the program’s logic. Dijkstra could on occasion be somewhat arrogant
and pretentious.
Dijkstra then made a somewhat sarcastic reference to me as
an “internationally renowned software entomologist.” He finished his impromptu
diatribe by dramatically asking the audience, “Just how many bugs are we going
to tolerate in our programs?”
Alan Kay (inventor of Smalltalk and a good friend – more on
Alan later), who got along well with Dijkstra, once said that “Arrogance in
Computer Science is measured in nano-Dijkstras.” Dijkstra enjoyed sparring
about all things, especially those he could pontificate about. He would often
write what he called “complaints.” For example, he wrote a piece entitled "On
The Fact That The Atlantic Has Two Sides." Its central premise was that
"real math" was only done on his side of the Atlantic. That on the
other side of the Atlantic math was woefully lacking, especially in computing. In
response, Alan wrote a rebuttal entitled "On The Fact That Most Software
Is Written On One Side Of The Atlantic.” Alan’s counterargument was that
computing wasn't like classical math, but constituted a new kind of math. Part
of the newness was that because of the expansion of degrees of freedom with
computing, we didn’t get to prove very much but had to *debug* our theories!
“Edsger was very amusing in his snottiness and snootiness,”
said Alan.[2]
But back in 1968, I didn’t find Dijkstra amusing at all! I
was 27 at the time, but I knew when I was being punked. Something in me made me
blurt out in response to his rhetorical question about how many bugs were
acceptable: “Seven!”
And the audience broke into laughter.
I don’t think Dijkstra ever forgave me for that. I shudder
to think how he would have reacted to me if this encounter had occurred a
couple of years later after I had implemented DWIM, which automatically
corrected spelling errors in programs.
[1] Marshall
Hall was my undergraduate math adviser at Caltech. He was also Don Knuth’s
Ph.D. adviser when he matriculated at Caltech.
[2] Personal
communication.