I've been programming computers since 1969. That's the year I started attending college at CalTech in Pasadena, California.

We actually had an online system in those days! The terminals were IBM 1052s -- basically, Selectric typewriters hooked up like teletype machines. I think the computing center was running a couple of IBM 360/65s. I'm not certain ... I was just a lowly freshman, and I didn't have access to the sanctum sanctorum in the computing center. That was for grad students.

Anyway, the language we used was called CITRAN. It was a takeoff on FORTRAN, the Formula Translator, but since it had been developed at the California Institute of Technology, or CIT, it needed its own acronym. It was a time-sharing system. You entered commands, and program statements, from the typewriter. When your program was saved in the library, you said RUN and the system compiled your code, linked it, and executed it. If you had a bug, you got a not very helpful diagnostic message and BETTER LUCK NEXT TIME! CITRAN. If you wanted to print an entire program listing, with a cross-reference table for all the symbols, it might take 30 minutes, or longer. Connect time was limited, so people kept their programs simple and short.

Computers were crude in those days. Integrated circuits were fairly new, and very expensive. Component densities were about 3 orders of magnitude lower than they are today. Solid state RAM hadn't been invented yet. So the memory in those machines consisted of little ferrite cores that could be magnetized. If the north pole of the magnet pointed up, that was a one; if it pointed down, it was a zero. These little "cores" were shaped like tiny donuts, and they were strung on a grid of very fine wires. Two wires passed through the center of every one of the little donuts, and there was one donut for every bit in the machine's memory. At nine bits per byte (8 data bits, plus one for parity checking), and up to 16,777,216 bytes in the machine's memory, that's a lot of donuts and a hell of a lot of wire!

I still remember the first project I used the computer for. I was in a theoretical chemistry class called Chem II. We were studying the Schrödinger wave equation for the hydrogen atom. That's a quantum mechanical construct that describes how much total energy the single electron in that atom can have when the atom's in an eigenstate -- a so-called stationary state in which the total (kinetic + potential) energy of the electron remains constant for some extended period of time (say, at least a nanosecond).

Now it turns out that in this very simple situation, the quantum mechanical wave equation can be solved exactly in terms of elementary functions. It's been a while, but it seems the solution involved Legendre's polynomials, and another set of functions called Hermite's polynomials. Anyway, we had worked through the math to understand how the various electron orbitals in the hydrogen atom can be described, and we had to write these little CITRAN programs to compute the absolute value of the wave function at a bunch of points, then print out a graph to represent the probability density function of each distinct orbital (1S, 2S, 3S, 4S, 2P, 3P, 4P, 3D, 4D, etc) that we'd managed to compute.

Luckily for me, there were some pre-packaged graphics routines in the CITRAN library. The only graphical display device available to the freshmen that year was the IBM 1052 typewriter. The graphs I got were a bunch of x's and o's scattered around on a sheet of paper. The end result looked something like a glorified game of tic-tac-toe. I can still hear the little type ball as it whizzed back and forth over the paper drawing clouds of x's and o's that looked something like this.

Simple Graph of 1S and 2P Orbitals

The graphs were pretty crude, but they looked wonderful to me. The very idea that I could make a machine draw a picture -- any kind of a picture -- by typing in a bunch of formulas and then passing the numbers to a graphics program -- was overpowering and strange to me. Just six months earlier, I had never even seen a computer.