Ten years ago today, there was a fair amount of anxiety in the world about the Year 2000 Problem, commonly referred to as the Y2K Problem. The (potential) problem arose from the common practice among early computer programmers of representing the year portion of a date with just the last two digits; for example, the date 31 December 1999 might have been stored as ’991231′. Although it sounds ridiculous today, in the era of laptop PCs with 4GB of RAM and 1 TB hard disks, storage was expensive and in short supply, back when I started in computing in about 1970. (The IBM 360/91 on which I was working was one of the largest and fastest systems around, and had a whopping 2 megabytes of memory.) Programmers had therefore adopted all kinds of little shortcuts to save space.
The concern was that there were an unknown number of computer applications extant then that might fail or give inappropriate results when the data stopped being a monotonically increasing value. Adding to the uncertainty was the realization that many programs also (incorrectly) defined a leap year as any year divisible by 4. In fact, years divisible by 100 are not leap years, unless they are also divisible by 400. (Hence 1900 was not a leap year, but 2000 was.) Of course, much of this old code was poorly documented and difficult to maintain — some things never change.
(I count myself as fortunate in all this, because I wrote my first set of date calculation routines for a fixed-income investment application, keeping track of holdings of corporate and government bonds. Even in 1971, 30-year US Treasury bonds went past the 2000 watershed, so I had to think about doing the job right. I guess I did: the last time I checked, a few years ago, the date library was still working.)
A great deal of wailing and gnashing of teeth went on over the potential for trouble on account of Y2K. In some places, such as the US and the UK, sizable and expensive projects were carried out to find and fix date-related defects in old software. There were certainly some: for example, both Microsoft Excel and Lotus 1-2-3 spreadsheets had problems (and thought that 1900 was a leap year). There were many cosmetic problems with the display of dates; you might have seen ’02/12/101′, for example. But, when the year 2000 did finally roll around, civilization as we know it survived. Some people suspect that the problem was somewhat oversold, because in some countries very little preventative work was done; yet, there too, few serious problems were encountered.
So, in the end, Y2K turned out to be something of a tempest in a teapot. If it had a real benefit, perhaps it was getting people to take the question of software maintenance more seriously.