In 1978, I started graduate school at the California Institute of Technology. I was still officially a physics student, viewing computers as more of a hobby. Caltech was a great place to study science, with Nobel prize winners like Richard Feynman, Max Delbrück and Willie Fowler.

Ed Stone

Downs Laboratory

Although I would ultimately not persue physics, I could not have encountered a better professional role model than my advisor, Ed Stone. Ed had a rare combination of talents and character traits. I never saw him lose his cool or treat anyone inconsiderately. He was a hard working, skilled scientist, who did careful high-quality work. His proposals for funding had better scientific analysis in them than most other people’s journal papers.

Ed was also a talented administrator, chosen to lead NASA’s Voyager mission. I was lucky to be there for the busy Jupiter and Saturn encounters. Behind the scenes, careful planning packed in as much scientific investigation as possible as the spacecraft whipped past each planet. A complex schedule of events was developed to change spacecraft orientation, activate different experiments, and take pictures. Ed was the calm eye of the storm, surrounded by PERT charts, ringing telephones, and stressed out investigators all talking at once. It was no surprise to me when he later became the head of JPL.

HEAO-C Spacecraft

I worked on HEAO-C, a minivan-sized satellite designed to measure the rare heavy-nuclei component of cosmic rays. We spent some time where HEAO was built, at Ball Corporation, a company that makes canning jars and spacecraft (I kid you not). A staff programmer and I wrote the software to analyze HEAO-C3 data. I also wrote a Monte Carlo cosmic-ray tracer that simulated the bombardment of the instrument and helped calibrate the device and test our software. Once real telemetry data began to arrive, we used silicon and iron nuclei to complete calibration. The interesting heavy nuclei were run through a series of programs like “Cobalt Mine” and “Gold Mine” that sifted the cosmic rays into rarer and rarer catagories.

Another computer enthusiast in Ed’s lab was Rob Pike, who also joined Ed’s lab in 1978. He convinced us to run UNIX Version 6 on our PDP-11 computers, an operating system invented at Bell Telephone Laboratories. The University of Toronto and the University of New South Wales were important early adopters of UNIX, and Rob had come armed with the UT distribution tape and a famous commentary on the system by John Lions from UNSW.

UNIX had an elegant design that allowed users to combine simple operations into powerful computations. Simplicity is the hardest thing to do, and especially rare in software, which tends to be overdeveloped. I admired the disciplined restrained Bell Labs programming style, reminiscent of Mansfield’s work at Control Data. I got to know the V6 UNIX kernel like the back of my hand, and I wrote device drivers for our magnetic tapes and plotter.

The C programming language, also invented at Bell Labs, was used to implement UNIX. Many programming languages are proposed, but very few appeal to professionals in the real world. C became popular because it contained current ideas about program flow control and data-structures, but it also allowed precise control of the low-level operation of a machine (manipulating memory addresses, shifting bits, etc).

Our PDP-11/70 Computer

In the late 1970s, the minicomputers built by Digital Equipement Corporation (DEC) were creating a revolution in the industry. Based on inexpensive CMOS integrated circuits, they were not as powerful as mainframes, but they were a hundred times cheaper. People bought them like hotcakes, and soon, DEC replaced IBM as the biggest seller of computers in the world. It was the first of several such revolutions I have seen in just a few decades.
The Caltech Astronomy Department was one of the first to buy a VAX, DEC’s 32-bit successor to the PDP-11. But one night, an explosion smashed its circuit boards and blew off the doors; the result of an oatmeal-box-sized eletrolytic capaciter installed with the wrong polarity. In Lauritsen Laboratory, the High-Energy Physics Department also bought a VAX, and Rob Pike and I helped install UNIX 32V. It did not explode.

In retrospect, I hope we did the right thing for the users of that machine. The VMS system that came with the VAX was technologically superior: more efficient compilers, virtual memory support and a high performance file system. Even years later, Berkeley UNIX could not match the performance of VMS. But UNIX had many progressive features, and it was something we could tinker with. In the university environment, UNIX was soon dominant.

A little known fact about the history of UNIX is that virtual memory support for VAX UNIX was first done at Bell Labs by John Reiser. He modified the disk buffering subsystem, unifying disk caching and virtual memory into one mechanism. The results were impressive, and Reiser’s change was so subtle that it was hard find, reading the source code. I believe it was more efficient and elegant than the VM system done later at UC Berkeley.

Rob and I also worked with Stephen Wolfram on his early symbolic math systems. I wrote a second LISP interpreter for the VAX as part of that project. Our original plan was to compile the MACSYMA program, or perhaps translate it from LISP to the more efficient language C. When the six-inch-thick source printout arrived, we were dismayed by its size and tangled “speghetti code” design. Stephen eventually wrote a new system called SMP in C, using more efficient specialized data structures to represent algebraic expressions.