The More Things Change

Posted by Rick DeNatale Wed, 26 Aug 2009 15:01:00 GMT

My buddy Adam Williams @aiwilliams tweeted this link., which is, at it's roots, about the dangers of doing more than should be done.

Feature creep is one temptation which leads to overdoing, and thus doing the wrong thing. Another is obsessively trying to remove all defects. As they say "Perfect is the enemy of good."

Which reminds me of an old chestnut from my earler days. I've provided some footnotes for younger readers

The Perfect Program

  no program's that perfect"
  they said with a shrug.
  "the client is happy--
  what's one little bug?"

  but he was determined
  the others went home
  he dug out the flow chart (1)
  deserted. alone.

  night passed into morning
  the room was quite littered
  with core dumps (2) and punch cards (3).
  "i'm closer." he tittered.

  chain smoking, cold coffee.
  logic, deduction.
  "i've got it!" he cried.
  just change one instruction.

  then change two, then three more
  as year followed year.
  and strangers would comment
  "is that guy still here?"

  he died at the console (4)
  of hunger and thirst
  next day he was buried
  face down, nine edge first. (5)

Footnotes

  1. A flow chart was a primitive form of program representation, comprising variously shaped boxes connected by lines and indicating the control-flow of a program. This was in the days when programmers wanted to be like engineers, and we all know that engineers draw stuff on big draft boards before they build anything. This idea lives on in ideas like UML. It's still a bad idea.
  2. Back in the days before laptops, behavior driven design and continuous testing, programmers would submit their programs to the big computer locked up in a room and attended by priests called operators. The priests would offer the program up to the computer, and return with a reply. If something went wrong, you got back a large stack of paper which showed a picture of what was inside the computer when things went south. Back then the inside of the computer had memory comprised of little magnetic donuts called cores woven into a matrix with wires, so memory was called "core" A core dump was that picture of what was in the computer. This was as close as we had to a debugger back then.
  3. Punch cards were strangely shaped index cards, the shape was something like a widescreen TV compared to a normal index card, three of the corners were rounded and the upper left corner was beveled.

    Each card held 80 whole twelve bit words, or the equivalent of 120 bytes. Each bit was a hole bit since it was represented by the presence or absence of a hole in a particular row or column. Each column was a word. In most cases using all of the bits on a card was rare. Usually each column encoded a character, in some archaic encoding scheme like EBCDIC.

    Programs were kept as large stacks of these cards, and these stacks would be fed to the big computer through a machine called a card reader. The holes would be punched into the cards using a kind of typewriter (a primitive kind of laptop/desktop comprising a keyboard and a printer) called a keypunch, which instead of printing what you typed on paper, punched it into cards.

    Usually the computer would output to a printer, but some older printers output back to cards through another machine named, strangely enough a card punch. In these cases there was a separate machine detached from the computer which could read decks of cards and print their contents to a printer.

    If you were really lucky, the computer would combine the card reader and punch with one input hopper. You would put your program deck into the hopper, followed by (carefully counted) blank cards for the output. One fun experience was to put your program into the hopper when a program was running with insufficient blank cards before you, in which case the machine would happily overpunch part or all of your program with the first guy's output.

    For those who fell for static typing, there were specially printed cards for different programming languages, here's a FORTRAN card there were also COBOL cards, although the computer and card readers used duck typing, they really didn't care what was printed on the card, only the holes, the whole holes and nothing but the holes.

  4. The console was the machine through which the priests, and sometimes programmers, directly interacted with the big computer. It was a rare privilege for a mere programmer to have access to the console, it usually happened late at night on third shift when the priests wanted to sleep. What no, terminals/workstations/laptops you say! ha!
  5. A reference back to punch cards. Each row of bits on the card had a number. For some good reason, the top two rows had the numbers 12 and 11 and were called zone rows. The non-zone The remaining rows were numbered 0 through 9 with 9 at the bottom. A card deck could be put into a reader, punch, or reader/punch in four orientations. The deck could be inserted face (printed) side down, or face side up, and with the 12 or the 9 edge entering the machine first, hence "face down, nine-edge first." It was important to get this right, even more so when submitting a job than burying a dead programmer.

Gawd how I miss the old days!

NOT


Trackbacks

Use the following link to trackback from your own site:
http://talklikeaduck.denhaven2.com/trackbacks?article_id=571

Comments

  1. Joe Grossberg about 22 hours later:

    Wow, that is old-school.

    I’m only in my mid-30’s and my younger colleagues find it pretty amazing that I didn’t have an email address until college and an IM name until after.

    And even then, my modem was so slow that I would have to type a sentence of email, then wait for the characters to appear on my screen and make sure there were no typos, before continuing.

    I remember browsing the web without a GUI – I still use lynx every now and then.

    And RPGs weren’t M, M or O. Heck, the “graphics” were text in a console. And “@” signified your nethack character, not email or Twitter.

    IE6 sucks? Sheeeeeit. Try developing for NN 4.7 and Mac IE 5.

    Kids these days don’t know how good they have it! :)