It's been almost ten years since your last involvement in the GNU Project, so many people don't remember you, but you once worked with the project to create the first free implementations of grep, diff and some other programs like that. Could you tell us how you first found out about the GNU Project?
It was at the end of my freshman year at St. Olaf. I worked as a student system administrator on the Unix systems there, and I stumbled across a tape from the "Unix Users of Minnesota" that contained GNU emacs. I'd heard of Emacs before, I think from a friend who went to MIT, and I wanted to see what it was like. I was hooked when I discovered it was partly written in Lisp, because I'd been fascinated by Lisp ever since I'd read Douglas Hofstader's columns about it in Scientific American, in the early 1980's.
Then, reading through the distribution, I discovered the GNU Manifesto, and found myself wholeheartedly in agreement with it. This was partly motivated by my own recent experience: St. Olaf had a Unix source license, but normal users were not allowed to look at the code. Since I had been hired by the computer center, I had access to the source code, but the frustration of wanting to find out how things worked and not being allowed was still fresh in my mind. So it was a big deal to me to find out that other people felt the same way.
You worked together with David MacKenzie at St. Olaf College as programmers for their various computers. What was the computers primary use, and how much of the software developed for the GNU system was put to use on them, if any?
We had a VAX 11/780, with a whole 4 megabytes of memory, running 4.2BSD. The project for the summer that David and I both worked there was mainly upgrading the school to 4.3BSD, and carrying many of the local changes over to the new system. We also had a PDP-11/70, running an extremely hacked version of v7 Unix that we joked should be called Stonix (after St. O and/or the state of mind in which it had been hacked).
At the time (1986) about the only GNU software available was Emacs, and although I played with it a bit, nobody at St. Olaf actually used it because it was far too big and slow for the 4 megabyte VAX with 30 users.
Later, in 1987 when the first versions of GCC came out, we had a handful of people using it (despite quite a few bugs) for its superior optimization compared to the Unix C compiler.
Was the computers at St. Olaf the first ones you came in contact with, or did you have any previous experience with computers? What made you interested in programming for them?
The exact moment that my fate was sealed was when I was in kindergarten, in 1972 or 1973. By sheerest chance, I turned the TV on one morning before going to school, and they were showing this giant rocket lifting off (one of the Apollos) and the announcer was talking about going to the moon. At that moment I became fascinated by technology and I was doomed. Later, after I learned to read, my parents got an encyclopedia and I pretty much read through every section related to any kind of gadget. The chapter on computers particularly fascinated me.
Despite this fascination, I never actually got to see a computer until 1981 when the school district bought a few Commodore PETs. And there was only one and eighth graders weren't allowed to use it! The next year, when I started high school, they had more computers, and I would go in early every day before school so I play with them before the officially sanctioned users got their grubby paws on them. I wrote a couple of video games, a Breakout clone and a sort of hybrid of Space Invaders and Missile Command. I was frustrated by the inability to do high speed graphics with BASIC interpreters, and when I figured out that "machine language" was much faster, I bought a book about the 6502 and learned that. Then, knowing machine language, I got interested in understanding how the entire system worked, and I spent a lot of time at the local college library reading books about all kinds of things I had no access to, like compilers and real operating systems. I never did get back to writing video games...
If I've gotten the dates correctly, you worked for the Free Software Foundation in the summer of 1988. At the time, Pete TerMaat and Phil Nelson was also working summers at the FSF. Do you remember how many hackers there was all in all and what they were working on?
Yup, you've got the dates right. Pete was there. But I never met Phil until years later--he was not in Boston in the summer of '88.
Pete was a fellow student from St. Olaf. After Richard hired me for the summer (based on 1 code sample that I had emailed him, and no interview, and no resume, and never having met me!) he asked me if there was anybody else I could recommend who might be interested. I thought about the skills of the other programmers I knew from St. Olaf and decided to try to recruit Pete. He was a bit of a hard sell, but eventually I convinced him to write some sample code and send it to Richard. I was always impressed that Richard was willing to take to my recommendation on hiring Pete before he had even met me.
The other hackers there that I remember were Jay Fenlason (a.k.a. hack, the original author of the famous game), Brian Fox, Noboyuki Hikichi, Paul Rubin, and Len Tower. I don't remember what everyone was working on. I think Jay might have been working on sed, Brian was working on Bash, and Paul was working on CPP. I wrote grep and join that summer, and substantially rewrote diff to use an efficient algorithm. Pete worked on GDB.
After the summer of -88, you returned for more work in -89, creating a new and more efficient malloc() implementation and some other tasks. At that time, Roland McGrath also worked at the foundation to work on the GNU C library. How long after this did you stay with the FSF and when did you decide to go on to other tasks?
When I graduated from St. Olaf, I had decided to work for the GNU project for 2 years, and then go to grad school. In addition to malloc() and sort, I wrote a bytecode interpreter and code generator for GCC. This was a pet project of Richard's. He was very inspired by a commercial product of the time, Saber C. What I had working was pretty cool--interpreted functions could call compiled functions and vice versa. The idea was eventually to incorporate the C interpreter into GDB, and so allow the user to do things like redefine functions during the course of a debugging session, or allow the interpreter to check and annotate program execution in various ways.
However, before my two years were finished I got an offer from Bell Labs to spend a few months there in the in the same research group that had originally invented Unix and was then working on Plan 9. I had always idolized their work, so I left the GNU project to hack at Bell Labs, and the interpreter was never finished. As far as I can tell, nobody else was sufficiently interested in the idea to complete the interpreter. Interestingly enough, Saber C also seems to have died out as well. I think specialized malloc checkers gave people most of what they were looking for with the interpreters, and ran lots faster.
Do you remember what the computer systems looked like when you joined the FSF? What kind of computers did you use, and what operating systems?
When I started, the FSF owned almost no computers, and we mostly used random computers sitting around the MIT AI lab. At some point in the summer of 1988, Sony donated a few workstations (the "NeWS" workstation), running a 4.2BSD variant, and I spent most of the summer using that. Later, when I worked for FSF full time but lived in Minnesota, I used my own AT&T 3b1 computer running UNIX System V for about 8 months. Then, when NeXT Inc. donated a workstation to the FSF, that was shipped to me and I used that for my last year with the FSF. The NeXT ran Mach, and although their GUI was rather cool, I got a firsthand look at how bloated and slow the underlying Mach kernel was. The other half of the reason I left FSF was Richard's obsession with using Mach rather than writing a new clean kernel. I predicted (correctly, it turned out) that Mach would be dog slow, and was ignored. Fortunately for the free software community the free BSD and Linux kernels became available during the next year.
What do you think was the most useful thing you did while working on the GNU Project and what's your feeling about having been involved in laying the foundation for a system that today has found such a great acceptance among other hackers?
To be honest, I have no idea what the most useful thing I did was. My malloc library has since been eclipsed by Doug Lea's. As for the reimplementations of the classic Unix utilities, you've got to have them all so you can hardly say any one is more important. Many of the free software projects depend heavily on CVS, and my diff code is in that, so maybe that's the most important. That said, though, my favorite project remains the fast string searching in GNU grep.
What's the most useful thing that working with the FSF brought you? And do you have any contacts today with the people you worked together with then?
My experience with the FSF got me a summer job maintaining GNU software for the P6 microprocessor design project at Intel. That gave me a front row seat on real world computer architecture, a field that had always fascinated me. I used to think wistfully that I should have gone to an engineering school, but as it turns out it didn't matter. One of the P6 architects, Andy Glew, took me on as a sort of protege and eventually I left grad school to work at Intel full time as a microprocessor architect.
Leaving the GNU Project behind, could you tell us what you've been up to since then? What other projects have you worked on, what do you work with today and what other hobbies besides computing do you find interesting?
Well, I worked for Intel on the Pentium 4 project. Since then I've joined a small networking startup. It's still up in the air whether we'll make it or not--I had the remarkably bad timing to join a telecom company just at the start of the telecom downturn. :-) Eventually I plan to return to microprocessor design--it is a near perfect match for my interests.
Besides computing, I spend a lot of time playing the guitar and trying to become any good at it. Also I live in Oregon and love the hiking here.
Finally, do you have any final words to share with the hackers that are working on the GNU Project today? Anything you want them to remember, or any words of advice?
Nope. I think this is already long enough. I am amazed and gratified by how the free software community has grown over the years, and the dedication so many people have. Nothing I could say could possibly do justice to that.