Boy!...Do We Have It Good

Posted by halfields on June 11, 2018

I am a contemporary of many of Avi’s coding heroes. I’m 5 years younger than Adele Goldberg of Xerox’s PARC fame, 5 years older than Tim Berners-Lee, the inventor of the HTTP protocol. Roy Fielding, the inventor of the RESTful architectural style is a mere boy at 15 years my junior. I could have been in on the ground floor of something really big if only I had continued to pursue computer programming after my first couple of classes in 1970. Though I had a liking and an affinity for computer programming, two things stood between me and computing fame. Firstly, Goldberg, Fielding, Berners-Lee and the others were smart, really, really smart. And I was not. Secondly, the process of coding was hellishly hard.

Fair warning. The following is a bit of a grumpy old man’s story, but bear with me. You know the kind of story: “when I was a boy, I walked 3 miles to school. The snow was waist deep, and it was uphill both going and coming.” This story is like that, but I think you will find it interesting. The content of most programming courses was interesting and fun. The process of getting my program to work was shear hell, academia’s version of waterboarding. There were no laptops, no internet, no Stack Overflow, no way to google about my errors and get an instant answer. I didn’t write my program on a PC. It had to be typed on punchcards, one card per line of code. On my campus, with maybe a couple hundred students in computer classes, there were about 20 keypunch machines available in the coding lab. The coding lab was open 24 hours a day, but the keypunch machines were in constant use until about 11 pm when the room would start to thin out. So, I wait til midnight or 1 am and begin my coding. The slightest mistake spoils the card. There is no backing up and redoing the misplaced parenthesis. Holes get punched in the card, and if it is punched wrong, I have to reject the card and start typing a new one. All the cards together form a deck, and this deck is what gets run as my program. There is no cutting and pasting. If I come across a 10 line snippet of code that works in my program, I must punch 10 cards for my deck. And I must search for the correct spot in my deck where the cards need to be inserted. The order is critical for the program to work. If a card is misplaced, the program will not run. If a card is backwards, the program will not run. If a card is upside-down, the program will not run. Once I have my deck arranged the way I want, I wrap it in 3-4 rubberbands. The last thing I want is to drop my 150 card deck and resort it. Then I take my deck and turn it in to the sysops people. They run student programs in batches, and the turnaround time for programs is one day. And then the cruelest joke of all. The FORTRAN compiler kicks my program out with a printout when it hits the first syntax error. It won’t even compile to the end of the program, and give me all my syntax errors at once! So, I correct my unmatched parenthesis, or missing comma, or missing end statement, or whatever. I look my program over very, very carefully. The system has had my program for 24 hours, and all I know is that I have one tiny syntax error. If I correct my code and resubmit one error at a time, it could be months before I end up with a compiled program. And then it’s on to my logic errors. So, I fight this correct-resubmit-wait cycle for 5-6 days (if I’m lucky, and 2 weeks if I’m careless). After the first couple of programs, I learn not to be careless. This was the drip-drip-drip of slow water torture that preparing and submitting a program as a student was in the early ’70s. Adele could hack it. Hal could not. Boy! Do we have it good now!