print("random code")

A picture of the site's author

Over the years I have written many different things in various languages. Largely Python and POSIX shell and most of them are done to the point that they Work For Me™ and solved whatever problem I had at the time.

Patches are welcome, you can find clone and patch instructions on the root page of my git repository.

Microcontroller Projects

Mostly written in C and targeting various Atmel / Microchip microcontrollers. These projects live here.

bar-lighting A custom lighting controller built for my camp at Pennsic War that provides simulated candle light along with some other general lighting throughout our camp site. Uses an ATmega328P and a PCA9633 or PCA9685 PWM controller.
breather There are many implementations of the 'breathing LED', this is one of mine. This one uses an ATtiny85 and pre-computed brightness tables.
led-gadget A bit of a junk drawer of simple LED effects running on PIC microcontrollers. See the README.txt in this folder for a description of the different effects.
sc-ed-clock One of my earliest ATMega328PB projects. This is a clock built around a 5.5" green OLED screen, and a Maxim DS3231M RTC. It features a SSD1322 driver with some rudimentary display routines that allow it to implement a graphical UI. For fun it displays local time, UTC time and the current date in the Elite Dangerous and Star Citizen universes. There is also a small Python script in the tools directory that takes a bitmap and turns it into a suitable .h file for use as a background logo.
sensenet My 915MHz sensor network, featuring several different sensor designs and a base station, built around the RFM69HCW radio modules. I don't trust the Internet of Things so this is my LAN of Things.
serial-keypad I tried streaming once, I wrote a lot of code to make it look reasonable and built a serial keyboard that I interfaced to for scene switching. It's a pretty simple little ATmega32U4 based thing that can be used for all kinds of automation.
tent-lighting I wanted a remote controlled lighting system for my tent. It features bright white and red LED tape inside a hanging fixture. It is driven by an ATtiny85 doing PWM.
usb-vfd I took a Noritake itron VFD and an Atmel ATmega32U4 and hooked them up to the Internet. This is the firmware for that.


A collection of mostly esoteric toys wrapped into Docker containers live here. There is also a README in the repository with more details about them all.

atmelbuilder, builderbase, microchipbuilder
I build the firmware for my microcontroller projects via a git hook and these are the containers that I use to do that. I wrote a blog post about this.
Since I build microcontroller code from a git hook, why not also build containers from a git hook? This does that. I talk about the hooks in the related blog post.
dosbox, lord
I have put several old, nostalgic things in containers for reasons. In this case I put the popular BBS door game L.O.R.D. in one. I had to build a custom version of DOSBOX to make it work. If you are looking to put old DOS games in a container this might be useful.
One of the first things I put into a container when I was originally fooling around with Docker, the DOS version of Elite Plus.
geminid, mollybrown
Gemini is an experimental Internet protocol, similar to Gopher. These are a couple servers for that protocol that I put in containers to experiment with.
netscape-3.04-gold, netscape-4.79-linux
Another early experiment was sticking some old browsers into containers. Hopefully preserving a look into how the Web used to be.
I build microcontroller firmware and Docker containers from git using containers so why wouldn't I also build Z80 assembly binaries? This is a container to do just that using the ZASM assembler.


A collection of Python bits and pieces all packaged up. Usually this means I copied these a bunch of times across several projects. The root of the repository is here.

When I started putting Flask applications into containers I wanted a way to configure them that worked well both inside a container and in the more traditional Apache mod_wsgi context which I still used in production. This is that. I use it in basically all of my Flask apps.
I believe strongly in logging to a central log server. I use syslog-ng as my log server and have everything send logs to it. This is extremely useful. To facilitate this with Flask applications in container and non-container contexts I wrote a bunch of stuff. This is that. It also makes it easy for me to log to a local file while developing and log to syslog in production.
GraphQL is the new hotness for janky webapps built on popular JavaScript frameworks for no real reason. It aims to 'fix' problems with scaling RESTful APIs and seems mostly to be used to obfuscate otherwise publicly facing data on social media websites. I have gotten so many headaches writing the same helpers over and over that I finally threw several into a module to make working with the responses a little easier and to make it a little bit more straightforward to update when things inevitably change.


I really prefer Puppet and most of my stuff is managed by it but it turns out that Raspberry Pis are too slow and have too little memory to reasonably run Puppet so I use Ansible to manage those. This repository has several playbooks, including an ADS-B and UAT feeder to FlightAware, an Airplay speaker, a CUPS Print server, a terminal server that runs my Wyse WY-60 terminal, my ISM sensor network base station, and my Internet connected Noritake itron character VFD.
I wrote a Python program to gather statistics from the internal web page of the Arris SB8200 cable modem so I could send it off to Influx DB and graph it. I then wrote a blog post about it. I got FTTH in 2021 so I have stopped active development but still accept patches.
A script that backs up my iTunes library on my MacBook Pro over rsync over ssh.
A script that backs up my iTunes library.
A script that backs up the iTunes macOS backups of my iOS devices. I mostly use this to make sure I have a copy of my SMS database for processing.
A script that backs up my MikroTik RouterBoard devices running RouterOS.
Various tools for managing my mobile devices. Mostly BlackBerry devices but some stuff for working with backups of iOS devices.
A fork and update of a partial implementation of the BetaBrite LED sign protocol that was originally written by a friend.
I wrote a Nagios plugin to check the status of a NetApp Clustered Data ONTAP system. This uses the NetApp Manageability SDK which is probably not supported anymore. It was able to check general health, disk health, volume space and SnapMirror replication relationships.
I also wrote a Nagios plugin to check the status of the SnapMirror and SnapVault relationships that were running inside a vFiler instance on a NetApp Data ONTAP 7-mode system. This uses the NetApp Manageability SDK which is probably not supported anymore.
This is a collection of trivial utilities and configuration files for various programs including emacs, irssi, mutt, tmux, and vim.
One of my ex-coworkers and I started writing an IRC bot for the internal IRC server we ran at $OLDJOB. Over the years I took it over and still take care of it on a private IRC server that I run. There are lots of ways to make IRC robots and this is how I did it. I have even used it on my Twitch channel when I was screwing around with streaming.
A script to parse a podcast RSS feed and emit a modified version that only contains the episodes you care about. Patreon feeds can often be unmanageable jumbles so this is useful to make custom feeds of only the stuff you care for.
I found myself wanting to generate OpenGraph preview images for the microblog, in large part to make iOS link previews work. This wasn't all that hard, I ended up writing another Azure Function to use pyppeteer (a Python wrapper around Puppeteer) to generate the image. I then wrote a blog post about it.
Inspired by, one of the first open source projects I wrote was a quote database system. Originally developed without version control, it represented the first project I used CVS for. Releases prior to the repository history can be found here. It was written for PHP 4 it is certainly insecure and is almost certainly broken in novel ways.
These started out as a bunch of CGI scripts for transforming some RSS feeds into better RSS feeds and has morphed into an all singing, all dancing middle-finger towards the modern web. It aggregates YouTube, Instagram, Twitter, Tumblr, and Patreon feeds along side several web comics and sites into RSS feeds that I happily read with a regular old RSS feed reader. These days it runs as a Docker container as well.
I used to be into the desktop customization scene and one of the things that's popular there are system info utilities like screenFetch or neofetch that show off your hardware in screenshots. I also used to run large NetApp storage arrays so I wrote a screenfetch for NetApp ONTAP systems.
A lot of people used to harmlessly prank people on their guest WiFi. I chose to intercept all images and rotate them 180°. This doesn't work now with the wide adoption of HTTPS, and I'm less of a jerk these days.
Some scripts I wrote for Tampermonkey to make some web experiences better. Youtube-killfile is probably the most complete.
Vociferate is the internal name of my Random Thoughts microblog. It is built on Azure Functions and I have written at least 4 blog posts about it.
Previously, previously, previously, previously.
I don't log into a Google account ever so I get the generic YouTube home page which is usually fine since I do most of my YouTube browsing via the RSS transmogrifier feed. Sometimes I like looking for something new that is worth watching but more often than not the suggestions are garbage clickbait. I wrote a curses app that lets me fetch the homepage and run it through a killfile as a proof of concept to replace just browsing the homepage.
Turn a YouTube playlist into an audio podcast.
See the related blog post.

iOS / macOS Programs

This was an attempt to turn an old iPad into a digital picture frame. It worked but it turns out that it wasn't worth paying $100/year for the privilege of keeping a device I bought out of a landfill.
One of my first Docker / Flask applications was a system to download a YouTube video and discard the video track. I started with just having a web app frontend but decided to try to build a native iOS app frontend. This is that. It worked but Apple's death grip over the platform made it impractical for me to use so it's been abandoned. It is a reasonable example of a Swift based streaming media player, though.
While I was building the hardware and firmware for the serial keypad for my stream automation software I wanted a way to test the various functions so I wrote a quick macOS app in Swift to interact with the test hardware.

There is even more, some old, all still loved, some even updated! Head on over to and check them out.