<rss version="2.0">
  <channel>
    <title>Computing-history on LLBBL Blog</title>
    <link>https://llbbl.blog/categories/computing-history/</link>
    <description></description>
    
    <language>en</language>
    
    <lastBuildDate>Tue, 02 Jun 2026 10:00:00 -0500</lastBuildDate>
    
    <item>
      <title>Day 10: The Zero Point</title>
      <link>https://llbbl.blog/2026/06/02/day-the-zero-point.html</link>
      <pubDate>Tue, 02 Jun 2026 10:00:00 -0500</pubDate>
      
      <guid>http://llbbl.micro.blog/2026/06/02/day-the-zero-point.html</guid>
      <description>&lt;p&gt;Three epochs quietly run the world:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The Unix epoch.&lt;/strong&gt; Midnight, January 1, 1970. Almost every computer measures time as seconds since this instant.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The GPS epoch.&lt;/strong&gt; Midnight, January 6, 1980. Every GPS satellite, every navigation chip in every phone, measures time as seconds since this instant.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The astronomical epoch (J2000.0).&lt;/strong&gt; Noon, January 1, 2000, Terrestrial Time. Almost every star catalog, planetary orbit calculation, and space mission uses this instant.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Three different zeros. Three different conventions. None of them line up with anything you&amp;rsquo;d find on a calendar. Here is why.&lt;/p&gt;
&lt;h2 id=&#34;you-cant-have-a-clock-without-a-zero&#34;&gt;You Can&amp;rsquo;t Have a Clock Without a Zero&lt;/h2&gt;
&lt;p&gt;A clock counts intervals. To tell you what time it is right now, it needs to know how many intervals have passed since something. The &amp;ldquo;since something&amp;rdquo; is the epoch: a fixed, agreed-upon instant from which all measurement runs.&lt;/p&gt;
&lt;p&gt;Most timekeeping systems hide their epoch behind a calendar facade. &amp;ldquo;April 14, 2026&amp;rdquo; is meaningful to humans, but underneath, the computer is doing arithmetic on a single integer counted from a particular zero.&lt;/p&gt;
&lt;p&gt;The calendar is the friendly mask.&lt;/p&gt;
&lt;p&gt;The epoch is the actual machinery.&lt;/p&gt;
&lt;h2 id=&#34;the-three-big-epochs&#34;&gt;The Three Big Epochs&lt;/h2&gt;
&lt;h3 id=&#34;unix-epoch-january-1-1970-000000-utc&#34;&gt;Unix Epoch: January 1, 1970, 00:00:00 UTC&lt;/h3&gt;
&lt;p&gt;Picked in the early 1970s by the engineers building Unix. They needed a zero point for the system&amp;rsquo;s internal &lt;code&gt;time_t&lt;/code&gt; integer. 1970 was recent enough to feel current, far enough away to leave room for negative numbers (events before 1970), and round enough to remember.&lt;/p&gt;
&lt;p&gt;I think that they probably thought, like, well, if time is all relative, then let&amp;rsquo;s just pick some arbitrary time and it doesn&amp;rsquo;t matter.&lt;/p&gt;
&lt;p&gt;It was an choice, not an astronomical one, just relative to some arbitrary point they decided.&lt;/p&gt;
&lt;p&gt;So let me say that again.&lt;/p&gt;
&lt;p&gt;The Unix epoch has no relationship to any natural event. It is a convention that, through the pervasive nature of Unix, became the default for all modern computing.&lt;/p&gt;
&lt;h3 id=&#34;gps-epoch-january-6-1980-000000-utc&#34;&gt;GPS Epoch: January 6, 1980, 00:00:00 UTC&lt;/h3&gt;
&lt;p&gt;The GPS satellite constellation started broadcasting on January 6, 1980. The epoch was just the moment the system turned on.&lt;/p&gt;
&lt;p&gt;Why January 6? Because that&amp;rsquo;s a Sunday, and the GPS week-counting system uses weeks, and weeks start on Sunday.&lt;/p&gt;
&lt;p&gt;The first GPS week is week zero.&lt;/p&gt;
&lt;p&gt;GPS time has run continuously from that instant and has never had a leap second adjustment, so it is currently 18 seconds ahead of UTC, a gap that keeps growing.&lt;/p&gt;
&lt;p&gt;But more on that in a tomorrow&amp;rsquo;s post.&lt;/p&gt;
&lt;h3 id=&#34;j20000-january-1-2000-120000-terrestrial-time&#34;&gt;J2000.0: January 1, 2000, 12:00:00 Terrestrial Time&lt;/h3&gt;
&lt;p&gt;This is the astronomers&#39; epoch, and it&amp;rsquo;s the most carefully chosen of the three. Notice two things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It&amp;rsquo;s noon, not midnight.&lt;/li&gt;
&lt;li&gt;It&amp;rsquo;s in Terrestrial Time, not UTC.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Both choices have reasons.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why noon?&lt;/strong&gt; Astronomers observe at night. A &amp;ldquo;day&amp;rdquo; for an astronomer historically started at noon and ran through the following noon, so a single night&amp;rsquo;s observation session never straddled a date boundary.&lt;/p&gt;
&lt;p&gt;If you started a date at midnight, half the stars you saw last night would log on one date and half on the next.&lt;/p&gt;
&lt;p&gt;Annoying for astronomers, so they decided to reduce their suffering by redefining the epoch.&lt;/p&gt;
&lt;p&gt;The Julian Date system, introduced by Joseph Scaliger in 1583, runs from noon to noon for this reason.&lt;/p&gt;
&lt;p&gt;Noon TT on January 1, 2000 was Julian Date 2,451,545.0 exactly, a perfectly round Julian-Date integer.&lt;/p&gt;
&lt;p&gt;Why such a huge number?&lt;/p&gt;
&lt;p&gt;Because Julian Dates count days from noon on January 1, &lt;strong&gt;4713 BC&lt;/strong&gt;, the start of Scaliger&amp;rsquo;s count.&lt;/p&gt;
&lt;p&gt;He picked that year because three big calendar cycles (solar, lunar, and the Roman indiction) all aligned there, and because it sat well before any recorded astronomical observation, so every date in history would be a positive integer.&lt;/p&gt;
&lt;p&gt;By noon on January 1, 2000, exactly 2,451,545 days had elapsed.&lt;/p&gt;
&lt;p&gt;The &amp;ldquo;0&amp;rdquo; at the end of &amp;ldquo;J2000.0&amp;rdquo; is a flag for that round number, a clean integer in a counting system older than telescopes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why Terrestrial Time and not UTC?&lt;/strong&gt; Because UTC has leap seconds and Terrestrial Time doesn&amp;rsquo;t.&lt;/p&gt;
&lt;p&gt;TT is the smooth atomic timescale we built two days ago (TAI + 32.184 seconds). Anchor your epoch to UTC and every leap second shifts your historical observations sideways. Anchor it to TT and it stays put. That&amp;rsquo;s why the canonical zero is in TT.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;TAI:  2000-01-01 11:59:27.816
UTC:  2000-01-01 11:58:55.816
TT:   2000-01-01 12:00:00.000   ← this is J2000.0
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;other-epochs-worth-knowing&#34;&gt;Other Epochs Worth Knowing&lt;/h2&gt;
&lt;p&gt;A few more that show up in working systems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Modified Julian Date (MJD)&lt;/strong&gt;: November 17, 1858, midnight. Used in space-mission control because it drops the leading digits of a full Julian Date, saving bytes in old memory-constrained systems.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TAI origin&lt;/strong&gt;: January 1, 1958, midnight UT2. The instant the cesium-coordinated TAI scale started running.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Year zero of the Gregorian calendar&lt;/strong&gt;: there isn&amp;rsquo;t one. The calendar jumps from 1 BC to 1 AD with no year zero in between, breaking date arithmetic across the boundary and serving as a low-grade gotcha in historical software.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;the-deep-time-temptation&#34;&gt;The Deep-Time Temptation&lt;/h2&gt;
&lt;p&gt;Some people, looking at this collection of arbitrary-feeling start points, ask why we don&amp;rsquo;t just pick something physically meaningful. The formation of the Earth, the formation of the solar system, the Big Bang.&lt;/p&gt;
&lt;p&gt;The answer is precision.&lt;/p&gt;
&lt;p&gt;We don&amp;rsquo;t know any of those instants to better than millions of years. Earth formed roughly 4.54 billion years ago, plus or minus 50 million.
The solar system, 4.567 billion years ago, plus or minus 1 million.
The Big Bang, 13.8 billion years ago, plus or minus 20 million.&lt;/p&gt;
&lt;p&gt;A reference epoch that is uncertain to a million years isn&amp;rsquo;t a reference&amp;hellip;&lt;/p&gt;
&lt;p&gt;The astronomical zero needs to be knowable to the nanosecond, recoverable in the future from preserved records, and verifiable against real observations.&lt;/p&gt;
&lt;p&gt;Of every candidate, J2000.0 is the best at all three.&lt;/p&gt;
&lt;p&gt;Modern atomic clocks were running in 2000. Star positions on that day are catalogued.&lt;/p&gt;
&lt;p&gt;The exact instant is recorded across thousands of observatories.&lt;/p&gt;
&lt;p&gt;If civilization collapses and is rebuilt, J2000 is recoverable from physical artifacts. The formation of the Earth is not.&lt;/p&gt;
&lt;h2 id=&#34;what-the-epoch-is-doing&#34;&gt;What the Epoch Is Doing&lt;/h2&gt;
&lt;p&gt;Pick your epoch and you pick what your system can and can&amp;rsquo;t represent.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Unix time can&amp;rsquo;t go before 1970 without negative numbers, and there is the whole integer-overflow issues after a few centuries.&lt;/li&gt;
&lt;li&gt;GPS time started in 1980 and counts strictly forward. Nothing before is representable.&lt;/li&gt;
&lt;li&gt;J2000.0 sits at the present, so calculations naturally span backwards and forwards by tens of thousands of years with full precision.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The choice of epoch is often the most invisible design decision in a timekeeping system, but it shapes everything downstream.&lt;/p&gt;
&lt;p&gt;Some of the strangest bugs in software history, Y2K, the 2038 problem, GPS week rollovers, trace back to picking a zero without thinking about the consequences.&lt;/p&gt;
&lt;p&gt;Tomorrow we&amp;rsquo;ll see what happens when one of those choices has to deal with relativity, gravity, and the curvature of spacetime.&lt;/p&gt;
&lt;p&gt;The Gee-Pee-Ess time, and the clocks that ship from the factory wrong on purpose.&lt;/p&gt;
&lt;h2 id=&#34;sources&#34;&gt;Sources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Unix_time&#34;&gt;Unix time — Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/GPS_time&#34;&gt;GPS time — Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Epoch_(astronomy)&#34;&gt;Epoch (astronomy) — Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Julian_day&#34;&gt;Julian day — Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Terrestrial_Time&#34;&gt;Terrestrial Time — Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Year_2038_problem&#34;&gt;Year 2038 problem — Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;rsquo;d appreciate a follow. You can subscribe with your email below. The emails go out once a week, or you can find me on Mastodon at &lt;a href=&#34;https://micro.blog/llbbl?remote_follow=1&#34;&gt;@logan@llbbl.blog&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>