At some time in the near future, I hope to retire from my career in computer operations and programming. I don’t know if there will be a retirement party, but if so, it wouldn’t hurt to have written down a little history. The second part of “How I got into computers” barely talks about this.
For a year at least, I still lived with my parents and went to junior college. I’d also gotten a part-time job with Truline Corporation, manufacturer of printed wiring boards. I was supposed to become an electronics engineer like my Uncle Dick, my mom’s oldest brother.
I was on the engineering track but made the mistake of taking on 18.5 units of courses. I’d been a super student in elementary, middle, and high school, so of course I could take on a heavy load of college work. Three problems took me down:
- All work and no play made me a weary boy.
- My favorite grandmother died.
- I was always a nerd and uncomfortable around girls.
But there was one thing I loved about my junior college days: computer programming. We had an HP 3000 mini-mainframe, and I knew where there were a couple of terminals hidden in one of the unused classrooms. I almost never had to wait to use the computer.
I took two FORTRAN classes and a COBOL class. My COBOL instructor, Ruth Harner, had met Rear Admiral Grace Hopper in person at a conference.
I really liked COBOL. I very much liked the idea that if I name my variables and subroutines carefully, then what the computer is actually doing is spelled out in plain English.
My two FORTRAN courses were superb too. The first one was directly useful in my engineering courses because we were learning about eigenvectors and reducing arrays of algebra statements to solvable problems. I remember reading a book about how to lay out physical spaces by creating rules of priority; in a hospital, having the bandage and dressing storage closer to the emergency room is more important than having the restroom nearby. By assigning numbers to relations and multiplying each item in relation to all the others, and then by sorting the results, one could (in theory) get the optimal layout. Better yet, adding detail improved optimality. But the downside (in the book) was that computers were still too primitive to do large calculations. The problems scaled at log(n) but the mainframes of the day simply didn’t have much memory. I could see that the microcomputer tsunami was soon going to grow the amount of RAM available to make this an easily solvable problem.
My other FORTRAN class was even better, even though the instructor didn’t know anything about programming. He was a mathematician, but the college needed a FORTRAN instructor, so he was voluntold. I don’t recall his name, unfortunately.1
His choice of course material could not have been better. He taught us Nassi-Shneiderman flowcharting. Nassi-Shneiderman flowcharting makes breaking problems into “Actions”2, “Loops”3, and “Branches”.
Ruth Harner spelled out that programming is a process of top-down, step-wise refinement. Just like the Scientific Method can absolutely nail any problem in Science, top-down, step-wise refinement can solve any computer programming problem.
The beautiful idea our professor walked us through was to write our FORTRAN with gobs of tab characters, pushing the text to the right where appropriate. When we printed the source code out on green-bar paper, we could then take a yardstick and pencil and literally draw the Nassi-Shneiderman flowchart around the source code. The code execution operated within the flowchart and the flowchart showed the visual flow of the code.
Combine the flowcharting and the top-down, step-wise refinement, and man computer programming is fun!
Of course, at that time the mini-mainframe still has only a text based interface and no software to help. I wouldn’t see Dave Winer‘s ThinkTank program for another five years.
A mildly amusing event was at the end of the semester: the line of kids to type in their programs was twelve kids deep on every terminal, with only two days left in the semester. My best friend, Paul S. (also my boss at Truline) was one of those students. Paul saw me in the computer room, and said he didn’t know what to do! He also needed to work at Truline, and wouldn’t be able to come back in the evening when the terminals weren’t so busy. I looked at the lines and saw that the keypunches were empty. No kid wanted to put their program on punched paper cards…. I was comfortable with them, so… I told Paul, “Hey let’s use these.” He was hesitant because he’d never used one before, but I showed him it wasn’t so bad. I told him about putting the rubber band around the deck and filling out the paper for his job to be run. It worked like a charm. Within a minute of putting his deck in the input basket, the operator grabbed it, dropped it into the card reader and put the printout on completed jobs basket. heh.
One other thing (that sucked) was that some kids stole my high school graduation gift. My dad had gotten me a Casio programmable calculator as my high school graduation gift. We didn’t really have any money (my dad had lost his job), but this was the best he could afford. I don’t recall whether it was the FX-702P or the FX-700 but it really was fully programmable. Those kids who stole my graduation gift were minorities. I’d gone to the student union before my Physics Final. There weren’t any other kids in the student union. I’d put the Casio in my backpack and decided to get an orange juice before taking the big test. I left the backpack on the table because I had never previously had a need to consider that thieves existed.4 When I got my orange juice and went back to the table, it was a little weird that my backpack was unzipped, but I didn’t really notice that because I had the biggest test of my life coming up – that Physics Final. I get to class, get the test, get to the point where I need my calculator… and it is gone. I’m utterly demoralized. I hadn’t really liked Physics and Engineering, but this was going to hurt. Yeah, I flunked that Physics Final, too.
After I burned out on my massive load of schoolwork, I moved out of my parents house, and into a shared apartment. After failing most of my engineering related classes (although I did great with the programming ones), I told Truline I’d go to work full-time in the evenings. Maybe I’d still do some college, but of course, I did not.
There’s a whole story about my not going to college and my dad losing his job. Perhaps I’ll tell it another time.
I still visited my parents, and talked computers with my dad. He had heard about a computer, the Osborne 1, which was a real computer, and it came bundled with $1,500 of software – and for a limited time only: dBASE II (which was worth another $1,800).
My dad helped me buy my very first personal computer. It was $1,795 total. I think he was able to help out with $500.
It was fun, because there was a magazine where I could type in program code listings and then run games (on a ridiculously tiny screen). I learned CP/M and PIP (Peripheral Interchange Program). I played with WordStar, SuperCalc, CBASIC and MBASIC and dBASE II. I didn’t get the modem, although a co-worker of mine had, and he dialed in to the junior college and wrote his code from home. Fancy!
At Truline, I’m seen as a kid with potential, and I start to get moved around. Eventually, I get to do every production job and became the “engineer”. Really, it was my job to take the artwork and blueprints from the customers and turn them into Work Orders. That’s where having done every production job at least once was helpful. But I’m jumping ahead a little bit.
I’d started out as a driller. We’d take the artwork, tape it to a flatbed, and then guide a table riding on dual rails (an XY table) over the artwork. The table held four small electric drills, one on each corner. Where there was a pad on the artwork, I’d align the scope (an angled mirror) and tap the foot pedal. The foot pedal would engage pneumatic locks on the rails, and drop the spinning drills into the PCB material. We’d stack the copper-clad PCB fiberglass four stacks high. With one foot tap, I would drill sixteen circuit boards.
Later, I ran the “programmer” which still used a flatbed and taped artwork, but had finger spinners. As I spun them, the XY table moved, this time floating on air bearings and driven by dual leadscrews. Instead of physically drilling the holes, it put the X Y coordinates on a paper tape. This was G-Code, although I didn’t really do any language work (yet). Once in a great while, I tapped the foot pedal an extra time, and then had to go back and manually slice the errant code out of the paper tape (and then glue the tape back into a continuous strip). Man I don’t know why so much of my early (electronic) computer programming recorded the data on punched paper. The paper tapes were stored in clear plastic boxes that looked like movie canisters. When it came time to drill the panels, I (or someone else) would load the paper tape into an Excellon Automation drill and drill the panels complete with automated bit changes and robotic speed.
Later I was on the router / profiler machine, and with it I actually did write G-Code to move the router bit around to carve the circuit board out of the panel. It was very much like programming an ink pen-plotter – we had one in the engineering department at the junior college, which I’d gotten to put a plot on, using FORTRAN.
So I ended up as the “Engineer” at Truline and started composing Work Orders. All the W.O.s were a photocopied piece of paper, and I crossed out the parts that we didn’t need. I wrote in numbers or text where the build needed things specified. The first line, I think, was (for example) “2 x 8” for a panel two circuit boards wide and eight tall. Later, when IBM had standardized the physical dimensions for ISA add-in cards, we did a lot of “2 x 8” panels.
After a while, I got the idea to write a W.O. generator in dBASE II. I brought in my Osborne and my trusty Okidata dot-matrix printer and showed my creation to the president of the company.
He offered me a job as their in-house programmer – if I would learn to program their mini-mainframe.
I’m gonna be a professional programmer!!! Life is going to be fun!
Next I’ll write about night school and becoming a full-time RPG II programmer on an IBM System/36.
- He did harm us students, though. Almost every student (of 31) dropped his class in the first two weeks. Only five of us stuck it out. Because he was a mathematician, he graded on a curve. One student would get one grade, each: A .. F. Yes, the kid who stuck it out and was doing (arguably) B grade work was assigned an F because with five students and five grades, that was the natural map. I got a B, but I do think it was unfair that Brian was given an F for trying. ↩︎
- Output, Input, copying, and calculations. ↩︎
- Technically, every loop is a branching statement with actions; but, the loop flowchart block simplifies the complex to be easy to see and understand. It maps really well when the programming language we’re trying to get to includes operators like “foreach $item ( @list ) { … }” ↩︎
- Is a lack of awareness about thieves White Privilege? If you think the answer is yes, I’d have you look in the mirror to identify the real problem. The only people who excuse thieves are those who are thieves. ↩︎