TechRepublic : A ZDNet Tech Community

Geek Trivia: Time and time again

Tags: Operating systems, Jay Garmon, Unix-Time, Unix, UTC, Geek Trivia Newsletter

  • Save
  • Print
  • Recommend
  • 2

Takeaway: What 1972 timekeeping innovation complicated the so-called UNIX epoch?

We're going to get a little old-school this week in Geek Trivia, with a shout out to the original do-everything operating system: UNIX. This Friday marks the fourth anniversary of the so-called UNIX billennium, a moment when the venerable OS reached a timekeeping milestone and experienced its own mild version of the Year 2000 bug.

To understand what we're talking about, first you have to grasp two key concepts: UNIX time (also known as POSIX time) and the UNIX epoch. UNIX time is the method by which several key software systems—among them the UNIX OS and the Java programming language—measure time.

UNIX time is actually rather simple. It's a measure of the seconds that have elapsed since the beginning of the UNIX epoch, which officially began at zero hours, zero minutes, and zero seconds on Jan. 1, 1970, as measured by the international standard of Coordinated Universal Time (UTC).

Thus, in software terms, UNIX time is highly efficient. At its root, it's simply an ever-increasing integer, which we can programmatically convert to a conventional date (not exactly groundbreaking technology, but notable as a simple, widely accepted standard). Each day is 86,400 seconds long, so calculating elapsed days is merely a matter of division, and we can determine a calendar date from that quotient.

Of course, even in the best systems, there's always a catch, and that's where the UNIX billennium comes in. By design, many UNIX-based programs interpreted UNIX time as an eight-figure integer, with total elapsed time measuring in the hundreds of millions of seconds. Unfortunately, on Sept. 9, 2001, UNIX time reached one billion seconds—effectively breaking the eight-figure-expectant programs, notably certain portions of the KDE desktop environment.

Now, linguistic and chronometric purists would point out that billennium is not a real word, but instead a slang contraction of billion (the number of seconds) and millennium (a reference to the Y2K or millennium bug). The proper term for one billion seconds is a gigasecond. As quibbles go, that's a mild one.

The real issue with UNIX time—one far more intriguing and potentially more disquieting than the billennium—is its synchronization with UTC. Nominally maintained by atomic clocks, UTC's objective is to stay in sync with the actual duration of the solar day.

That's a fancy way of saying that the Earth's rotation is slowing minutely each year, so that each day is not exactly 86,400 seconds long. In 1972, the authorities behind UTC developed a timekeeping innovation to compensate for this discrepancy, one that complicates the administration of UNIX time.

WHAT 1972 TIMEKEEPING INNOVATION COMPLICATED THE SO-CALLED UNIX EPOCH?

What 1972 timekeeping innovating complicated the so-called UNIX epoch, a time measurement standard employed by various mainstream software systems, including the UNIX operating system and the Java programming language?

As we mentioned earlier, synchronized with Coordinated Universal Time (UTC),the UNIX epoch officially began on Jan. 1, 1970. The problem is that UTC didn't exist in its present form until 1972, when the International Earth Rotation and Reference Systems Service—the scientific authority that precisely measures the Earth's rotation for timekeeping purposes—introduced a new variable: leap seconds.

First, a little background: UTC is a hybrid of Universal Time (UT) and International Atomic Time (TAI). The basis of UT is the earth's rotation; it synchronizes clocks based on the amount of time it takes the earth to complete a single spin. The basis of TAI is the formal scientific definition of a second—namely the amount of time it takes for a specially irradiated cesium atom to oscillate 9,192,631,770 times.

In a perfect world, these two standards would always be in sync. But in the real world, the braking force of the Earth's tide is slowing down our planet's rotation, so a hybrid time standard is required: Coordinated Universal Time.

The secret to UTC is the leap second, an extra second added to a specific year to keep civil time roughly in sync with the ever-slowing Earth. Authorities added the first leap second on June 30, 1972, and they have added 21 since then.

The next planned addition of a leap second is Dec. 31, 2005. On that date, 11:59 P.M. UTC will be 61 seconds long, and the clock will actually sequence from 23:59:59 to 23:59:60, rather than from 23:59:59 to 00:00:00.

The problem this presents for UNIX time is that the addition of leap seconds occurs at irregular, somewhat arbitrary intervals, as the slowing of the Earth's rotation is not predictable over the long term. As such, programmers must manually factor leap seconds into programmatic date calculations for systems based on UNIX time, which is a complicated task. Different programmers and development standards handle the task in different ways, which can occasionally lead to minor problems when time-sensitive software communicates over extended periods.

So while UNIX can't extrapolate forward the exact civil time at which precisely measured astronomic or atomic events will someday occur—there goes all that time-travel science fiction—it can reliably provide some timely and time-consuming Geek Trivia.

Check out the Trivia Geek's blog!

Keep in touch with Trivial Pursuits, the Trivia Geek's online journal of rants, opinions, crazy ideas, half-baked notions, bizarre concepts, wild schemes, and trivial observations unfit even for Geek Trivia.

The Quibble of the Week

If you uncover a questionable fact or debatable aspect of this week's Geek Trivia, just post it in the discussion area of the article. Every week, yours truly will choose the best post from the assembled masses and discuss it in the next edition of Geek Trivia.

This week's quibble comes from a Classic Geek, the Aug. 24, 2005 reprint of "They say it's your birthday," originally published on May 21, 2003. TechRepublic member Kanishk immediately smacked me down for a whopper of a TCP/IP gaffe.

"I guess that TCP stands for Transmission Control Protocol and not 'Transfer Control Protocol' as mentioned in this article."

Bad geek, no cookie. Thanks for the corrections and the Wikipedia connection, dear reader, and keep those quibbles coming!

Falling behind on your weekly Geek fix?

Check out the Geek Trivia Archive, and catch up on the most recent editions of Geek Trivia.

Test your command of useless knowledge by subscribing to TechRepublic's Geek Trivia e-newsletter. Automatically sign up today!

The Trivia Geek, also known as Jay Garmon, is a former advertising copywriter and Web developer who's duped TechRepublic into underwriting his affinity for movies, sci-fi, comic books, technology, and all things geekish or subcultural.

  • Save
  • Print
  • Recommend
  • 2

Print/View all Posts Comments on this article

Leap seconds in Unix, a big deal why? tsadowski | 09/07/05
Ummm, not a big deal ... "Geek Trivia" LarryMinNJ | 09/07/05
Trivial nitpicking tsadowski | 09/07/05
Sometimes it is a big deal djcinsb | 09/07/05
You fly spacecraft?!? petrosky | 09/07/05
Billennium gsquared | 09/07/05
What about the end of unix time? AlanGeek | 09/07/05
but by the Jaqui | 09/07/05
You sure? NickNielsen | 09/08/05
Try 80s JamesRL | 09/08/05
Leap second accounted for... ? devGuy | 09/08/05
Now.... RayJeff | 09/08/05

What do you think?

White Papers, Webcasts, and Downloads

Article Categories

Security
Security Solutions, IT Locksmith
Networking and Communications
E-mail Administration NetNote, Cisco Routers and Switches
CIO and IT Management
Project Management, CIO Issues, Strategies that Scale
Desktops, Laptops & OS
Windows 2000 Professional, Microsoft Word, Microsoft Excel, Microsoft Access, Windows XP,
Data Management
Oracle, SQL Server
Servers
Windows NT, Linux NetNote, Windows Server 2003
Career Development
Geek Trivia
Software/Web Development
Web Development Zone, Visual Basic, .NET

SmartPlanet

Click Here