Over the past couple of decennia, technology has developed quickly. Computers, smartphones, and other digital gadgets are an integral part of our daily lives. Whenever I want to know the current exchange rate of the Euro, how to bake banana bread or Taylor Swift’s current boyfriend, I resort to my technology. My computer seems to know everything! Still, it sometimes falters when it comes to something as simple as displaying the date and time. What causes that? And what can we do to prevent it?
The best-known example of such a mishap is probably the Y2K problem. Before the turn of the millennium, all digital date displays had only dealt with dates in the 20th century, which all started with “19”. Since storage was expensive – you will read more about this later – programmers prioritised minimal storage usage greatly. Therefore, many programs only used the final two digits to represent four-digit years instead of all four to save storage costs. This would display the year 2000 the same as the year 1900 would have been. Though most people would know they were living in the year 2000 and not 1900, they feared that computer systems could not distinguish between these two. This could have disastrous consequences for worldwide infrastructures that relied heavily on computers; it was predicted that the bug would cost global damage that would cost 400 million dollars to 600 billion dollars to clear up. As a result, people panicked and began hoarding emergency supplies, such as food, water, and backup generators, and they withdrew all their money from their banks in fear of an apocalypse.
However, as we all know today, there was no apocalypse. Only a few, minor errors occurred and the 2YK bug blew over smoothly. Of course, this might partly have been because of the many precautions computer programmers and IT experts had taken. What exactly did they do and why is there still such an alarming headline above this article?
Saving Storage Space
Way back in the 1960s, when business data processing was still in its infancy, unit record equipment and punched cards were used. IBM’s 80-column punched cards were the most commonly used to store data. Therefore, programmers always tried to fit their code into 80 characters, using nifty tricks such as discarding the first two digits of a date. Computer memory and storage were limited and costly; some computers carried only two kilobytes of memory and were priced at 1 dollar per bit. Later, the punched cards were swapped out for magnetic tape and, over time, disc files, but the structure of the data largely remained the same: resembling card processing techniques.
My first punched cardMarcin WicharyCC BY 2.0
Recognising Potential Problems
Since technology was rather new, but developing quickly, no one expected that the programs written at that time would be used for more than a few years, let alone until after the turn of the millennium! Therefore, they were (a) poorly documented (this is why our teachers hammer on using comments in your code!), and (b) no one took into account that the programs would be used when interacting with databases, which was even newer and had very different attributes. As early as 1958, Bob Bemer, an IBM computer scientist, was the first person to publicly raise his concerns. He would spend the next two decades trying to convince others of the seriousness of this problem – he even tried to spread awareness about the potential problem of using two-digit dates, however, his efforts were to no avail.
It was in the 1980s that bonds with maturity dates later than 2000 were issued, so, because now there was a clear monetary incentive to take action, the New York Stock Exchange started fixing their software; they hired 100 programmers and spent 20 million dollars to prevent the Y2K bug from affecting them. A decennium later, in the mid-nineties, Y2K was widely recognised as a problem, and in the last couple of years before the seemingly pending apocalypse, it would be resolved.
Is Y2K38 The New Y2K?
Some chose to adapt their software to use three-digit years and dates, whereas others opted to use the number of days or seconds since a fixed date. This latter resolution is called Unix time, which stores the number of seconds elapsed since the Unix epoch (00:00:00 UTC on January 1st 1970) in a signed 32-bit integer. This would definitely be useful to prevent Y2K, however, Unix time has its own limitations.
All data storage is limited and, since Unix time is stored as a binomial number consisting of 32 0’s or 1’s, it can only represent integers between $-(2^{31})$ and $2^{31} – 1$. This implies that any time after $2^{31} – 1$ seconds since 00:00:00 UTC on January 1st 1970, cannot be displayed properly; the integer will overflow at 03:14:07 UTC on January 19th 2038. Unix time will set its value to the lower bound of its range, which is $-(2^{31})$ and systems will interpret that as $2^{31}$ before 00:00:00 UTC on January 1st 1970, which is 20:45:52 UTC on December 13th 1901. This could have wide-spread consequences for file systems, binary file formats, databases, database query languages that have $\texttt{UNIX_TIMESTAMP()}$-like commands, such as SQL, and many more.
There are already some ways to resolve the Y2K38 problem, but there is no universal solution. I am confident that in time, when the problem becomes more urgent, fitting solutions will be found. And if not, then the COVID-19 craziness has prepared me for what to hoard from the supermarket first: toilet paper and canned soup.
Sources
Andrew-Gee, Eric (2019-12-28). “Y2K: The strange, true history of how Canada prepared for an apocalypse that never happened, but changed us all”. The Globe and Mail.
Carrington, Damian (2000-01-04). “Was Y2K bug a boost?”. BBC News. Archived from the original on 2004-04-22. Retrieved 2009-09-19.
Committee on Government Reform and Oversight (1998-10-26). The Year 2000 Problem: Fourth Report by the Committee on Government Reform and Oversight, Together with Additional Views (PDF). U.S. Government Printing Office. p. 3. Retrieved 2021-06-07.
Diomidis Spinellis (2006). Code quality: the open source perspective. Effective software development series in Safari Books Online (illustrated ed.). Adobe Press. p. 49. ISBN 978-0-321-16607-4.
“Epoch Time”. unixtutoria. Retrieved 13 April 2023
Kappelman, Leon; Scott, Phil (1996-11-25). “Accrued Savings of the Year 2000 Computer Date Problem”. Computerworld. Archived from the original on 2017-12-18. Retrieved 2017-02-13.
“Key computer coding creator dies”. The Washington Post. 2004-06-25. Retrieved 2011-09-25.
“Leap Day Tuesday Last Y2K Worry”. Wired. 2000-02-25. Retrieved 2016-10-16.
Testimony by Alan Greenspan, ex-Chairman of the Federal Reserve before the Senate Banking Committee, 25 February 1998, ISBN 978-0-16-057997-4
Uenuma, Francine (2019-12-30). “20 Years Later, the Y2K Bug Seems Like a Joke—Because Those Behind the Scenes Took It Seriously”. Time Magazine. Retrieved 2021-06-07.