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:

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:

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.)

type=”application/x-java-applet”

archive=”http://evilmadscientist.com/media/CheapCalendar/CheapCalendar.jar”

width=”225″ height=”425″

standby=”Loading Processing software…” >

codebase=”http://java.sun.com/update/1.5.0/jinstall-1_5_0_15-windows-i586.cab”

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).

That’s not a calendar, is it? It’s just for showing a date.

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.

This type of calendar has actually been around a long time. See also the other links in the article.

—

Windell H. Oskay

drwho(at)evilmadscientist.com

http://www.evilmadscientist.com/

Might be a calendar. Not a perpetual calendar. http://en.wikipedia.org/wiki/Perpetual_calendar

It’s a calendar, a daily calendar.

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

Seriously though, very clever.

>or will the dates displayed be 18% earlier? ;)

Ha!

—

Windell H. Oskay

drwho(at)evilmadscientist.com

http://www.evilmadscientist.com/

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?

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

drwho(at)evilmadscientist.com

http://www.evilmadscientist.com/

i offer a cache of orphan othello pieces? -whitefang

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…

>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

drwho(at)evilmadscientist.com

http://www.evilmadscientist.com/

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

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.

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

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

Very cool. :D

I only wish I knew how to read binary…

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.

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?

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 :(

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.)

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!

Wouldn’t it just be easier to cut out the day of the week?

But didn’t God make sunday the seventh day of the week?

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.