Saturday, October 26, 2019

Has It Really Been More Than A Year Since I Inflicted Memoirs on You?

I guess so.  So I went off to USC after my first summer job, writing inventory software in assembly language for a Mafia-owned car parts maker.  That one year at USC was actually wonderful, and I wish that I had been well-enough off to fit into the social milleu.  But I knew I was from a poor family, and it felt like I had a tattoo of dishonor on my forehead.  I was surviving on a $1000 student loan (back when $1000 was a lot of money), a Social Security check that I received because my father had become disabled (dependents received a small payment at the time), and the savings from my summer of working for the world's smallest and flakiest company.

As the fall semester closed (4 As and a B; how I ever earned a B in Calculus remains a mystery), a job opened up at the Santa Monica Unified School District where friends worked.  They needed someone to specify and develop a system for accounting how Maintenance Department workers hours should be allocated by school.  This was a full-time job while going to school full-time.  (Yes, that worked about as well as you might expect: second semester Calculus was a D, and even Chemistry was a B.)  But I was making good progress on writing specs when I decided that as nice as $800 a month was, I was doing a bad job at school.  So, two months in, I quit.  If only there were part-time burger-flipping jobs back then.

I had forgotten that I needed to inform Social Security that I was working.  About July, they noticed and stopped my check.  Of course, I was no longer working by then, but the machinery that ground so slowly at turning off the checks was no faster the other direction.  By the end of August, I had $30 in the bank, and my 1964 Chevy Malibu station wagon, decrepit but reliable.  (It never stranded me, which in the USC neighborhood might have been fatal, for a white kid.)

So I looked for full-time employment.  Projectionist an adult movie theater?  No experience with projectors.  A company called Telos Computing needed a software engineer.  My five months of experience made me completely unqualified for the job, and I was a not terribly mature 18-year-old, but I was able to talk, and talked myself into a $1200/month job.  I mailed my resume Monday; a week later I was working.  Where?  Telos had a contract with Jet Propulsion Labs, supplying workers for the Mariner 12 & 13 (later renamed Voyager) Telemetry Software System (TSS).

I worked for a very sweet lady named Judy Cohen who was a Lab employee.  My administrative boss was a very nice Telosian named Phil Schaefer.

Let me explain the work environment.  JPL had a lot of reasonably nice permanent buildings and a lot of trailers outfitted as really crummy offices.  I was assigned to a trailer up the hill from the building where most of our people worked.  I shared the west half of this trailer with a young man named Evan [something obviously Jewish].  Evan was a graduate of Fairfax High (a school for many years about 99% Jewish in popular and self-perception).  He kept me amused with stories of Fairfax High, and his time at UCLA getting a computer science degree.  He told me that when he started in 1963, freshmen would stand on the steps to the Student Union singing "The Hills of Westwood."  When he graduated in 1968, students were marching down those steps shouting, "On strike!  Shut it down!"

Anyway, Evan had serious self-esteem issues and only lasted a couple weeks before termination.  His mother naturally called our boss, Judy Cohen, to accuse her of firing him because she was an anti-Semite (much to Evan's chagrin).  "My name is Judy Cohen."  Short conversation after that.

I was moved to a trailer that I shared with Pete Winter, a nice German guy.  What was I doing when I arrived?  They gave me a task that was inflicted on all new hires without an assigned task: adding comments to code disassembled from the binaries.  A disassembler is a program that converts binary executable code to the equivalent assembler language mnemonics and addresses.  Yes, they had lost the source code.  So those addresses were just octal addresses (yes, octal, wait for it).  Previous victims had put in really useful comments like add 1 to register 6.  (I tried to do a better job of analyzing the general scheme and produce more useful comments.)  Fortunately, this mindnumbing task only lasted a few days until they found something for me to do.

The TTS consisted of four Modcomp minicomputers, a Univac 1616 and Univac 1530, linked together by who knows what?  These were originally military spec computers.  One was designated AN-UYK-20, the other AN-UYK-7.  I no long remember which was which.  They were antiques when the military adopted them, and I was told JPL had paid $250,000 to get Univac to build new antiques.  Why do that?  Remember that code that lacked source?  It ran on one of these beasts, and there were no surviving specs explaining what the data flow was.

The 1530 had 30-bit words grouped as 10 octal bytes.  The 1219 was 18-bit words of 6 octal bytes.   Wait, the weird gets weirder.  The 1219 had no subroutine call instruction.  It had a B7IJ command.  You said B7IJ subr, and it stuffed the caller's address at subr and started executing at subr+1.  At the bottom of the subroutine it did a indirect jump through that caller's address at subr.  Imagine trying to write recursive code.  Stack?  What's that?

Programs were all given names imaginative named with five letters;  the first identified on which processor it ran and the three its function.  I was assigned NPEGS.  Data from the spacecraft arrived in frames of (I think) 512 bits (480 of which were data).  The rest was header information identifying source and time.  This 480 bits was mostly a general science data block.  There were also 24 bits of Engineering data contained therein.  NPEGS was supposed to take these 24 bit chunks from each General Science frame, as it was called, and accumulate these until I had a 480 bit frame of Engineering data and then pass that frame to the Modcomps.

This programming was all done on punch cards.  Yes, these things:

There was a keypunch service if you filled in coding forms, but it took a few days, and they were seldom flawlessly punched.  Also, keypunch was almost at the east end of the Lab, and I worked at nearly the west end.  It was a long walk.  I usually did my own keypunching.

One trick you learned early was to draw a diagonal line across the top of the deck.  If you dropped a program (as I once did when NPEGS had grown to 2500 cards), that line greatly speeded up getting them back in sequence.  You carried your absurd box of cards to Space Flight Operations Facility (SFOF) to assemble them to binary.  I think the binary was punched to paper tape.  

Then you loaded it into the antique to debug.  I remember nothing of this phase of my work.  After the dropping of the card deck (on outdoors, often windy stairs), I switched over to managing my source on mag tape drives.  

A series of commands that RCS users would recognize, let you insert, delete, or replace cards in your tape, which could then be read for assembly.  So instead of carrying 2500 cards and watching the cards get swallowed in, you just carried a few dozen cards at most to change your source tape.

It was a miserable year.  I had no friends in La Crescenta, where I moved after too many months carpooling from Santa Monica (although I did eventually make a few friends among my single workmates, some of whom remained friends for 20 years).  Young ladies?  Sorry, but I was so nerdy that I could bring myself to ask out a young lady who worked in an adjacent trailer.  (Nerdettes were still quite rare, and were rapidly allocated by nerds with more charm, and better looks.)  Most Friday nights, I bought a Straw Hat pizza, drove up Angeles Crest Highway to an overlook of Los Angeles and cried.

The job lasted about 11 months, by which time it was apparent that whatever technical knowledge I had, I was not getting NPEGS or its close relative NPGSI (General Science extracted from Imaging) to completion, and I was laid off.

Working there, in spite of the loneliness, was one of the best jobs that I ever had.  I worked on something of importance to mankind.  I got to stand in the gallery of the Mission Control room to watch several missions in progress, hang with the cool kids on the Viking Imaging team, ask impertinent questions like what star will our mission intercept after it leaves Sol for good, learn about Golay Encoding which still seems like magic (but then again so does Discrete Wavelet Transform coding), use the Lab library to prove to a friend that there were no pyramids on the Moon (there is a rebound peak that can be cropped to look like one), misuse the phone system to call my parents toll-free in Barstow by dialing Goldstone Tracking Station extension, then 9 for an outside line; loads of fun.


  1. Often the smallest, simplest solution seems genius. The diagonal line is brilliant, I wish I had thought of that. I found the cards fit neatly into the box used for bank checks. For security I used three rubber bands.

    When you mentioned the long walk between buildings that is what I thought of. That walk was like daring death to strike. It did once when I saw a grown man cry when a malicious wind ripped the cards from his grasp.


  2. Been there too. I worked mostly with FORTRAN, which meant if your cards were out of order or there was ANY error (like an upside down period), it likely wouldn't even try to run, making debugging difficult. I learned very early on to simply number the cards with a pencil. We had some keypunch machines that simultaneously typed the punched characters at the top of the card, which was a Godsend, but some machines didn't. We didn't have the tape thingy.