Seibel: So for the people who are reading this book and are going to bewriting some of the software of the future, is there any way to avoid thatstuff? Is there any way we can be smarter? Or is it just the nature ofevolutionary design?
Steele: Yeah. And not knowing the future. If I could change one thing—thisis going to sound stupid—but if I could go back in time and change onething, I might try to interest some early preliterate people in not using theirthumbs when they count. It could have been the standard, and it would havemade a whole lot of things easier in the modern era. On the other hand, wehave learned a lot from the struggle with the incompatibility of base-tenwith powers of two.
Dan Ingalls
If Alan Kay is Smalltalk’s father, Dan Ingalls is its mother—Smalltalk may havestarted as a gleam in Alan Kay’s eye, but Ingalls is the one who did the hard workof bringing it into the world. Starting with the first implementation of Smalltalk,written in BASIC and based on one page of notes from Kay, Ingalls has beeninvolved in implementing seven generations of Smalltalk from the first prototype tothe present-day open source implementation, Squeak.
Originally a physicist, Ingalls started programming with Fortran, made a businessselling a profiler he wrote while in grad school, and eventually found his way toXerox PARC, where he joined Kay’s Learning Research Group, which builtSmalltalk and explored the use of computers in children’s education.
While at PARC, Ingalls also invented the BitBlt operation used in bit-mappedgraphics and coded it in microcode for PARC’s Alto computer, allowing the high–performancebit-mapped graphics that enabled UI innovations such as pop-upmenus that we now all take for granted. (At one of Ingalls’s in-housedemonstrations of the Smalltalk system, a pop-up menu caused the subject of mynext chapter, L Peter Deutsch, to leap to his feet and exclaim, “Did you just dowhat I thought you did?”)
Now a Distinguished Engineer at Sun Microsystems, Ingalls is working on LivelyKernel, a Smalltalk-like programming environment that runs completely in thebrowser using JavaScript and browser-provided graphics. He received theAssociation for Computing Machinery Grace Murray Hopper Award in 1984 andthe ACM Software System Award in 1987 for his work on Smalltalk. In 2002 hewon the Dr. Dobb’s Excellence in Programming Award.
In our conversation, we talked about the importance of interactive programmingenvironments, why it was a lucky thing he never learned Lisp, and why it’s betterto build flexible, dynamic systems and then lock them down rather than buildingstatic systems and then trying to add dynamic features.
Seibel: To start at the start, how did you get involved in programming?
Ingalls: Let’s see. I grew up being an inventor in my basement, and physicswas the closest I could come to that so that was my college major. I wentto Harvard and there was a course on programming in Fortran, which Itook.
Seibel: What years would that have been?
Ingalls: I was at Harvard from ’62 to ’66. My two programming experienceswere this course on Fortran and there was a great lab in the basement ofone of the buildings where I took a course on analog computers. It makesyou think completely differently—you’ve got this big patch panel and thenjust a bunch of circuits that are integrators, differentiators—things that youcan wire together to solve all sorts of problems in real time. But it beganwith Fortran and I loved it from the get-go. I tried to see how much shorterI could make programs, and stuff like that.
As a result I decided that maybe I was interested in electrical engineering.So I came out to Stanford in double E and took some computer-sciencecourses there and really enjoyed that. I didn’t spend that much time withdouble E. I got into Don Knuth’s course and he had a graduate course onprogram measurement and I loved that. I actually worked on a program thatwould analyze other programs and dropped out of Stanford to make abusiness out of it. I got my master’s the next year, and then dropped out. Sowe’re in ’68 now, I guess.
Seibel: So it was a PhD program you dropped out of?
Ingalls: Right, in the radio science department at Stanford, which was partof double E.
Seibel: So the program you made a business out of—what was it?
Ingalls: Well, it started out with Knuth, as a part of a seminar I took. Theseminar was to measure programs and look at their dynamic behavior.
Seibel: Meaning, profiling?
Ingalls: Yeah. So there was a program that would gobble up a Fortranprogram and insert counters at every branch point. I made a fancier versionof it that also had a timer-interrupt process so that it would keep track ofhow much real time was spent in various parts of the program.
Seibel: So basically a sampling profiler?
Ingalls: Right. And what was notable about these was that until that timeprofiling had typically been in terms of memory locations, and it took aquantum mechanic to know what the results were telling you, whereas thiscame out in terms of your source code and you could see, “Oh, it’sspending all its time here.” This was immediately usable to the user. Irecognized, “Whoa! people could be using this.”
Seibel: So you ran your business for a while—is that what you were doingup until you went to Xerox PARC?
Ingalls: Pretty much. In fact, that’s how I ended up at PARC. I wound upspending a bunch of time in local service bureaus. There was a Control Dataone and an IBM one. And I would take my program around to these variousplaces and make sure that it ran on their particular computer.
Seibel: And this was profiling Fortran code still?
Ingalls: Yeah. But I found out an interesting thing. Who were the bigFortran users? They’re big scientific computation users. And who are theyall working for? They’re all working for the government. Do they care howefficient their program is? Not really. What they really want to do is toshow that the computer is overloaded and that they need a new computerand more money. I showed this at a couple of companies and they said,“Jeez, if you had this for COBOL it would be great.”
Seibel: Because no one’s going to give them more money to buy big ironfor COBOL.
Ingalls: Exactly. So I wrote the same thing for COBOL. This was myimmersion into COBOL. I remember writing the completion routine thatwould put together the statistics from the timer interrupts. The completionroutine wanted to be written in the same language as the thing you’remeasuring so that it could all be loaded in together. I may be the onlyperson who’s ever written a hash table in COBOL.
Anyway, that sold great. I can remember several sales calls where I’d go outand as a demo I’d run it on one of their programs and, in the course of thedemo, would show them how to save more money than the program cost.
In the process of going around to these service bureaus, I wound up at theCDC service bureau in Stanford industrial park—typically you’re workinglate at night because that’s when it was less expensive—there was anotherguy there who had a Fortran program to do speech recognition. He hadvarious speech samples and his program analyzed the spectra and groupedthe phonemes and stuff like that. I started talking to him and I said, “Well,jeez, you want to run my program on yours?” So we did that and partedcompany.
He called me up a couple of weeks later and said, “I’ve been hired by Xeroxto do a speech-recognition project and I’ve got no one to help me with thenitty-gritty; would you like to work with me?” So I started consulting withhim. That was George White, who went on for a long time to do speechrecognition. That’s how I got in with Xerox and also with Alan Kay, becauseit turned out that my office was across the hall from Alan’s and I kepthearing conversations that I was more interested in than speechrecognition.