Lunar calendar valet tray

I haven’t posted anything for a while and thought I’d share this lunar calendar valet tray. The idea comes from an small and similarly abacus-styled calendar I saw exhibited in a sub-basement of the Smithsonian’s Museum of African Art in 2019. This calendar came from the Swahili Coast of Africa and was probably for tracking the Hijri calendar. It stuck with me—I think it makes a neat way to keep an eye on a natural cycle—and finally I decided the idea could be grafted onto a bedside tray.

Anyone who frequents the forum will guess from the design that I’ve been wanting to try out @evansd2’s butt-jointed corners (ex), and they’d be right! The woods are wenge and aspen, and those are howlite beads on a stainless steel rod. The tray is lined with cowhide.

Lunar cycles average 29.53 days long, and there are 29 tusk point beads on the bar. The wooden bead on the right is a device for rounding out a cycle. Here’s how you use it:

  1. On the day of a new moon, start with all white beads on the left, moving one bead per day toward the right. When the beads are split roughly evenly between the two uprights, it’s likely that the moon is full.
  2. Continue moving the beads to the right. After roughly one lunar cycle, as the moon is new again, all of the white beads will have been moved to the right side.
  3. You then move the white beads back toward the left, one per day until all of the white beads are on the left again. At this point 58 days have gone by (29 x 2).
  4. On the next day, move the round wooden bead to left and then back to the right, in lieu of moving a white bead. This makes every two cycles we’ve counted with the beads add up to 59 days total, i.e. 29.5 x 2, about as close as we can get to the average lunar cycle length with simple counting.

And the next day, you repeat again from 1. Eventually, the count will get increasing off from reality, since lunar cycles only average 29.5 days. But the goal is to get you looking up at the sky, and you can use your observations of the cycle to correct the counters!

40 Likes

Thanks for sharing this project. I learned so much while admiring the tray. The materials you used complement one another very well.

9 Likes

Very creative and unusual! Lovely materials, excellent details! You must have spent a lot of time on this.

9 Likes

Looks great

6 Likes

Very interesting, and I love your design!

6 Likes

This is just amazing. Thanks for writing up the cycle!

6 Likes

It is beautiful! The contrast of the two woods is so striking. Not to mention using the beads to track the moon. Beautiful project!

7 Likes

That is stunning! Your butt joins are of the caliber of @evansd2 planar butt jointing and I SO aspire to get there.

WOW. I adore it.

8 Likes

Well done, I’m in awe of those butt joins.

6 Likes

Thanks for reading! Actually, you might be interested to see the script I used to simulate the bead count once I’d figured out the sequence. It’s not pretty code or anything, but it might be interesting. Basically, given start and end dates to simulate, the script picks out the new and full moon dates and simulates what the arrangement of the beads will be on that date. It gave me a sense both for how regular the cycles were and how quickly drift would bring the counter out of “phase” with the actual lunar cycle.

Python Script
# Dependencies 
import datetime

from skyfield import almanac
from skyfield.api import N, S, E, W, load, wgs84

# Initialize requirements to do almanac calculations
# Skyfield almanac documentation: https://rhodesmill.org/skyfield/almanac.html

ts = load.timescale()
eph = load('de421.bsp')
sun = eph['Sun']

# Function to count beads based on a running count of all days passed.
# The number passed in is the total number of iterations (days passed)
# since the count began.

def bead_count(iteration):
    total_beads = 29
    full_cycle = 59
    floating_beads = 1
    # Determine the effective iteration within a full cycle of 59 iterations
    effective_iteration = iteration % (full_cycle)

    if effective_iteration <= total_beads:
        left_side = total_beads - effective_iteration
        right_side = effective_iteration
    else:
        left_side = effective_iteration - total_beads
        right_side = total_beads - left_side
    if effective_iteration == 0:
        right_side = str(effective_iteration) + "*"

    return left_side, right_side, effective_iteration

# Define start and end dates for comparison of lunar cycle with bead count
# The start_date should be the day of a new moon. Use the lunar phases tool from the
# U.S. Naval Observatory to decide when to start: https://aa.usno.navy.mil/data/MoonPhases

start_date = datetime.date(2024, 6, 6)
end_date = datetime.date(2025, 6, 30)

# Seek out the day for each moon phase between the provided start date and end date,
# and store the resulting date/times in the `t` array.

t0 = ts.utc(start_date.year, start_date.month, start_date.day)
t1 = ts.utc(end_date.year, end_date.month, end_date.day)
t, y = almanac.find_discrete(t0, t1, almanac.moon_phases(eph))

# Iterate over `y` and `t` to find those dates when the moon is new and full
# See https://rhodesmill.org/skyfield/almanac.html#phases-of-the-moon

new_moons = []
full_moons = []

for i in range(len(y)):
    if y[i] == 0:
        new_moons.append(t[i])
    if y[i] == 2:
        full_moons.append(t[i])

# Print the date and bead count for each moon phase, based on the total
# number of days elapsed since the start date.

def print_moon_phase_dates_and_differences(moon_phases, phase_name):
    for phase in moon_phases:
        phase_date = phase.utc_datetime().date()
        difference = (phase_date - start_date).days
        print(f"{phase_name} Moon Date: {phase_date}, Bead Positioning: \
{bead_count(difference)[0]}--{bead_count(difference)[1]}")

# Print the dates and differences for new moons and full moons
# An asterisk indicates that the rounding bead is moved on that day.

print_moon_phase_dates_and_differences(new_moons, "New")
print_moon_phase_dates_and_differences(full_moons, "Full")
Script Output (asterisk indicates that the rounding bead is moved that day)
New Moon Date: 2024-06-06, Bead Positioning: 29--0
New Moon Date: 2024-07-05, Bead Positioning: 0--29
New Moon Date: 2024-08-04, Bead Positioning: 29--0*
New Moon Date: 2024-09-03, Bead Positioning: 1--28
New Moon Date: 2024-10-02, Bead Positioning: 29--0*
New Moon Date: 2024-11-01, Bead Positioning: 1--28
New Moon Date: 2024-12-01, Bead Positioning: 28--1
New Moon Date: 2024-12-30, Bead Positioning: 1--28
New Moon Date: 2025-01-29, Bead Positioning: 28--1
New Moon Date: 2025-02-28, Bead Positioning: 2--27
New Moon Date: 2025-03-29, Bead Positioning: 28--1
New Moon Date: 2025-04-27, Bead Positioning: 1--28
New Moon Date: 2025-05-27, Bead Positioning: 28--1
New Moon Date: 2025-06-25, Bead Positioning: 1--28
New Moon Date: 2025-07-24, Bead Positioning: 29--0*
New Moon Date: 2025-08-23, Bead Positioning: 1--28
New Moon Date: 2025-09-21, Bead Positioning: 29--0*
New Moon Date: 2025-10-21, Bead Positioning: 1--28
New Moon Date: 2025-11-20, Bead Positioning: 28--1
New Moon Date: 2025-12-20, Bead Positioning: 2--27
New Moon Date: 2026-01-18, Bead Positioning: 28--1
New Moon Date: 2026-02-17, Bead Positioning: 2--27
New Moon Date: 2026-03-19, Bead Positioning: 27--2
New Moon Date: 2026-04-17, Bead Positioning: 2--27
New Moon Date: 2026-05-16, Bead Positioning: 28--1
New Moon Date: 2026-06-15, Bead Positioning: 2--27
New Moon Date: 2026-07-14, Bead Positioning: 28--1
New Moon Date: 2026-08-12, Bead Positioning: 1--28
New Moon Date: 2026-09-11, Bead Positioning: 28--1
New Moon Date: 2026-10-10, Bead Positioning: 1--28
New Moon Date: 2026-11-09, Bead Positioning: 28--1
New Moon Date: 2026-12-09, Bead Positioning: 2--27
New Moon Date: 2027-01-07, Bead Positioning: 28--1
New Moon Date: 2027-02-06, Bead Positioning: 2--27
New Moon Date: 2027-03-08, Bead Positioning: 27--2
New Moon Date: 2027-04-06, Bead Positioning: 2--27
New Moon Date: 2027-05-06, Bead Positioning: 27--2
New Moon Date: 2027-06-04, Bead Positioning: 2--27
New Moon Date: 2027-07-04, Bead Positioning: 27--2
New Moon Date: 2027-08-02, Bead Positioning: 2--27
New Moon Date: 2027-08-31, Bead Positioning: 28--1
New Moon Date: 2027-09-30, Bead Positioning: 2--27
New Moon Date: 2027-10-29, Bead Positioning: 28--1
New Moon Date: 2027-11-28, Bead Positioning: 2--27
New Moon Date: 2027-12-27, Bead Positioning: 28--1
New Moon Date: 2028-01-26, Bead Positioning: 2--27
New Moon Date: 2028-02-25, Bead Positioning: 27--2
New Moon Date: 2028-03-26, Bead Positioning: 3--26
New Moon Date: 2028-04-24, Bead Positioning: 27--2
New Moon Date: 2028-05-24, Bead Positioning: 3--26
New Moon Date: 2028-06-22, Bead Positioning: 27--2
New Moon Date: 2028-07-22, Bead Positioning: 3--26
New Moon Date: 2028-08-20, Bead Positioning: 27--2
New Moon Date: 2028-09-18, Bead Positioning: 2--27
New Moon Date: 2028-10-18, Bead Positioning: 27--2
New Moon Date: 2028-11-16, Bead Positioning: 2--27
New Moon Date: 2028-12-16, Bead Positioning: 27--2
New Moon Date: 2029-01-14, Bead Positioning: 2--27
New Moon Date: 2029-02-13, Bead Positioning: 27--2
New Moon Date: 2029-03-15, Bead Positioning: 3--26
New Moon Date: 2029-04-13, Bead Positioning: 27--2
New Moon Date: 2029-05-13, Bead Positioning: 3--26
New Moon Date: 2029-06-12, Bead Positioning: 26--3
Full Moon Date: 2024-06-22, Bead Positioning: 13--16
Full Moon Date: 2024-07-21, Bead Positioning: 16--13
Full Moon Date: 2024-08-19, Bead Positioning: 14--15
Full Moon Date: 2024-09-18, Bead Positioning: 16--13
Full Moon Date: 2024-10-17, Bead Positioning: 14--15
Full Moon Date: 2024-11-15, Bead Positioning: 15--14
Full Moon Date: 2024-12-15, Bead Positioning: 14--15
Full Moon Date: 2025-01-13, Bead Positioning: 15--14
Full Moon Date: 2025-02-12, Bead Positioning: 14--15
Full Moon Date: 2025-03-14, Bead Positioning: 16--13
Full Moon Date: 2025-04-13, Bead Positioning: 13--16
Full Moon Date: 2025-05-12, Bead Positioning: 16--13
Full Moon Date: 2025-06-11, Bead Positioning: 13--16
Full Moon Date: 2025-07-10, Bead Positioning: 16--13
Full Moon Date: 2025-08-09, Bead Positioning: 13--16
Full Moon Date: 2025-09-07, Bead Positioning: 16--13
Full Moon Date: 2025-10-07, Bead Positioning: 13--16
Full Moon Date: 2025-11-05, Bead Positioning: 16--13
Full Moon Date: 2025-12-04, Bead Positioning: 14--15
Full Moon Date: 2026-01-03, Bead Positioning: 16--13
Full Moon Date: 2026-02-01, Bead Positioning: 14--15
Full Moon Date: 2026-03-03, Bead Positioning: 16--13
Full Moon Date: 2026-04-02, Bead Positioning: 13--16
Full Moon Date: 2026-05-01, Bead Positioning: 16--13
Full Moon Date: 2026-05-31, Bead Positioning: 13--16
Full Moon Date: 2026-06-29, Bead Positioning: 16--13
Full Moon Date: 2026-07-29, Bead Positioning: 13--16
Full Moon Date: 2026-08-28, Bead Positioning: 17--12
Full Moon Date: 2026-09-26, Bead Positioning: 13--16
Full Moon Date: 2026-10-26, Bead Positioning: 17--12
Full Moon Date: 2026-11-24, Bead Positioning: 13--16
Full Moon Date: 2026-12-24, Bead Positioning: 17--12
Full Moon Date: 2027-01-22, Bead Positioning: 13--16
Full Moon Date: 2027-02-20, Bead Positioning: 16--13
Full Moon Date: 2027-03-22, Bead Positioning: 13--16
Full Moon Date: 2027-04-20, Bead Positioning: 16--13
Full Moon Date: 2027-05-20, Bead Positioning: 13--16
Full Moon Date: 2027-06-19, Bead Positioning: 17--12
Full Moon Date: 2027-07-18, Bead Positioning: 13--16
Full Moon Date: 2027-08-17, Bead Positioning: 17--12
Full Moon Date: 2027-09-15, Bead Positioning: 13--16
Full Moon Date: 2027-10-15, Bead Positioning: 17--12
Full Moon Date: 2027-11-14, Bead Positioning: 12--17
Full Moon Date: 2027-12-13, Bead Positioning: 17--12
Full Moon Date: 2028-01-12, Bead Positioning: 12--17
Full Moon Date: 2028-02-10, Bead Positioning: 17--12
Full Moon Date: 2028-03-11, Bead Positioning: 12--17
Full Moon Date: 2028-04-09, Bead Positioning: 17--12
Full Moon Date: 2028-05-08, Bead Positioning: 13--16
Full Moon Date: 2028-06-07, Bead Positioning: 17--12
Full Moon Date: 2028-07-06, Bead Positioning: 13--16
Full Moon Date: 2028-08-05, Bead Positioning: 17--12
Full Moon Date: 2028-09-03, Bead Positioning: 13--16
Full Moon Date: 2028-10-03, Bead Positioning: 17--12
Full Moon Date: 2028-11-02, Bead Positioning: 12--17
Full Moon Date: 2028-12-02, Bead Positioning: 18--11
Full Moon Date: 2028-12-31, Bead Positioning: 12--17
Full Moon Date: 2029-01-30, Bead Positioning: 18--11
Full Moon Date: 2029-02-28, Bead Positioning: 12--17
Full Moon Date: 2029-03-30, Bead Positioning: 18--11
Full Moon Date: 2029-04-28, Bead Positioning: 12--17
Full Moon Date: 2029-05-27, Bead Positioning: 17--12
Full Moon Date: 2029-06-26, Bead Positioning: 12--17
5 Likes

Thank you! I found there were three key pieces. It may or may not help to lay them out:

  1. The hardest part is probably designing the joins, and I think I chose an easier route than @evansd2’s trays generally do (he’s got those elegant swirly shapes!)
  2. It was important to dial in the right kerf measurement and use that to offset the shapes in the design file to ensure that, after cutting, they have a tight fit. In Inkscape, that meant using the Offset Path Effects tool.
  3. Finally, sanding. After gluing the butt-joins so that I had four flat pieces, I used a sheet of cheap birch plywood to make a kind of sanding jig–basically, just cut voids the same size as the glued-up tray sides. The wenge and aspen were slightly thicker so they stood 0.5-0.75 mm proud of the birtch, and I could use an orbital sander to sand all four sides at once.
9 Likes

Gorgeous! Wenge is one of my favorite woods to use, its color and grains are so gorgeous in person. Great job!

7 Likes

Thank you, I appreciate the comment! It did in fact take quite a bit of time, though putting it together was fast! What took the longest was deciding on the beads to use–I had a specific idea in mind and didn’t want to compromise on that. I couldn’t find the shape and size I wanted at first, and then just let it sit for a year. When I came back to it, they were easy to find. I then had to try to find ones that could fit on a 1.5 mm rod (minimum). These almost worked, but I actually had to drill them out a bit to make them work. Luckily, howlite is soft so a little cordless drill worked fine. (During the year of waiting, I figured out how to cut a similar shape out of acrylic, with a taper and a prismatic point at the end. But I really wanted to use natural materials as much as possible, so plastic was out.)

And next was design. I let it germinate a long while, and tried out a bunch of different approaches before sitting down with Inkscape.

And then deciding how to make the bead counting work, and testing that with a simulation to be sure it was adequate.

But all of it was fun, so no complaints!

7 Likes

The process is the same for any type of shape, so don’t sell yourself short. What you did is every bit as tricky as what I did, and executed at least as well.

For the trays that I’ve done in the past, the one that I think was probably the most technically difficult and ended up being my favorite was this one:

I do love a good tray and yours is outstanding.

9 Likes

Me too! Its strength and density are really useful at the thicknesses you can practically cut with a Glowforge. Thanks for the kind words.

4 Likes

Thank you for the kind words. And I really like the way you combined inlay and butt-jointing in the honeycomb tray!

6 Likes

Oh, gorgeous! I love this unique project.

7 Likes

Wow this is so cool!!

5 Likes

this is beautiful. the aspen and wenge look great together. 2 of my favorite woods but I never thought to put them together.

5 Likes