When I was eight, Prince released 1999. This song suggested New Years Eve 1999 was going to be something for the story books. We would usher in a new century, and in the process, we would send off the previous one with a party unparalleled. I was (to quote Paul Simon) “born at the right time” — when 1999 rolled around I’d just be hitting my mid-twenties.
In the eighth grade I decided that I wanted to be an engineer. Initially, I thought chemical engineer, but after I discovered computers it quickly changed to computer engineer. In college I got hooked on programming and networking. It became clear I wasn’t going to be mucking about with circuit level design — Unix, routers, and programming was the life for me.
This proved to be a fateful decision. At work we kicked around the Y2K issue for a couple of years, but it wasn’t until mid-1999 that we started to take it seriously. PERL and C were our primary languages. The biggest problem was with our home grown code. No-one used the localtime function properly (guilty). It returns an array including two digits that represent the year. In the 1900s this representation looked like the last two digits of a four digit year. Who needs documentation — it’s pretty clear what the author was going for, right? In actuality, this value is the number of years since 1900. So we had a bunch of code that would concatenate “19” with the value returned from the localtime call and thus we had a 4-digit year, or so we thought. In 1999 this logic would yield 1999. In 2000 this logic would yield 19100. We had worse things than this, but they are too embarrassing to talk about openly. Let’s just say it involved actually trying to account for the century change and failing miserably. The funny thing is all this bad, convoluted logic was replaced with the simplest of things (once we read the documentation) — just add 1900 to the value returned by localtime and viola.
I had two main contributions to the effort: I wrote a program to search through all of the files on our servers and identify offending PERL code. And I went through the source code for smail our MTA at the time and confirmed it was Y2K compliant. Others were not so lucky. I recall Jonathan doing testing for one of our online banking customers. He borrowed an old RS/6000 from the bank and spent weeks running through scenarios — talk about tedious.
I can’t say when it was, but probably sometime in October 1999 it become clear there wasn’t going to be a party comes New Years Eve. That’s a helluva birthday present. You probably had a grand ole time that New Years, while I and a lot of others in the tech industry spent the night sober, bored, and missing out. How could I know that my fate was sealed all the way back in the eighth grade when I thought, “I want to be an engineer when I grow up.”
Did you know in 2038 we get to repeat this whole exercise all over again? Right now this one scares me, but 2038 is a long way off … so who knows. Hopefully we won’t have too many of these pesky 32-bit machines around by then, or better yet I’ll be retired.
Ever since that night on the turn of the century when I missed the party to end all parties New Years just hasn’t been the same for me. I can count the number of times I’ve stayed up until midnight on two fingers. I’ll be in dreamland come midnight, but have a drink for me anyway. And don’t forget this year is one second longer, so don’t go getting premature on me.
Happy Frickin’ New Year!