
The Patek Philippe Caliber 89 and Horology’s Easter Problem - gpresot
https://www.hodinkee.com/articles/patek-philippe-caliber-89-easter-problem
======
bkeroack
Only tangentially related, but if you ever get the chance to check out the
Patek Philippe Museum in Geneva you should do so. I'm not really a watch geek
so before going there I was kind of "meh", but that place is incredible.

They have thousands of timepieces, some dating back to 1530. To see what
people have been able to accomplish with nothing but springs and tiny gears is
nothing short of mind-blowing. As a technologist it's pretty humbling,
considering all the advantages we have today and yet ancient watchmakers could
do this work literally with nothing but hand tools.

~~~
mathattack
This is also what makes Steampunk so fascinating.

~~~
ChuckMcM
I always imagine that in the steampunk universe is 'the number of gears in a
mechanism doubles every 2 years' and then extrapolate where we would be today
:-)

~~~
mml
there's a book along those themes. a corporation's power was measured in "cam
feet", and the main plot revolved around the theft of a stack of punchcards
with some important algorithm or other on them.

~~~
syncsynchalt
Sounds like
[https://en.wikipedia.org/wiki/The_Difference_Engine](https://en.wikipedia.org/wiki/The_Difference_Engine)

------
te_platt
I'm always curious when Gauss turns up in the solution to a math problem.
Wikipedia has a section on the algorithm here:
[https://en.wikipedia.org/wiki/Computus#Gauss_algorithm](https://en.wikipedia.org/wiki/Computus#Gauss_algorithm)

The same article also explains why it is a hard problem:

"Easter calculations are based on agreements and conventions, not on the
actual celestial movements nor on indisputable facts of history."

Sounds a lot like many user requirements I have had to code for.

~~~
DonaldFisk
Astronomically derived Easter is the Sunday after the full moon after the
vernal equinox, and that's quite easy to calculate. I thought of implementing
Computus, but gave up as it's so arbitrary that nothing worthwhile would be
learned by implementing it. I implemented astronomical Easter instead, knowing
that it's occasionally wrong:
[http://web.onetel.com/~hibou/fmj/tutorials/GregorianCalendar...](http://web.onetel.com/~hibou/fmj/tutorials/GregorianCalendar.html)
\- scroll down to Bell, Book, and Candle.

~~~
jazzdev
This was my first programming assignment (7th grade math class, 1975). It was
a great introduction to computers and algorithms. I think I still have that
BASIC program on a paper tape in my basement.

------
encoderer
On a tangent, my favorite example of how php is a giant bag of rando functions
is easter_date(). This ships with the language core.

~~~
mrrsm
I wonder if they will deprecate the function after 2037?

~~~
Chyzwar
nah, they will just add real_easter_date().

~~~
CompanionCuube
Wouldn't that be easter_real_date()?

~~~
mrrsm
They will probably go with one for a single release before leaving it
deprecated for years and switching to the other but never remove it from the
core.

------
lunaru
I'm big into mechanical watches and I find it surprising that more software
developer types are not into watches. They're the mechanical parallel that
completes my otherwise purely digital world.

Also, everything about them (when done well) sounds like a top developer's wet
dream, from the design, development, and down to the extremely rigorous QA
processes around building these mechanical marvels.

In particular, this "inside rolex" piece from the Hodinkee website is a must-
read, and I believe was also posted to HN a few months ago:
[https://www.hodinkee.com/articles/inside-
rolex](https://www.hodinkee.com/articles/inside-rolex)

~~~
Cookingboy
>I find it surprising that more software developer types are not into watches

Hopefully I don't offend anyone, but I have noticed that many software devs
these says are just that, software devs, instead of being engineers with a
passion for designing and building amazingly complex machines/systems.

If you call yourself an engineer and can't bring yourself to appreciate the
beauty of a jet engine or the construction of a F1 race car or the
craftsmanship of a Patek Philippe watch, then I actually lose a bit of respect
for you.

~~~
_nedR
If a Chinese sweatshop in Hangzhou, was able to make a perfect replica of a F1
race car or a jet engine (that performed to the same standards as their
contemporaries) i would be in complete awe and give total respect.

If a similar Chinese sweatshop were to make a perfect functional replica of
this Patek Philippe watch (without having had physical access to it) at
1/100th the cost would you express similar appreciation? Would you wear it
with the same level of pride as you would a Patek Philippe watch?

~~~
eo3x0
I know you're asking this question as a rhetorical but the answer is not what
you think it is.

The answer is "yes" of course a Chinese made Patek Philippe would be an object
of appreciation. But there isn't one.

There's actually a rich history of Chinese watch making and it's worth reading
up on if you're into mechanical watches at all:
[http://chinesewatchwiki.net/History_of_Chinese_watchmaking](http://chinesewatchwiki.net/History_of_Chinese_watchmaking)

In fact the project 304 chronograph is still considered collectible, even the
reissues: [http://forums.watchuseek.com/f71/review-ed1963-chinese-
milit...](http://forums.watchuseek.com/f71/review-ed1963-chinese-military-
chronograph-reissue-3361546.html)

However, back to answer your question precisely, China simply doesn't have an
industry or heritage or history that can support a Patek, which is why it
doesn't exist. Even with the history I've linked to above, the Swiss industry
is light years ahead and it's not even close.

I don't think you should let your bias, if any, of the very inferior
counterfeit movements and counterfeit casing industry color your opinion of
watches. Anyone in the know would trivially identify the differences. To your
analogy it would be like producing a cheap engine and simply calling it an F1
engine. That's not how it works.

Furthermore, if you asked this theoretical Chinese sweatshop to build a modern
highly complicated Patek Philippe, it wouldn't cost 1/100 the price, it would
cost 100x the price if not more. They'd have to start by sourcing synthetic
materials, reinventing tools, or recreating components that a theoretical
sweatshop wouldn't even have access to. Part of why counterfeits are so cheap
is because they source really cheap Japanese or local Chinese movements that
have had decades of build up to scale to the current counterfeit prices.
Meanwhile, the real deal modern watch movements are decades more advanced.

~~~
_nedR
I am sorry to say you haven't assuaged my scepticism.

The watch in question made in 1989 is valued at 6 million dollars (according
to wikipedia). OK fine, that might be an extreme example. Lets take a typical
Patek watch which costs tens of thousands of dollars.

I can't believe that the price reflects the materials, the complexity and
labour that went into the watch. I admit i know next to nothing about horology
but as a software engineer i have trouble believing it has more complexity
than a similarly priced family saloon or even a mobile phone, or a
microprocessor.

My point with the Chinese sweatshop example was its really about the image
that they want to be associated with. There seems to be a typical formula: An
aristocratic sounding family name of the founder, a founding date sometime in
the 1800s and a founding place in Geneva or some town or village with a quaint
name in France. A making-off video which features men with Germanic features,
wire-frame glasses and who is never smiling(we're portraying gravitas here),
delicately assembling the watch components. Oh yeah and make sure you get
celebrities, powerful politiciansand pro athletes to be photographed wearing
the watch (the fact that some of these people couldn't reasonably afford such
watches seems to suggest they were given the watch for free or even paid to
wear them).

edit: I know there are examples of watch manufacturers like Richard Mille who
break the mould (at least with the historical legacy aspect), but it seems to
be an unclear path to convince the gatekeepers of this clique that you're not
just another poser trying to pry hundreds of thousands of dollars from the
wealthy.

~~~
Cookingboy
Actually even the tools Patek uses to make their watch are made in house,
mostly by hand.

Watchmaking and does take a tremendous amount of labor, a watch made by a
sweatshop in China will simply not have the same precision and reliability,
let alone the fit and finish of its movement inside.

You are confusing complexity with ease of manufacturing. Some very complex
objects are actually much easier to mass produce, such as a family sedan or a
CPU, simply because we've gotten very, very good at it by now and the economy
of scale makes it easy and cheap.

But for a watch, since there is no such economy of scale, and the customers
demand those watches to be hand made, then the amount of man hour and labor
that's put into making a perpetual calendar way out weights that of a car.

Is there a huge amount of price inflation caused by marketing? Absolutely. But
even a top tier Chinese replica of a Patek can cost a couple thousand dollars,
while not being the same quality inside.

------
jameshart
"As you can probably imagine, a program disk for the full cycle of Easter
dates would be a wildly impractical thing as well; it would have to have
5,700,000 steps in order to encode the full cycle of Easter dates."

That assumes that you want to encode the program as a single disc encoding the
repeating cycle. But surely you could use a series of program discs to perform
successive lookups and offsets and reduce it down to several more manageable
discs? e.g. you have one disc that encodes the cycle of offsets of the spring
equinox by year, then use that to offset the rotation of the wheel that
encodes the lunar cycle...

~~~
lmm
At that point you're not using a single program disk, you're encoding the
computation, which they also cover the practicalities of.

~~~
jameshart
I'm still suggesting lookup tables based on year, not attempting calculations.

~~~
grp
Maybe you will be interested by the perpetual calendar patents of Ludwig
Oeschlin for Ulysse Nardin.

(Note that perpetual calendars are relatively more simpler complications to
design and make).

So it is possible, but hard to fit into a watchmaking piece!

~~~
TheOtherHobbes
The problem isn't the size of the data, it's the limits of the mechanical
technology used.

I could be very wrong about this, but I suspect it might be possible to encode
the data optically with much finer resolution and then contrive some kind of
daylight driven optical -> mechanical transducer to extract it.

~~~
freeone3000
Maybe some sort of live-state electrical storage based on NAND gates, which
returns a hi-low electrical value which is then read.

~~~
scottlocklin
You guys should look at the Seiko spring drive.

[http://www.seikowatches.com/world/technology/spring_drive/](http://www.seikowatches.com/world/technology/spring_drive/)

Even the most snardy of mechanical watch enthusiasts agree this is a very
beautiful mechanism.

------
ce4
I think it's one of the lamer complications.

The date-of-easter complication consists of a notched program wheel -
practically a look up table. Due to the limited LUT-size of 28 (1989-2017)
this program wheel needs replacement.

~~~
smiley325
The Patek Phillipe that the article opens with yes, but they go on later to
talk about the /computus/ which is a purely mechanical Easter calculation
accurate w/o modification to year 10,000 AD.

~~~
lisper
Also, don't neglect to follow the link to the Vacheron 57260:

[https://www.hodinkee.com/articles/the-vacheron-constantin-
re...](https://www.hodinkee.com/articles/the-vacheron-constantin-
reference-57260)

That will surely sate your lust for mechanical audacity.

~~~
eternalban
Also don't neglect the ad for auction of "one of only four" going on sale
soon. This read as a very elaborate advertisement for that auction.

~~~
garethsprice
I think it's more advertising for Patek in general. The handful of people who
have both the means and desire to purchase such an object likely got informed
by their personal networks long ago. But Patek wants to sell $20k Calatravas
to merely affluent people who want "the best watch" and this piece helps
position the brand. I'd not be surprised if there was significant PR effort
from Patek behind the scenes on this one.

~~~
to3m
Article about this:
[http://thelastpsychiatrist.com/2011/11/luxury_branding_the_f...](http://thelastpsychiatrist.com/2011/11/luxury_branding_the_future_lea.html)
(worth your time)

~~~
sjcsjc
Definitely worth my time. Thanks.

------
iaw
> the year indication goes to 9,999 and Schwilgué is supposed to have
> helpfully suggested that in 10,000, someone might paint in a "1" to the left
> of the year window

I hope that's a true story, it's such a practical solution.

~~~
tantalor
Until you get to 20,000.

------
noonespecial
Mechanical computing is awesome. _Miniaturized_ mechanical computing doubly
so. I'm glad it's alive and well in the world of watches.

I especially love this sort of thing because there's not really a practical
reason for this to exist. Its pure art. Technical art of amazing effort and
skill. The best part is that people appreciate it and pay big money for it
(lots of people). People pay for good art! That's all kinds of awesome.

------
ericfrederich
[https://github.com/dateutil/dateutil/blob/master/dateutil/ea...](https://github.com/dateutil/dateutil/blob/master/dateutil/easter.py)

~~~
a_c
Wow! I didn't know _if not (1 <= method <= 3)_ is supported syntax! I would
always use _method >= 1 and method <= 3_

~~~
Avshalom
I seem to remember an article once on how the associativity in cases like this
not always lining up with what you think/want so be careful with it.

~~~
andrepd
That's probably only applicable to floating point arithmetic, since integer
comparisons don't suffer from those problems.

~~~
eru
Floating point arithmetic has associativity issue, but that's not the problem
here.

------
gavinpc
> a true date-of-Easter complication is probably the single most difficult
> complication in horology

Funny story. I was making the "final" commit before shipping a desktop
application, and I wanted to make an Easter egg. But what should it be? It
should be Easter-related, I supposed. I made a pastel color theme for the main
screen, that should appear only on Easter. This product is used in DoD, and I
doubted that anyone would ever be using it on a Sunday.

The product had a design flaw, a kind of time bomb. I was a greenhorn working
on it when it first shipped in 1994, and I thought nothing of the fact that
its rate table was arranged _horizontally_ , like so:

    
    
        id  1991 1992 1993 1994 1995 1996 1997 1998 1999 2000
        1   4.49 4.59 4.79 4.99 5.16 5.26 5.68 5.78 5.99 6.44
        2   ... etc
    

Despite being a Navy budget forecaster by trade, the Captain who created the
program lacked the hubris to worry about needing rates for the next
millennium. This set of dates was hardcoded _all over_ the the codebase. The
Captain, a poor typist, kept resetting the bomb by adding more years.

Fast forward to 2012. The product has been acquired, and I was brought in to
port it for 64-bit machines. And the only task remaining—revision #1400—was to
compute the date of Easter.

It took me about 2 minutes to conclude that this wasn't going to happen
(although I didn't know it was _that_ hard). So although it lacks the elegance
that you'd like in your Easter egg, this one hardcodes the dates of Easter
Sunday... through 2020. I mean, it's going to be on the web by then, right?

Yeah, it's still shipping.

[http://www.budgetbuilder.com/](http://www.budgetbuilder.com/)

------
garethsprice
Beautifully written article, important to remember as developers that we'll
only ever be able to capture the chaos and complexity of the real world as a
rough model no matter how intricate the engineering.

~~~
pavel_lishin
A good reminder to managers that you gotta keep developers on staff, too -
can't just write a "fire and forget" app for a lot of cases.

------
pjungwir
Once upon a time I wrote a function for remind(1) to compute the date of
Pascha (Easter in the eastern churches), which uses different rules. It uses
the Julian calendar (mostly). Here it is on github:

[https://github.com/pjungwir/remind-
pascha](https://github.com/pjungwir/remind-pascha)

It lets you choose between 3 algorithms, one of which is Gauss's.

~~~
cat199
Nifty - cheers - will be INCLUDE'ing this at once :)

------
OliverJones
Heh heh. Churches have been squabbling about the date of Easter since there
was Easter. It seems this particular resolution of the problem relates to the
western church's choices for Easter. Orthodox people still, if I understand it
right, use the Julian calendar.

This stuff is _hard_ to get right, even if you're a bishop with legions of
scholars and theologians at your disposal.

And, just for grins, look up how the modern state of Israel decided when
daylight saving time begins and ends up until 2012. (They rationalized it in
2012.)

~~~
LeifCarrotson
[https://en.wikipedia.org/wiki/Israel_Summer_Time#2005.E2.80....](https://en.wikipedia.org/wiki/Israel_Summer_Time#2005.E2.80.932012)

> Until 2005, the start and end of IDT each year was established in an ad hoc
> fashion as the result of haggling between political parties representing
> various sectors of Israeli society. Parties representing religious groups
> wanted the start delayed till after Passover and the end to precede Yom
> Kippur, the Day of Atonement, while the secular parties would argue for
> starting it earlier and ending it later.

Sounds like business as usual for a modern 2-party state. What was more
interesting to me, as a programmer, was the next line:

> In the past, the unpredictability of IDT in Israel became frustrating enough
> that Microsoft Windows stopped trying to track changes and just made Israeli
> time be Greenwich Mean Time plus two hours (GMT+2) (and disabled the
> daylight saving option). This has led to various ad hoc solutions to the
> problem in Windows systems and other Microsoft software (e.g. Outlook
> calendar entries are often off by an hour when shared, due to the lack of
> IDT support). On November 17, 2009, Microsoft released an update that has
> daylight saving time enabled for Israel. However, the date for transition
> back to Standard Time is set as the Second Sunday of September, regardless
> of the Hebrew Calendar date.[4] Windows 7 does contain correct IDT times up
> to 2023, but not all software makes use of this extra information.

OK, I know that I'm supposed to just import my system date/time library for
timekeeping functions. Because it's too complicated for mortals like me, while
Microsoft, Apple, Google, and other major institutions can handle all the
inanities.

But Microsoft gave up on this one? Ouch.

------
tzs
"Easter is a feast, not a planet." \--Johannes Kepler

A good reference for anyone who has to write calendar related code is the book
"Calendrical Calculations" by Dershowitz and Reingold [1].

[1] [https://www.amazon.com/Calendrical-Calculations-Nachum-
Dersh...](https://www.amazon.com/Calendrical-Calculations-Nachum-
Dershowitz/dp/0521702380)

------
criddell
The idea of this watch is confounding.

Presumably, a person that is interested in having their watch tell them what
day Easter falls on would be a follower of and believer in Jesus. From what I
know about Jesus, he probably wouldn't be impressed by somebody spending
millions of dollars on this.

What watch would Jesus wear?

Or maybe I'm looking at it wrong. Maybe it's just a great piece of art in the
form of a clock.

~~~
semi-extrinsic
> What watch would Jesus wear?

A Casio F91-W. Durable, water resistant, stopwatch, alarm, calendar, timer ++.
Cost: $6.68. Best selling watch on Amazon.

[https://www.amazon.com/Casio-F91W-1-Classic-Resin-
Digital/dp...](https://www.amazon.com/Casio-F91W-1-Classic-Resin-
Digital/dp/B000GAWSDG)

~~~
jameshart
Why would he need it to be water resistant?

~~~
GregBuchholz
"At that time Jesus came from Nazareth in Galilee and was baptized by John in
the Jordan. Just as Jesus was coming up out of the water, he saw heaven being
torn open and the Spirit descending on him like a dove. And a voice came from
heaven: “You are my Son, whom I love; with you I am well pleased.” "

[http://www.biblestudytools.com/mark/passage/?q=mark+1:9-11](http://www.biblestudytools.com/mark/passage/?q=mark+1:9-11)

...and...

[https://www.google.com/search?q=jesus+helping+peter&tbm=isch...](https://www.google.com/search?q=jesus+helping+peter&tbm=isch&tbo=u&source=univ&sa=X&ved=0ahUKEwiyx9jlqNnTAhXKz1QKHXOED7MQsAQIJQ&biw=812&bih=494)

...so maybe just water / splash resistance, and not a dive watch / water
proof.

------
Animats
What a kludge. They encoded a table in a variable-depth wheel, like the snail
used in striking clocks, but not so regular. The table only has 29 entries.
For a status-symbol complication watch, that's tacky. What does it do if not
serviced? Display "needs service", or wrap around and show wrong values?

------
cafebabbe
Ah, love for needlessly complicated things.

If it's code, it's an engineering flaw, but if it's mechanical, it's a marvel.

~~~
minikites
It's trivial to write complicated code (meaning code that is itself
complicated, not code that handles complicated tasks) and difficult to create
a complicated physical mechanism.

~~~
cafebabbe
Is it though? Is it trivial to write, and maintain, over-engineered code that
actually accomplish its business goals ?

~~~
minikites
You don't think it's trivial to write GOTOs everywhere and paint yourself into
a corner?

Of course it's difficult to maintain, that's why it's considered "an
engineering flaw" like you said.

------
cestith
I suddenly have The Buggles in my head singing "Software Killed the Hardware
Star". The article's subtitle mentions the watch "needs a service". Well, that
service could be CalDav if it was a software timepiece on a digital platform,
and no skilled tradesman with tweezers would be involved.

Yes, a Patek Phillippe is a thing of physical beauty. However, for
functionality like this software wins the day.

~~~
ksherlock
How many Apple Watches will still be functional in 28 years?

~~~
TheOtherHobbes
How many people will have been keeping the same personal calendar data in some
version of CalDav across a selection of different hardware endpoints and
servers?

------
danielam
Interesting article. One note...

"[...] the whole structure of astronomical mechanical complications – whether
in the Strasbourg cathedral clock, or in watches like Caliber 89 – is a
manifestation of a world view."

The idea of a "clockwork universe" is a mechanistic, modern, Enlightenment-era
idea. Astronomical clocks predate that worldview by quite some time.

~~~
pavel_lishin
But people have been watching the skies for a long time, and have been noting
regularities and using them for millennia - at least since the development of
agriculture.

The idea of Celestial Spheres alone dates from greek antiquity.

~~~
lisper
Yes, but until Newton people thought that gods were involved in moving them
around.

~~~
eru
Newton was a supreme weirdo who believed in all kinds of mystical things. If
anything the best Greek scientists like Archimedes were probably more rational
and less inclined to believe in Gods running things.

If you changed you sentence to "but until Leibniz" I'd be more willing to by
it. Even though it's the same time.

------
coldpie
Tangential to this, if you're interested in how the calculation of Easter led
to using cathedrals as astronomical instruments, check out The Sun in the
Church by J.L. Heilbron. Frankly, it's a slog to read at times, but there's
some very fascinating stuff in there, including some impressive engineering
feats.

------
peterkshultz
Astronomical Algorithms by Jean Meeus is a great read for anyone interested in
these types of problems.

------
pcurve
An in depth, partially subbed video on Caliber 89

[https://www.youtube.com/watch?v=CPWCl2FDKe8](https://www.youtube.com/watch?v=CPWCl2FDKe8)

------
ryanmarsh
Sincerely thank you for posting this. I had no idea of these timepieces and I
am in awe of their beauty and sophistication. I think I have a new obsession.

------
BobMackay
Just for completeness, the 1990 paper referred to was by my father, Professor
Alan Mackay, and was published in Modern Physics Letters B, Vol 4, No 15. I
have put up a roughly scanned copy at
[http://bobmackay.com/Alan/AlanCV120.pdf](http://bobmackay.com/Alan/AlanCV120.pdf)
in case anyone is interested.

------
noir-york
A great read! Horology, Ecclesiastical history and lattice structures in one
article. Thanks for posting.

------
sillypuddy
TLDR: Dates and times are hard

------
gertef
Can you use a neural network to discover a formula for Easter date?

~~~
gaius
No

------
Teknoman117
Does anyone know of a video of the easter mechanism of the strasbourg
astronomical clock running on the new year? I couldn't seem to track one
down...

------
gcb0
there are dozen of places where one can link to patents. and even if not, they
have convenient index numbers. why not link/mention the number if you are
going to mention the patent on the article some 20 times?

------
raverbashing
It seems the website is already gone

Edit: it's back up

~~~
joncrocks
As the developer said to the QA tester: "It works on my machine."

------
f_allwein
"the basic rule for Easter is that it falls on the first Sunday after the
first full moon of Spring (that is, the first full moon after the Spring
Equinox)"

Given that the watch knows all these parameters (i.e. day of the week, moon
phase and date (Mar 21 = Spring equinox), would it be possible to construct a
mechanical complication that calculates the Easter date?

~~~
stephen_g
Wouldn't that only mean you'd be able to work out if it is Easter Sunday? So
you could show an indicator on the day but it's a much harder problem to have
it work out the right date for the next occurance from the start of the year
(or from the last Easter Sunday).

~~~
f_allwein
No - there's a finite amount of possible dates (between March 22 and April
25), so every year could have a numeric value for the Easter date that the
pointer could point to.

------
jacquesm
[http://www.paulgraham.com/submarine.html](http://www.paulgraham.com/submarine.html)

