Blog

reinventing chrimbus

reminiscing v0

29-aug-2026

Every year, I ask my friends and coworkers to write patterns to run on the LEDs that light my window from November through January. This system, coined chrimbus, was inspired by this Matt Parker YouTube video. The original version of the project used the same stuff as Parker:

  • Raspberry Pi
  • WS2811 programmable LEDs
  • Holiday cheer
  • Python scripts interacting directly with the Pi's GPIO

These systems and their interactions proved educational to me. Setting up v0 helped me better understand GPIO, geometry, voltage, systemd, and documentation. I didn't really understand the scripts behind the patterns Parker's subscribers submitted, but the basic concept seemed straightforward.

With a decent-ish Python API, writing patterns was not too difficult. However, the caller was in control of timing mechanisms and was exposed to the underlying GPIO interface, if only slightly. This caused a few problems.

The visualizer. One of my very smart colleagues immediately saw the need for a local visualization method. Before this, the project was impossible to develop locally unless the contributor was willing to set up their own LEDs (maybe one day).

The visualizer operated by mocking the GPIO interface in ways I do not fully understand. Later, another very smart colleague improved performance and added hot reloading. However, even after upgrades, it suffered performance issues and occasional freezes.

Authoring patterns via pull requests. Light patterns had to go through a PR approval process. This was annoying for both myself and the contributor.

Python only. Even worse, development was limited to 3.7 to support the Pi's system Python which had access to the pins. What if you want to write your pattern in Typescript? Java? C? VBA?

This year, I plan to solve these problems.


home ยท top