It was a bright sunny day and I was laying under a three walled beach tent in the yard of a friend. He’s known for organizing festival-like music performances on his property and really bringing together some incredible talent. Between a set we got to talking a little bit about some of the odd creations I build and I shared with him a concept I was mulling over for a large wall installation art piece for my house. That was three years ago, and my earliest memory about this piece that I just now completed. At the time my vision was for a grid like pattern of translucent glass tiles that would be programmatically illuminated with Conway’s Game of Life. You can read a little more that I have written about that here if you would like, but I will summarize it like this. John Conway, a mathematician who studied a great number of things, most of which he felt were more important than what he is perhaps best well known for, developed a zero player game. In this “game”, you start with a grid that represents some environment, and each cell of the grid is either Alive or it is Dead. You start by seeding the environment with some living cells, and then the game begins. The rules are simple
- Any living cell with more than three living neighbors dies due to Overpopulate
- Any living cell with less than two living neighbors dies due to Underpopulation
- Any dead cell with exactly three living neighbors comes to life due to Reproduction
The fascinating consequence of these simple rules is that they define a cellular automata that mimics many aspects of actual living environments and populations and how they evolve over time. It looks like this:

Some of my early designs sent me down the path of considering making my own glass tiles and a number of other rabbit holes. Ultimately, I just didn’t like the geometric grid aspect, the aesthetic just wasn’t mine. I was laying on a beach in Maryland under an umbrella last year and was thinking about the aesthetic and had this vision come into my mind of the cells all being glowing gem stones set in an ornate golden wall with snakes coiled around each and every gem. It had a Raiders of the Lost Arc sort of feel to it. While I was on the beach I started to study whether it was possible, and with what constraints, for a path to be constructed around a grid such that it encircles each square crossing each intersection exactly twice (once going horizontal and once going vertical). If you start to consider this you can start to come up with some very trivial approaches, like simply a woven pattern.

But what about a more random pattern? Like a variation of the game of “Snake”, can an algorithm be developed that allows a single snake to travel around a grid seemingly at random, encircling each and every cell and never get “dead-ended” such that it can’t continue without crossing the same point going in the same (or opposite) direction again? It turns out that as long as the grid has an odd number of points on each side, yes, it is mathematically possible! In Graph Theory, this is called finding a Eulerian Path, please feel free to go read about it here because the nuances of it have long ago fallen out of my head. When I got back home from vacation I wrote an algorithm to automatically calculate the path. Here is an example of my 23×23 grid where the path is defined by the sequence of numbers (0-1059):

Next I set out to start trying to 3d model a snake following this pattern. I am way more of a engineering 3d designer using Fusion360 to design mechanical objects not an artistic one creating organic shapes! I opened up Blender and beat my head against it for many weeks, after an extended exercise of futility (one of many) I realized that perhaps I can design a snake but having it route around this path by hand simply was not going to happen, so I took a very crazy step. I am honestly surprised that I even attempted this in retrospect, it is a pretty ludicrous approach… I wrote a custom plugin for Blender! The plugin ran my algorithm to route the snake and as it did the program itself calculated the 3d modeling and plotted the snake path in Blender to wind around the model, all 1059 curves! The craziest part is that I was able to get it to work, and in far less time than I had battled trying to do it by hand never making it more than a dozen are so curves in before failing. Here is that code if anyone might want to peruse it. Here is what the model looked like:

I then leveraged a snakehead that I modified to meet my needs and placed those in the corners (so technically it is four snakes end to end not one).

And then I combined with the model in Fusion360 of the mechanical base and frame aspects of the build. That preceding sentence took over two months before I successfully was able to come up with a technique to construct a manifold object in Blender that I could successfully import into Fusion360 without crashing the software trying to perform the calculations necessary to process it. That was the most painful part of this project by far in large part because in principle it was so simple compared to the extremely challenging problems I had overcome. I celebrated quite a lot after I was able to get it to all merge up!

Once the model was full built I then carved into 9 squares (3×3) and 3d printed it. Each panel took nearly 2 days to print each!

So after weeks of printing I had my panels. In this time I shopped all over to see what it would take to have it electroplated in copper as well as doing some tests of electroplating it myself (that is a whole other topic!)… ultimately I surrendered to the fact that I would use metallic spray paint. I bought a can of many varieties and did some test paints before selecting a Brass paint that I was not too unhappy with. I had also ordered some test 12mm cabochon gem stones and settled on green aventurine because of its internal occlusions and variety that appeared more interesting under illumination. I secured a good discount ordering the huge lot of them that I needed for the 529 individual settings that I need to clean, ream, paint, polish and individually glue in by hand. It was coming together but I needed to make it actually work now! Here is the finished picture for a little context, showing the painted work, but also the framing and a sneak peak at the corner buttons I will talk about shortly! Recognize that this is a massive piece, over 3.5ftx3.5ft!

Interestingly I had not worried too much about the electronic side of the equation for this until the physical aspect was pretty finalized. I of course had considered the spacing on the LED strips for the design, but otherwise had the electronic componentry sitting in a box for close to 2 years before it was time to take it out and consider programming the microcontroller. Given the sheer number of LEDs, their cumulative draw was actually nothing to sneeze at so I secured a nice 5V 40A 200W power supply with a very narrow form factor that worked out great to hide in the space that the large wood frame allowed. It also provided decently clean power to run the microprocessor (Arduino ESP32) as well.

I completed the initial microprocessor development without too much fuss, certainly some issues to overcome, but nothing particularly noteworthy. The added complexity came when I added something that I had in mind for the design all along, four pair of capacitive touch sensors embedded into the corners of the frame! Fortunately the ESP32 supports these types of sensors out of the box but the actions for each of these “buttons” required quite a bit of work! The buttons are actually 18mm round brass caps (used to cover bathroom mirror screwheads).

My goal was to make them so that you could embed them into the frame and touch them to make “something” happen.

I decided to stay in theme by labeling each button with an Egyptian hieroglyphic and then have the action based on the representation. I decided on these :
- Ankh: Egyptian symbol of eternal life, “cross of life.” –> Brings dead to life
- Anubis: Jackal-headed god of mummification, afterlife guide. –> Triggers a random “Apocalypse”
- Bastet: Cat goddess of protection, fertility, home. —> Jumps through the air and knocks stuff down!
- Eye of Ra: Solar symbol of power, protection, divine wrath. –> Power button
- Scarab: Beetle symbolizing rebirth, transformation, creation. –> Changes the speed
- Horus: Falcon-headed sky god of kingship, protection. –> Changes the colors of used on the board.
- Sobek: Crocodile god of strength, fertility, Nile. –> Travels across the board and eats things.
- Thoth: Ibis-headed god of wisdom, writing, knowledge. –> Loads a random starting sequence from an SD Card (haven’t talked about that yet!)








So with the objective in mind I tried out a new technique (with no backup plan!) and I painted the brass caps with a black paint. I then put them under my laser etcher and I etched the symbols onto them. The laser would vaporize the black paint but leave the brass as is. With the fine detail now effectively masked, I soaked the faces of the brass caps in ferrous chloride (an etching solution used to dissolve copper… and probably brass!).


Once they were etched I removed the paint with acetone and installed them into the frame, connecting the leads through it and to the circuit board for the microprocessor. The etching is clearly visible and looks great!

Now came the hard part for the coding, building the logic for each button! I envisioned that each would be an animation that would actually draw pictures across the light array on the board, so I effectively needed to write the code to create an LED television. Worse, I needed to create a “video” format. Worse, I needed to create another desktop program to CREATE my custom “video” format! So let’s step through it and skip a lot of detail.
- I added an SD Card Slot to the piece, it is actually hidden on the side where you can press to pop the card out and update stuff on it. I happened to have an external SD module handy and it was not too bad hooking it up.
- I painstakingly created each of the animations by hand using Piskel, an awesome open source tool. I set the sprite size to 23×23, created each frame, and saved it as a GIF. I even used a reserved masking color allowing me to effectively implement transparency so my animations could take place OVER areas of the board with whatever pattern was otherwise on it.
- I developed a piece of software that would ingest GIFs, read them frame by frame, convert them to a suitable format for me to interpret in my microprocessor code to feed into the LED matrix, and then save it as a custom binary file to the SD card. (yeah, baby, that’s what I’m talking about!)
- I also created an Excel file that would allow me to create another custom (CSV-like) file to communicate patters of living and dead cells, this was needed in coordination with virtually all the buttons.
- Then of course I needed to build out the logic for each button in the microprocessor code and couple it to the animations and csv patterns and such off the SD Card. Also some nuances here on tuning the capacitive touch sensors and a host of other things I am glossing over.
Needless to say, that small list was a project in and of itself. The more I try to explain what this took the more I am leaving out because it truly was a very big build!
Here are the animations, note that the magenta is a mask, meaning anything that color will display whatever is on the board, so it is transparent in affect:
Ankh:

Power On and Off:


Scarab (just going to show one speed, the number changes in the ball):

Sobek (one of my favorites! combined with the CSV file it kills everything in its path):

Bastet (also really fun because after the animation my code finds all the living cells and have them fall as due to gravity to the bottom “tetris style”!)

Anubis has four random apocalypses that animate, kill everything and starts the world over again with a random life:




So here are some pictures and videos of the final product! Note that the orange extension cord is because I haven’t yet installed an electrical outlet on the wall behind the piece.
This is at top speed… gives you a different appreciation for the algorithm: