Cheap Perpetual Calendar

Cheap Calendar.JPG
A quick, handy, geeky, and seriously inexpensive perpetual calendar for your desk.

Got 12 cents and a scrap of cardboard? You’re good to go!

Cut twelve slits, stick in your pennies, and… here it is, all built:
Cheap calendar 2
At first glance, this is about as sensical as one of those crazy watches from Japan.

Looking a little more closely, you can start to see the pattern. There are three columns with three, four, and five pennies in them.

In the three columns, we use heads or tails to spell out a binary number for the day of week, month, and date (day of the month).

(Aside: if you are into this sort of calendar, you might like some of these other interesting designs.)

Here’s a concrete example for the date this article was written, Wednesday, December 31, 2008:
It’s Wednesday, the fourth day of the week. The binary number for 4 is 100. We use “heads” for 1 and “tails” for 0. So the left hand column has (top to bottom) heads-tails-tails = 100 binary = 4th day of week = Wednesday. (If you don’t already speak binary, no biggie. Start here or here and join us in a minute.)

It’s December, month 12, and 12 in binary is 1100, so the middle column is heads-heads-tails-tails. Finally, the last column is all heads, since it’s December 31, and 31 decimal = 11111 binary.

You can, of course, gussy it up a bit beyond the cardboard. (“Be extravagant– use dimes!”)

We built a fancy desktop version of this from laser-cut acrylic, with recessed areas to contain the pennies and cutaways so that you can tip them out easily:
Fancy Calendar
Fancy calendar 2

Finally, we wrote an applet to help you get started; it displays today’s calendar, based on your system clock.

It has glacial but live updating– once per second, and only if the date has changed. If it looks the same as the picture above, you must be viewing this on Wednesday December 31.

(Embedded Java applet follows; you won’t see it if your browser doesn’t have Java installed.)

width=”225″ height=”425″
standby=”Loading Processing software…” >

width=”225″ height=”425″
standby=”Loading Processing software…” >

This browser does not have a Java Plug-in.

Get the latest Java Plug-in here.




The applet is written in Processing; you can download the source code here (16 kB .ZIP file).


25 thoughts on “Cheap Perpetual Calendar

    1. True, it doesn’t fit the definition of a perpetual calendar. It’s technically not even a calendar. Perhaps it just needs a new name.

  1. Is this compatible with Canadian currency, or will the dates displayed be 18% earlier? ;)

    Seriously though, very clever.

  2. Even better from an esthetic point of view, not an economic one, would be to use Othello game pieces white on one side, black on the other.

    Next you’re going to show us how to implement this with colored LEDs, right?

    1. That is a good point– better contrast. Another version of our calendar uses pennies lying flat versus standing up for better quick visibility.

      Hadn’t really considered using LEDs alone for this, but we do have a forthcoming binary clock app for the Meggy Jr RGB that displays month, day, hour, minute, second and syncs to your computer. :)

      Windell H. Oskay

  3. i don’t udnerstand :
    Tail, TAil, head dor wednesday ?
    If it’s 001 it’s 1 so monday
    If it"s 100 it’s 4 so Thursday…

    1. >If it’s 001 it’s 1 so monday
      >If it"s 100 it’s 4 so Thursday…

      As we say above, it’s 100 (head-tail-tail).

      1 Sunday
      2 Monday
      3 Tuesday
      4 Wednesday
      5 Thursday
      6 Friday
      7 Saturday

      Wednesday is the 4th day of the week (at least in the US). If you would like to number the days of your week differently, you are welcome to do so.

      Windell H. Oskay

    2. It’s not ISO compliant. Under ISO 8601, the fourth (100) day of the week is Thursday, not Wednesday.

    3. listen, you got it the wrong way, it didn’t mean 001 but 100, and you have to think that american calendar starts on sunday not on monday, instead of being monday-sunday it is sunday-saturday, so they start on holiday the week and finish it on holiday too, that’s why the 100 is wednesday, hope your doubts are solved.

    4. 001 is Sunday for most English-speaking countries, so 100 would be Wednesday, not Thursday.

  4. And, if you’re lazy, don’t use normal binary digits, but instead use the appropriate Gray codes!

    1. It’s quite simple really, I’ll use 8 bits, or a byte.
      00000000 is 0, and just like with decimal each place has a meaning. The one on the very right is 1, the one to the left of it is 2, the one to the right of it is 4, and so on, doubling each time. So
      00000011 is 3. Another way to write it is 0+0+0+0+0+0+2+1, so that 11111111 is 128+64+32+16+8+4+2+1 or 255. So in this case you wouldn’t have more than five: 00000 so the max is 16+8+4+2+1 or 31. The second column only uses 4 so the max is 8+4+2+1 or 15 which is too much, but there is no simpler way to do it. Of course the first column which uses three has 4+2+1 or 7 as the max.

      1. Ah! Thank you for the simple explanation. :D I’m going to make a pocket one to keep track of the date. ;)

        One thing though – Wouldn’t it be easier to make this calender horizontal instead of vertical?

  5. this was my first project i did completely alone (I’m 11)
    It is awesome!!
    I love math and CS so I thought it would be cool to make something like this. my parents won’t let me handle a soldering iron alone :(

  6. Instead of using a binary place value system, try using a Gray code instead. Each day, you’ll only have to flip one coin!

    (The end-of-week/month/year change will need more flips to reset the Gray code counter, unfortunately.)

    1. omg i never heard of grey code and after reading the wiki on it i now know why (its more confusing than it is a shortcut)… besides, isnt coin twiddling the fun part?

      As a matter of fact im gonna cut mine down to 9 coins and just keep track of what day of the year it is (out of 365) and therefore inCREASE the twiddle factor!

  7. I was thinking of using matryoshka dolls labeled "1", "2", "4", "8", "16", "DATE". But that wouldn’t be as cheap.

    If you really want cheap, and you have some paper clips handy, just write the ten digits on each of a few slips of paper, fold them so that only one digit is showing on each slip, and then use the paper clips to secure them to cardboard.

Comments are closed.