Couple weeks ago, I was transported back to December 31, 1969 when I was informed a license for some software expired. Huh? I bet you’ve seen this - Mysterious Little time machine references to December 31, 1969 are caused by a simple software bug - so why does such obvious evidence continue to get completely overlooked before software is released?
That got me thinking so I Googled “December 31, 1969.” Of the first 100 search results, only 8 refer to that Wednesday evening nearly 40 years ago.
The other 92 entries? Oooooh, let’s have some fun exploring the debris trail of software date problems (with very few examples I found of what REALLY happened on December 31, 1969).
This post of Fun, Joy and Amusement is the result of my recent debugging of a BitDefender bug, Unsatisfying attempt #2 and My final discovery of the bug that caused license expiration and subsequent update failure in the middle of the night, every night.
Here’s the error that started it all:
While I debugged this very real problem that left my computer exposed every 24 hours to viruses, I also gave in to my curiosity about the prevalence of this problem. It turned out to be a lot of fun (the latter, not the former).
What’s this all about again?
For UNIX, life started on January 1, 1970 Coordinated Universal Time (UTC). This “Epoch Date” is 0, and UNIX time increments once a second up to the present time. So, ‘0′ in UNIX time-speak equates to January 1, 1970 UTC. (Note: UTC is based on an atomic clock and is synchronized to within about a second of Greenwich Mean Time (GMT). GMT was the time standard based on solar observations at the Royal Observatory in Greenwich, London until about 1925. But UTC and GMT are often used interchangeably.)
Now, I live in the Eastern Time Zone which is 5 hours behind UTC. So at the UNIX bewitching hour in MY HOUSE, UNIX time started at December 31, 1969 at 7:00 PM.
Check it yourself - stick 0 into the UNIX-to-Date/Time machine to see the magic date.
The Old New Thing presents a list of several “sentinel timestamps” like this one, with the variable format and value that lead to these “magic” dates.
So What? Some software applications use 0 to indicate an undefined or NULL date. If this is accidentally assumed to be a valid UNIX time, the value is misinterpreted as … December 31, 1969.
The pic below shows this relationship explicitly, and it’s one of the only examples I could find that shows both the UNIX time format and Date/Time formats in the same place. The Blanco County news issue for December 31, 1969 is stored on their website as “0000-00-00″ … the UNIX Epoch date. (See the green URL.) The purple hyperlink shows the UNIX conversion.
So what - a couple people screwed this up. Heh heh. Well, it shows up A LOT on interactive pages
“Why is my “Last Visited Date” on this forum 12/31/1969?”
Most have no clue why, but are curious enough to have noticed and asked. These questions often go unanswered. Except this one:
“For computer, that means long-long time ago, when the board was run on Ikonboard software (an old bulletin board software - BBS)”
“How old is the [forum] board?”
Oh, I LOVE IT!
Shopping carts and the like also fall victim.
And the (clueless) doomsayers:
This discussion at a Photoshop forum was interesting
This discussion focused on the “date bug” because users were creating photo albums of their ancestors who were born before 1969. Some users even tried to debug the problem, providing correlations between the date they entered with what Photoshop stored. Some dates older than 1969 were stored correctly, others not. While no one understood the real issue, they did try to debug it. As with my recent experience, customer service was of no help. (And darn it I can’t get the forum hyperlink to work for this graphic, so let’s try here too.)
“My experience with Photoshop Elements and the Adobe user-to-user forum is that only a small fraction of people use it for “family memory keeping” or other uses in which there are dates older than a few years ago. As an indication of this small market size, Adobe is barely maintaining the PSE Organizer, and it is littered with bugs in handling file metadata. So it doesn’t surprise me that Photoshop.com also doesn’t prioritize handling of old dates.“
Adobe should have recognized this problem, IMHO. Its users really did try to figure this out. BRAVO to the curious and tenacious users! (I saw no useful replies to this reported problem on the Adobe forum.)
A zillion instances of town Meeting Minutes, archives, etc., show error after error. I’m surprised none have even looked at their own pages! Here’s a generic and way-to-common example of an archives page. Hmmmm 6:00 PM …. CENTRAL time zone.
RATS! I missed the first couple telecasts of Dog Whisperer! But luckily, I can catch the last one about 40 years ago.
This one’s cool! The bug shows up in blog entries enough that Blog Archives even have a category for December 31, 1969!
A “Start of Time” implies an “End of Time” and other Sentinel Timestamps
Now, UNIX time starts at 0 - January 1, 1970 UTC. As the counter increments every second, eventually it gets larger than the variable that holds it. Time is stored different ways on different systems, but the most common is a signed long int, or 32 bits. 31 are available to count from zero, so the largest UNIX number (and hence when UNIX time ENDS) is 2^31 or 2147483648 (in HEX, 0×7FFFFFFF ) … aka Tue, 19 Jan 2038 03:14:08 UTC.
Here are some relevant dates worth noting:
- 0×00000000 = December 31, 1969
- 0×7FFFFFFF = January 19, 2038
- 0×80000000 = December 13, 1901
So the END of UNIX time is early 2038. Turns out that date showed up as well.
Here’s Dee’s calendar. She has repeating entries for her birthday every year until (what she apparently thinks) is “no end date.” Clearly, she and UNIX time were born together, and will die together. This is the last entry in the long list of birthday reminders.
I just LOVE this one! The “Joke of the week” for December 31, 1969 generated SOME SORT of error! Not sure the error is related to the bug though.
Please, just one more that is interesting because of rollovers and the like
I tripped across this calendar archive. Archives are often stored in the format:
Home » Calendar » Year » Month
So check out the calendar year and date here …
I played around with the actual URL and quickly found the discontinuity below - the rollover point at 2038. Everything is fine in January of 2038, but when I bump the year to 2039, the corresponding month/year rolls over to 1969! Cool!
… but the business about the year 2129 in the first of these three pics had me puzzled. What was special about 2129? Well, probably nothing, as I put bigger and bigger values in the URL “year” field. 2200. 5000. 10,000. Then I started playing with powers or 2. 32767. 65535.
Then I grabbed the bigger guns - I crammed 4294967296 in there (2^32) and lo-and-behold … the year became 2147483647 (See the purple arrows). The presented year was half what I asked, making it a separate 32-bit signed variable. And THIS time, the 31 bits are used just for the year rather than for the entire date code.
Go play around with this site. Click on the year below the purple arrow. The programmers have no concept of boundary conditions.
This Transportation Alternatives page is also pretty neat because it accepts way more than just 0000-00-00 - it also has the discontinuity at 1901 (0×80000000). In this case the variable storing UNIX time is signed, and 0×80000000 represents the most negative number.
Here’s an easier way to think about it. If UNIX time is stored as a signed variable, the largest date possible is January 19, 2038. Well, 2038 - 1969 is about 69 years. So, the most NEGATIVE date is 1969 - 69 or about 1901. Get it?
Oh, should I keep going? Yeah! Let’s head over to “irony-land”
See, the government always TOLD us that their technology was way ahead of public knowledge. But looks like 40 years ago, they slipped up on their own ESP…
Lots of bike racks installed in Chicago
Hey, and some folks are tongue-in-cheek excited about new releases coming on December 31, 1969!
How about some news from the 80’s? Ah, the EIGHTIES?
One more for irony - CNET.com reports the following
There are tons of companies out there that are trying to recapture mid-century chic, but the U.K. company [Bush] has done the job exceptionally well, which is a good thing because the radio is such an important icon for that generation. Its latest creation may be the ultimate combination of old and new in the genre.
Here’s the trailer … “mid-century chic”? “Retro”?
A Company who GOT IT
Sorry to say, as much as this problem exists, I found only ONE company that reported it and issued a patch.
Drumroll - Now some stuff that REALLY HAPPENED on December 31, 1969
Boy, it sure was hard to find anything that REALLY happened way back then. Here are three little examples.
Bobby Fischer was the most active chess player, followed by Tigran Petrosian and Boris Spassky.
A diary entry from some dude maybe I should know
“Looks like a nice day coming. Whatever we wish to accomplish in 1969 must be done this day. Clear. air N to NW. Temp. 24°. Glass 29.7. Was at work on shop before 8:00. Pumped. … Finished butting posts, took jacks and posts down, put stringer bearings in, surplus rocks under sills, fastened stringers in place, and shortened floor board from corner across under runway to doorway before lunch.”
“The SEC today announced the adoption of amendments to its … accounting rules with respect to provision for Federal income taxes by registered investment companies.”
Oh, the irony.
This was a pretty fun distraction for me. I was shocked just how pervasive this problem is, and how few people even realize it’s happening. But trust me, it’ll get a lot more publicity in, say, 2035.
Well, not really. Problems are already happening. An AOL timeout bug that brought a web server to its knees in 2006. Computing 40 year mortgages that started in 2008 … it’s all coming a lot sooner than you think.
PS: Lost of companies are already switching over from 32-bit to 64-bit timestamps. This allows 2^63 or 9,223,372,036,854,775,808 seconds after the beginning of UNIX time. This translates into the Unix date 3:30:08 PM, Sunday, December 4, 292,277,026,596 C.E.
Luckily, time won’t roll over to 1969 again for another 4 trillion years.
Interestingly, we used the sun until about 1925 as a time reference. Will the atomic clock remain within about 1 second of solar time? Lessee, the sun is estimated to last only about 5 billion more years. In 4 trillion years when UNIX time rolls over, the sun will likely have run out of hydrogen and already turned into a white dwarf star. [ref]
So I guess not. The irony.