Now that I'm done (at least for a while) with the software industry, I'm going to start writing about jobs I've had, one a day. Partly it's for something to do, partly it's writing practice, partly it's because I might otherwise forget some day. Maybe, along the way, it will help other people learn something about what things were like Back In The Day, about startups and career progressions, about pitfalls. The stories about some of my favorite bugs might also be entertaining. Let's start with where it really began, even though that wasn't really a job.
My first exposure to computers was all the way back in New Zealand, with what might well have been one of the first TRS-80 computers there. It was actually owned by a "friend" of my mother who I think might have worked at Radio Shack, but he loaned it to us as a way to endear himself to her. I must have been twelve or thirteen, since the TRS-80 was introduced in 1977 and we left New Zealand in 1979. To be honest, neither of us did all that much with it, just the usual "snow on the screen" sort of BASIC programming, but it was a start.
I had some more sporadic exposure to computers in high school. A couple of my friends had TRS-80s. More interestingly, my brother saw some potential that few did in 1980, and worked pretty hard to acquire an Apple II+. He's the one who really got into it, quickly graduating from BASIC to UCSD p-System and 6502 assembly. I was still mostly an observer. I could kind of understand what he was doing, even at the assembly level, but it was still pretty abstract.
It was only after I got to the University of Michigan in 1981 that computers really started to matter. I had started wanting to be a physics major, or some kind of hard science at any rate. Very quickly, my love of the scientific method morphed into a general inquiry about ways of thinking, and I switched to philosophy. However, I knew that was a useless major, so I sought to combine it with something else and that led me to computer science. Specifically, that would have been the Computer and Communication Science department in the liberal arts college (LSA) at Michigan, as distinct from the Electrical and Computer Engineering department in the engineering college, or the Computer Information and Control Systems department in the graduate school. It was still early days in CS education, you see, and different schools were pursuing different approaches to the whole thing. These later merged into the current EECS department.
Over in ECE there was a pool of real computers that would still be familiar to people now, but in CCS we were still on mainframes. The original machine was an Amdahl 470/V8 (rumored to be serial number one), later it was a genuine IBM 3090. Either way, it was used as a batch system. You submitted a job, waited in the queue for a while, then you went to pick up your paper printout at the output window. When I started, I was part of the very last class forced to use punch cards and TAB 310 keypunches, so submitting a job was a matter of physically feeding the cards into a hopper. The teaching language was Pascal, so I had a collection of BEGIN and END cards at various indentation levels which I would recycle from assignment to assignment. And yes, I saw people cry when they dropped their deck.
The last thing I'll mention is that all of us students were on a massively time-shared system, with strict resource controls (a key feature of Michigan's home-grown MTS operating system). We were charged "dollars" for CPU, for memory, for cards read in and pages printed out, and so on. For each assignment we got a fixed number of these funny-money dollars. If you ran out it wasn't necessarily the end of the world, but you had to almost literally beg for more. Not fun. The main reason this aspect of the system is worth mentioning is that it will play a bigger role in tomorrow's installment, about my inter-college years.