It’s a truism among programmers — that dates are difficult. Hundreds of billions of dollars were spent preparing humankind for the transition from the year 1999 to the year 2000 (“Y2K”), in a legendary and largely unsung effort by the world’s programmers and sysadmins. But this month saw a fresh round of date-related glitches, many of which can be traced back to those same patches performed back in 1999.
Or as ZDNet reported, “Twenty years ago, some developers dealt with the millennium bug by postponing it until… now.”
The Ghost of 1999
In a nutshell, the change from 1999 to 2000 would not be properly represented in many systems because the programmers who wrote these systems in the last century gave the date fields two digits (i.e. “99” for “1999”) instead of four, thereby saving then-valuable space in memory.
One solution involved a technique called “windowing” — in which two-digit years are assigned to either one century or another based on one hard-coded “pivot year” determining where they belong. Even back in 1999, HPCWire was describing it as “highly controversial,” citing one expert who said computers using the technique were “little ticking time bombs waiting to go off.”
Yet there were estimates that this approach to the so-called “Y2K” bug was used for 80% of the world’s computers, reports HPCWire, since the alternative — converting systems to include all four digits of a date — “requires a tedious line-by-line repair.” Jim Duggan, a researcher with the Gartner Group, told them that “It’s a Band-Aid, the way building a house out of wood and fiberboard is. You hope you’ll be somewhere else before it falls down.”
Fast forward 20 years and Dylan Mulvin, an assistant communications professor at the London School of Economics, told New Scientist this month that “Windowing, even during Y2K, was the worst of all possible solutions because it kicked the problem down the road.” But Consultant Ed Yourdon had told HPCWire that it was a conscious and pragmatic decision. “We’d like to do it the right way … and we don’t have time, so even though it’s a quick and dirty approach, we have no alternative. Too bad.”
Paul Lomax handled the Y2K bug for Vodafone, and this month shared his thoughts with New Scientist about the programmers who worked on old systems: “Clearly they assumed their systems would be long out of use by 2020. Much as those in the ’60s didn’t think their code would still be around in the year 2000.”
One video report at Mashable points out that the cost of memory in the 1960s was as high as $1 per bit — and calculates that the 4GB memory of a modern-day iPhone would cost $32 billion, “or a quarter of a trillion dollars when adjusted for inflation.” In that world, it made sense to represent years using only their last two digits.
That initial mindset became a problem come 1999 — but windowing only offered a temporary fix. “Hopefully, Corporate Board Executives were made aware at the time that the use of a pivot year just postponed their ‘Y2K’ problem a few decades,” retired COBOL programmer Larry McNish blogged on Dec. 30, 2019. “But information like that tends to get lost as people retire, executives are replaced, and companies merge.”
And unfortunately, many programmers decided that the logical pivot year was 2020. Tatsuhiko Miyagawa, an engineer at cloud platform provider Fastly, told New Scientist that 2020 was the halfway point of the century that started in 1970 — the moment when “Unix time” starts its count of seconds that have passed.
Two Decades after Y2K
Cause and effect is always hard to pinpoint — but there were definitely some date-related issues on January 1st, 2020.
- At least one Twitter user complained their insurance company sent a statement with a date of Jan. 2 of 1920.
- Back in November, Splunk had already announced that users of their software for analyzing machine-generated big data really needed to install the latest patches before Jan. 1, or those systems would become “unable to recognize timestamps from events where the date contains a two-digit year.”
- Developer Rich Felker said he’d seen a date-related bug in the tests for the chrony implementation of the Network Time Protocol.
- There were even date-related glitches in the professional wrestling video game WWE 2K20
- Cox cable apparently sent out bills dated Jan. 1, 1920.
- One Perl blogger also noticed that the timegm subroutine in Perl’s Time::Local module — which converts times to Greenwich Mean Time — would assume that two-digit years were within 50 years of the present. “This is messy, but matches the way people currently think about two-digit dates,” explains the documentation, adding “Whenever possible, use an absolute four digit year instead.” So on January 1st the blogger discovered a test using the year 1970 suddenly began assuming that the year was 2070.
- Another developer reported problems with the same module, writing in a comment on Hacker News that “Some of the Perl at work started returning strange values, and tests were failing.”
But some malfunctions were more severe than others. New Scientist reports that thousands of cash registers from the Polish firm Novitus were unable to print receipts.
And a date-related glitch also meant that New York City’s 14,000 parking meters suddenly stopped accepting credit cards, city officials told the New York Post — although they still insisted motorists pay for their parking with change (or through its official smartphone app). One transportation commissioner complained to the paper that the glitch “was not of our making,” though city workers still ended up doing the legwork of fixing it. “Workers are now scrambling to recalibrate each meter one-by-one,” the Post reported. By the morning of Jan. 6, city workers had updated 9,906 meters (nearly 71%), and all the meters were fixed by later in the week.
New Year’s Day also proved to be a big problem for Sunnyvale-based Trimble, which sells the PeopleNet Electronic Logging Device that automatically records the hours driven by commercial trucks. A former executive at the company told the Freight Waves site that Trimble employees he’d talked to acknowledged some devices were experiencing a discrepancy between the time on the clocks in the GPS system and the clocks on the server, causing the devices to reboot over and over again. “A subset” of its customers were affected, Trimble told the site, adding that they had a software update available before the end of the day on Jan. 1.
At least one trucker told the site he’d gone back to manually keeping a log on paper. “It reminds me of the early days of trucking,” he said. “I guess it’s good for my math skills.”
Praise for Patches
But what’s more important is also what didn’t happen — and the same is doubly true for 1999. The BBC reported estimates that over $300 billion was spent preparing for the Y2K bug — and the effort was predominantly successful, given the comparative lack of chaos that ensued on Jan. 1, 2000.
Mashable’s video calls Y2K “arguably the first-ever mass audit of a global computing network that had been running for decades.” In fact, “The robustness of New York City’s telecommunications and transit in the aftermath of the Sept. 11 attacks has been attributed to the amount of work put into avoiding the Y2K bug.”
Mashable’s video points out that the bug did have some consequences — for example, 1,000 heaters stopped working in South Korea, and reportedly so did some dialysis machines in Egypt. But “The lasting moral of Y2K shouldn’t be of an overblown panic, but of a successful and necessary global effort to avoid a known problem.”
And lost to the pages of history are the hard-working programmers and sysadmins who addressed the potential glitches before they happened. On New Year’s Day of 1999, a U.K.-based geek named Graeme Fowler left a comment on a BBC discussion page about Y2K touting the large effort put in to prepare for the bug. “What we have collectively achieved is pretty astonishing — the whole event passed without a bang, more like a whimper.
“The Y2K problem was not merely hype, although the press seems to want it to be that way. In most other countries there would be a celebration at a problem solved…”
“Some programmers worked on this for years,” Y2K consultant and developer Greg Sternberg told ZDNet this month. “Frankly, they were unsung heroes.”
Someone just looked at me so confused when I referenced Y2K and asked me, “what’s that? I wasn’t alive for that.” And never in my entire life have I ever felt so old.
— flower papi (@mellamancalle) January 16, 2020
- A Microsoft engineer’s humorous look at how computer programming changed over the last 20 years.
And the reactions from programmers on Reddit and Hacker News
- CodeRank calculates how often developers swear in the commits for their code.
- Frank Abagnale explains how cybercriminals are now replacing con men.
- What science fiction novels got wrong.