It's early in the morning of the first Monday of 2011. I just checked Drudge Report for the first time today. So far, there doesn't appear to be any idiocy (any new idiocy, anyway) coming out of Congress or Washington.
Oh, sure, the new, incoming Congress is trying to find a way to crucify the President and any surviving members of the 111th United States Congress for their twin crimes of keeping the economy from imploding and trying to care for our citizenry, but that's not really new news, at least for the first Monday morning of the year.
That means we're all clear (at least for the moment) to look back on our holiday week off and think about family, food, tech support, and COBOL.
[At this point, if this were a movie, you'd hear sounds of tires screeching, see quick shots a head snapping around to stare, and then horrified expressions among just-happened-to-be-there onlookers.]
COBOL? CO-BOL?!? CO-What?
For those of you younger than the Baby Boomer generation, COBOL stands for COmmon Business Oriented Language and was hugely popular in the 60s and 70s as a data processing language. Today, we'd use Oracle or MySQL along with languages like Ruby, Python, or PHP to accomplish much of the same thing.
I was a teenage COBOL programmer.
One episode from my misspent youth will illustrate COBOL and how generally anachronistic it is to today's development technologies.
It was 1979 and I was looking for a summer job after freshman year. I found a listing for a summer COBOL programmer gig at International Paper. Now, as it turns out, I didn't know and hadn't ever seen COBOL, but to me a programming language was a programming language, so given a night with a book, I could learn it enough to pass an interview.
And that's just what I did. I found out there was going to be a COBOL test at my interview, so I crammed. I didn't know COBOL, but as a freshman, I certainly knew how to cram. I got the highest score the Northeast Regional Data Center had ever seen and got my summer job.
So there I was. In college, I'd been programming DEC PDP-10s, using teletypes, DECwriters, and ADM-3A glass teletypes, so I had some idea of so-called "interactive" programming.
But at International Paper, COBOL was programmed on punch cards (I'd also used punch cards to program Fortran in college). If you've never used punch cards, they were horrid beasts. You'd type one line of code per card, so large programs lived on entire cartons filled with cards.
You'd hand your stack of cards (remember, we're talking physical cards) to a computer operator, who'd lug the stack (about 5 to 15 pounds of paper), dump the deck into a card reader, the job would run, and you'd get a paper printout with your output.
An entire evolution of this could take anywhere from 15 minutes to overnight, depending on the workload in the data center.
Interactive, it was not.
If you made one error in your code, you'd have to start all over. And, if for some reason you dropped your deck of cards, you'd spend your entire day trying to put them back in order, one physical card at a time.
Such was IT in the late 1970s.
So, at International Paper, they programmed COBOL professionally using punch cards. Because this was a mainstream, professional data processing operation (they called it DP back in the day, before DP became more common as a porn star term), the programmers didn't even punch their own cards.
Oh, no. Instead, programmers spent their days filling out what were called "coding forms". These were spreadsheet-like paper documents, where you'd hand write (as in, with a pencil) your code.
You'd then send the coding forms to the basement, where teams of old ladies (I was 17, they all seemed like cranky old ladies at the time), would then transfer your hand-written programming statements to punch cards, and then a mailroom clerk would deliver the boxes of cards to the computer room (raised floors and all), the "job" would run, and you'd get your stack of printout with the results back -- usually two or three days later.
To say that programming was inefficient was an understatement.
But that was the late 1970s. Today, we have IDEs (Interactive Development Environments) and whether you're using Visual Studio or some other development environment, the code-test-revise cycle takes seconds rather than days. Of course, our stuff is also vastly more complex, but that's a story for another article.
Two more thoughts before we get back to families and tech support, which is where our story began. First, during my summer of code at International Paper, I shared an office with another programmer, an "old" guy in his 40s. He got stuck with the 17-year-old, so it's anyone's guess how well loved he was there. But he imparted to me what he considered to be the most important wisdom of the day.
He told me, with deadly seriousness, "COBOL is life."
Second, that summer was also, thankfully, the last time I coded COBOL and used punch cards.
Let's get back to the family side of our story.
To most civilians (and by "civilians", I mean people who are not like us techies), Thanksgiving is their single best chance to get tech support. We techies are a captive audience and each and every Thanksgiving, we're presented with problem computers and phones like olden-day shaman were presented with sick babies to heal.
Christmas, to civilians, isn't a holiday celebration. Christmas is their last-chance day for real tech support, at least until mid-May, when they generally know we'll be visiting Mom and can be accosted to do one more malware removal pass or Windows reinstall before they have that long wait over the summer and early fall until the following Thanksgiving.
So Christmas is big in family tech support land.
To many of us techies, however, the big event is the week between Christmas and New Year's Eve, because that's the week everything's generally really slow, so that's the week we spend installing servers, upgrading our data centers, and generally doing all the stuff we never get time for because there are users out there pulling on our shirt-tails and saying, beseechingly, "Please, sir, may I have some more?"
Into that whole family holiday bouillabaisse this year came...my in-laws.
This year, my in-laws came down to Florida from New Jersey to spend the Christmas holiday with my wife and me. And this is where our story of family and tech support merges with COBOL.
Shortly after my in-laws arrived, I went upstairs to my home office to hide. I'm not exactly a family-oriented dude and I actually had work deliverables to complete while the old, retired people came down to cavort in our toxic Floridian sun.
I keep forgetting that my father-in-law (hereinafter referenced as FiL) used to be a COBOL programmer for a big company because his grasp of contemporary technical subjects is disturbingly small. To be fair, he got his technical chops back in the punch card days, and so technologies like home networking must seem more like science fiction than even rocket science.
So, I'm upstairs in my office, writing (and hiding) and hear my wife calling my name from the bottom of the steps. She wants to know if I can help FiL open a .DTL file. This does not sound good. But I go downstairs.
The man still keeps notes on punch cards. Apparently, he's been hoarding punch cards since the 70s and 80s. Now, to be fair, back then, punch cards were awesome for note-taking, but still, we're talking decades.
Anyway, apparently FiL wrote some DOS-based COBOL program decades ago, which he still uses to keep his checkbook register. He brought the thing with him on a thumb drive, a technology, it seems, he knows about.
He managed to talk my wife into letting him edit this thing on her laptop, which he does through DOS and EDIT. Why he doesn't use Quicken is an open question.
To be fair, COBOL still exists. There's even an object-oriented update that came into being around 2002 or so. But still -- DOS, EDIT, COBOL, and punch cards? Yes, in my house. On the same computer my wife uses to load and manage our 20 terabyte media server. COBOL. Seriously. Last week.
What were your holiday tech support experiences like? TalkBack below. Have a great 2011! Remember, just one more year until 2012.
P.S. When I told TechBroiler's Jason Perlow about my FiL, his punch cards, and COBOL, Jason responded in his usually twisted little way with the following message:
000010 IDENTIFICATION DIVISION.
000020 PROGRAM-ID. ANNOY MY WIFE AND MY SON-IN-LAW DURING THE HOLIDAYS.
000030 AUTHOR. FATHER-IN-LAW OF GEWIRTZ, DAVID.
000040 DATE-WRITTEN. DECEMBER 2010.
000050 ENVIRONMENT DIVISION.
000060 INPUT-OUTPUT SECTION.
000080 SELECT DAVID-FILE ASSIGN TO DAVID.
000090 ORGANIZATION IS LINE SEQUENTIAL.
000100 SELECT WIFE-OUT ASSIGN TO WIFE.
000110 ORGANIZATION IS LINE SEQUENTIAL.
000130 DATA DIVISION.
000140 FILE SECTION.
000150 FD DAVID-IN.
000160 RECORD CONTAINS 4096 CHARACTERS.
000170 DATA RECORD IS DAVID-IN.
000180 01 DAVID-IN PIC X(4096).
000200 FD WIFE-OUT 000210 RECORD CONTAINS 80 CHARACTERS.
000220 DATA RECORD IS WIFE-OUT.
000230 01 WIFE-OUT PIC X(80).
000250 WORKING-STORAGE SECTION.
000260 01 DATA-REMAINS-SWITCH PIC X(2) VALUE SPACES.
000261 01 RECORDS-WRITTEN PIC 99.
000320 PROCEDURE DIVISION.
000340 OPEN INPUT DAVID-FILE.
000350 OUTPUT WIFE-FILE.
000351 MOVE ZERO TO RECORDS-WRITTEN.
000360 READ DAVID-FILE.
000370 AT END MOVE 'NO' TO DATA-REMAINS-SWITCH.
000420 CLOSE DAVID-FILE.
000440 STOP RUN.
Gee, uh, thanks, Jason. Yeah, um, thanks!