In computing, there's a concept called Unix time. It's the number of seconds since January
1, 1970. Loads of programmers use it, because it's really easy to deal with: it means that
instead of having all these messy months with different numbers of days in each of them,
and this weird thing where February has an extra day every four years, except when it
doesn't -- you're dealing with just one number. The bigger the number, the later something
happened. Easy.
As you might know, there is a leap second tonight as I record this, because the Earth's
orbit is slightly irregular. And that's a problem. Because there are two ways that Unix
time could deal with leap seconds, and both of them suck.
Option 1: include leap seconds. Unix time just keeps ticking on. That's not bad in theory,
but in practice it means that any implementation of Unix time that converts between it and
human-readable time needs a database of every leap second that's ever happened, and an update
whenever the decision to add or remove a leap second is taken. Otherwise when you say "6pm",
an old system that's missed leap second updates might understand that as a few seconds away
from 6pm. Not important for most of the world, but kind of important if you're working out
the timing for, I don't know, docking a satellite. And good luck getting that vital leap second
update to the satellite you've already put in space, or to the secure system that's cut
off from the outside world.
Okay, so including leap seconds sucks. But not including them -- which is the second
option, and the one that we as a species went for -- also sucks. It means that Unix time
isn't really the number of seconds since January 1, 1970, it's just a number you can calculate
from whatever's on our human clocks. And because tonight, 23:59:59 is going to happen twice
-- officially, it's 23:59:60, but good luck getting that through any computer system -- 23:59:59
is going to happen twice -- that means that Unix time is going to repeat a second.
The key advantage of Unix time, that a bigger number always means later? Not for those two
seconds. And that's such a weird edge case that it's going to cause some minor glitches
somewhere. How? No idea yet. Why? No idea yet. Could be something as simple as a process
that's meant to run once a second, that would save a file out with the current timestamp
as its name -- it's bad design, but an easy mistake to make. That program will discover
there's already a file with that name, and if it's badly designed, it will crash. That's
a really simple bug, any actual problems will be massively more complicated and subtle than
that. Don't don't worry about your desktop computer and your phone: you can set the clock
forward and back months on those and it probably won't mess anything up.
Google's got a really clever solution -- a leap smear, which steadily stretches out the
second over the course of the day. Yes, the clocks will be inaccurate by up to half a
second, but their priority is making sure that time is linear, the accuracy doesn't
matter so much. And some stock markets are taking a much more pragmatic approach: they're
shutting down for the hour around the leap second, just in case. Because in a world where
high-frequency trading is dealing in milliseconds, a sudden glitch in time can really mess things up.
[Translating these subtitles? Add your name here!]