Sometimes I get the opportunity to collaborate on unique projects that don’t necessarily have to do with engineering.

DOOM was a pioneer of PC gaming, and the nostalgia of watching someone play is undeniable to me. To commemorate the release of the new DOOM game, I had the honor of contributing a play through of DOOM episode 2 (The Shores of Hell) for NewRetroWave’s gaming channel. Here’s the full playlist, including Bryan Eddy and StevePlayGaem’s runs as well.

Rainbow String Lights (and other updates)

Rainbow String Lights

Using an Arduino Micro and some low-level port register writing you can drive TM1803-based tri-color LED string lights. The challenge was getting the timing correct on the output pin. An extra CPU instruction or two introduced from refactoring can throw off the timing since there’s only around 200ns tolerance on the RZ line. Fortunately I had my Tektronix Oscilloscope (pictured, BEBOP) to spy on the signal and nail it down. I may someday use what I learned here to write a faster driver for the TFTv2.

I’m taking a break from Arduino stuff for a while, though and focusing on my bigger projects. I’ve written up a great deal of the protocols and specs for the Distributed Neural Network AI project, including the machine vision, voice recognition, and node setup scripts. The purpose of this project is to have a self-hosted neural network AI that can delegate pieces of its service over Multipath TCP; the goal here is Jarvis meets Siri meets IBM Watson, all hosted on your own consumer hardware. I still have some editing to do so the papers will be published sometime around August. I’ve spent a great deal of time and care working on each individual system and unifying them in a useful way is very challenging.


Atomic ListAtomic is still at the top of my project list. Most of the hard grunt work is finished, which really just leaves synchronization and some UI adjustments left before the initial release. I split synchronization tasks off into a separate tool. This may seem like a weird choice, but there are actually multiple command line tools already–and scheduling synchronization in a cron job or Windows Task Scheduler would be a piece of cake if you could call it without arguments.

I just sent out the first newsletter about this app. If you’d like to hear more updates please sign up on the project page.

My favorite pictures from inside my EE lab

I’ve been curating equipment (and photos) of electronics. Here’s my top 12:

Memory Leak in Xorg (due to Video Drivers)

Run your computer for long enough and you may notice the process /usr/bin/X begins to slowly consume all of your memory.

Well, it’s a known bug. The workaround at the moment comes from Brian Trotter:

Reverting from the fglrx (proprietary) driver to the xserver-xorg-video-ati (open source, tested) driver solved the problem for me.

Going back to the generic driver works too, but then I can’t overclock. This is one I’m choosing to live with until ATI/AMD provides an update.