Ahh, Y2K; I was lucky enough to handle Y2K compliance for embedded SW running on a telecommunications product deployed worldwide in 1999. Besides the 010100 hysteria, I recall two other rollover bugbears:
9/9/99 - A lot of folks thought that this date would crash older systems where 9999 was used as a data input to terminate a program. This was ridiculous–I took all of 5 minutes to check our code for this, and I can’t believe this bug affected anyone–but as I recall it was taken seriously.
GPS epoch - In the GPS system, each satellite sends time coded as an offset from January 6th, 1980. This code includes a 10-bit “week number” indicating the number of weeks since this start date. So on a certain date in August of 1999, the GPS system rolled over the week number from 1,023 to 0–in technical terms we entered a new GPS epoch.
This particular bug also ended up having no effect on our code (the product didn’t use GPS time), but I gained an appreciation for the “windowing” mentioned above. Ideally GPS_based SW should store the last-known date before powering off, then when it pow-rs on and reads GPS it can interpret the week number correctly (e.g. we are currently in week 541, current date 1/5/2010 is saved, SW is powered off for five years, turned on and GPS week number is read as 800; SW should be smart enough to place this in 2014, not 1995. Course this doesn’t work if the SW is off for 1,024 weeks, but…). In practice there are still problems with this approach; mis-read GPS time once, save it, and the device could “jump” to another epoch and be stuck 19.5 years in the past/future. Trust me, I’ve seen it, and customers get quite irate when, say, airtime minutes expire because the device they were using thinks its 19 years in the future, or they can’t get new units because it’s stuck in the past and thinks the units shouldn’t be activated for another two decades.
But altogether, I really didn’t have much to worry about with Y2K; I spent maybe a day reviewing code with engineers, another day or two testing in the lab, and perhaps fifteen minutes on the phone with a colleague in Australia on New Year’s Eve 1999, since that was the earliest site where our product would see the year 2000. It worked flawlessly, and I pocketed an extra $1,400 for working that date. Of course that was when the tech business was hemorrhaging money…