Seibel: So you and Kay followed, as you say, separate paths. Did youbecome disenchanted with the original Smalltalk vision?
Ingalls: No, not at all. I’ve talked about my training as a physicist, and Ithink it’s in my nature to look at the world—how it works, how forces are,how the planets move, how the winds blow, and all that stuff—as askingquestions about it and really being in touch with the phenomenon. In thephysical world, at least, that’s easy. You can zero in and come away with anunderstanding of, “Yes, that’s how it works.”
In computers I think there’s the same kind of thing. You should be able, in acomputing environment, to zero in on music and musical synthesis andsound and just understand how the whole thing works. It should beaccessible. The same thing with graphics. It’s put together very much thesame way. You’ve got atomic things, which are the various graphical effects,and then you’ve got structural things you put them together with. The samething’s the case for numerical calculation.
When I take somebody new with Smalltalk, I’ll say, “What interests you,taking text apart? Playing with numbers? Looking at graphics? Or playingwith music?” And then we start there and do a deep dive on that. It’s verymuch still a part of my passion, and I’m sure Alan’s too, to take peoplethrough some deep dive in a direction that they’re motivated about so theycome away with what Alan calls powerful ideas—the “aha!” that lets yousee this amazing variety is really a couple of small, general things at work.
You can see that in music. You can see it in graphics. You can see it innumbers and text manipulation. And it’s really exciting to me to make thatavailable and accessible.
The Squeak environment is really a computer scientist’s environment. TheeToys environment is a kids’ environment, but not as comprehensive as itcould be, and I still feel there’s a thing we haven’t done out there, whichwould allow you equally intuitively to dive in and get a physicalunderstanding of those powerful ideas.
I’m still as passionate about that as anything. Why I’m here doing thisstuff—JavaScript and the browser—is that we’re getting pretty close to beingable to put Squeak-like material on a web page that you can browse from anybrowser and interact with in some nice, self-revealing way. That’s part of thiswhole picture. I’m sure it’s going to change. Browsers are going to change.We’ll get other languages besides JavaScript, and I’m still totally in touchwith Alan and his group, who are doing another take on this going deeper downand trying to solve some of these other things more seriously. But it’sabsolutely still the same vision.
Seibel: You mention four disciplines: music, graphics, mathematics, andtext. Those are about as old as humanity. Clearly there are powerful ideasthere that are independent of computers—the computer just provides a way toexplore them that might be hard without the computer. Is there also a set ofinteresting, powerful ideas inherent in the computer? Is programming orcomputer science another deep discipline—a fifth area—that we can only do nowthat we have computers?
Ingalls: Yes, I think that’s what I am getting at. The curriculum I’ve alwaysenvisioned is one in which you start with one of these and maybe from themotivation of going deep in one of those areas, you move over to one ofthe other ones that’s less familiar and do a similar thing there. And a lessonto be learned is that the way in which you get to those simpler, deeperstructures that generate that whole field is similar in every case.
There’s an algebra of graphics. It’s primitive objects, superpositiontranslation, rotation. Or music. It’s notes and temporal sequences andchordals—same thing. And I think this goes back to seeing how the windworks and how the planets move. It’s an invitation to go down and find outhow things work and learn the things that make up the algebra—theprocesses and the primitive things. So yes, that fifth area, as you call it, isjust what’s common about all of these things.
Seibel: Would you expect someone who has played with three or four ofthese areas to end up learning how to program? Or is that just one of thethings that could happen if their interest happened to go down a particularchannel?
Ingalls: I think it’s just one of the things that could happen. Hopefullyyou’ve sharpened their thinking skills. Both by introducing them to stuff andby getting them excited about stuff in some way or another. But there arepeople who are going to like programming and there are people who arenot. I’ve got a 12-year-old son and all he wants to do is do 540s on skis, andthere’s a time and a place for everything.
Seibel: Back to some nitty-gritty: how do you test your software?
Ingalls: It depends what I’m doing. I always set it up for the most immediategratification. So when trying to do something new, I just think of whatwould be the first piece of success that’s achievable. And it’s different inevery case. If I had a more normal life, in more normal programming teams,I’d probably be totally into the current way of team programming. But forme, it’s much more self-induced—even down to a question of my attentionspan. If I think I could get this working over the weekend, then that’s thechunk I pick and that’s the thing that I go flat out for, ignoring all the otherthings. It’s hard for me to generalize this except to say, there’s a place youwant to get to, you pick a piece of it that would be gratifying and that woulddemonstrate that you’re on the path and that you can fit into the time untilyou next get pulled off to do this at home or that at work.
Seibel: Since you’ve picked something that’s going to have some kind ofgratifying result at the end, that’s your first test—an acceptance test: does itdraw a window on the screen or whatever? What about finer-grained tests?
Ingalls: If it’s the first time you’ve made it possible to pick something upand drag it over and drop it down, there’s a framework that you need tohave working there. Is the framework factored so that someone elsecoming along will see that these are the tests? That’s something that I havenot typically done. This may just be the luxury of my generation—nobodywould get away with that these days. But I’m an old fart and they’re notgoing to make me do it. But I think the underlying feeling is still the same.The Squeak code used to be full of comments that are executable and thingsto check. For instance, in lots of the BitBlt tests, there are these little thingsthat will pick something up from one place on the screen, do something toit, and put it back, and if you see anything change on the screen, it’s notworking right and the comment says so. That’s a straightforward test.
Seibel: So let’s talk about working with others. The Learning ResearchGroup at PARC sounded like a pretty close-knit group. How did youcollaborate on the code itself?
Ingalls: Just by being close. And occasional mayhem. It was never a biggroup and we each had our own areas. There’s a lot of team programmingexpertise that’s grown up and I’m not up on it at all. Right now, in the LivelyKernel, the kernel part has been just me and one other guy, KrzysztofPalacz. And we sort of have our separate areas that we work on. Weactually do use a code repository now, and there are other guys on theteam who are doing more application stuff and a little bit in the kernel. AndI see that it’s nice having a shared repository that works—that’s great. Thenext step for the Lively Kernel is to integrate it with the repository—youcan change stuff in the Lively Kernel but it’s only that running version; itdoesn’t get pushed out to the repository and become a part of the future.That’s the next step we need to do.