A collection of open source projects I have developed.


igir is a platform-independent video game ROM collection manager to help filter, sort, patch, and archive ROM collections. It combines all the best features from other ROM managers together into a neat, intuitive CLI package.

Metalsmith Plugins

I have published a number of plugins for Metalsmith , a plugin-based static site generator originally from Segment , to npm .

All the plugins are managed under one Lerna monorepo at metalsmith-plugins .

Related blog posts:

Docker Images

I have published a number of public Docker images to Docker Hub .

All images have:

  • Been optimized to have the fewest number of the smallest layers possible.
  • High test coverage using Google's Container Structure Test .
  • Base images kept up-to-date by Renovate , with automatic pull request merges.
  • CI/CD using Circle CI for automatic testing and pushing to Docker Hub .


A collection of images with libtorrent compiled, including Python bindings, to be used as a base image for applications such as qBittorrent and FlexGet .

Related blog articles:


A collection of images with a headless version of qBittorrent (qbittorrent-nox) compiled and the web UI exposed.


A collection of images with FlexGet installed and the web UI exposed.

Raspberry Pi Tools

I have written a number of Bash scripts for Raspberry Pi to automate building and installing kernels and drivers from source.


A script to build and install the Raspberry Pi Foundation kernel from source.


A script to build and install the Raspberry Pi Foundation kernel headers from source.

Kernel headers are used for compiling code that interfaces with the kernel, such as drivers.


A script to build and install the Backports Project drivers (formerly compat-drivers) from source.


A script to build and install a Realtek RTL8812AU WiFi driver from source.


A tool to automatically cast audio input from a Raspberry Pi.

FIRST Robotics Competition

I have developed a number of applications for use in the FIRST Robotics Competition , a worldwide STEM competition for high school students.


A Python (CherryPy, ws4py, Genshi) and MongoDB-based web app for both quantitative and qualitative competition scouting . Used by the Hammerheads (226) in the 2017 and 2018 competition seasons.

Built with unreliable client connections as a primary concern, the app makes use of front-end caching and background syncing with web sockets. Designed to make use of team and event data from The Blue Alliance , stored locally for offline use, there is very little work required to get started.


A Python and OpenCV-based vision processing framework designed to run on a coprocessor. Used by the Hammerheads (226) in the 2016 competition season.

Similar to the GRIP and Limelight software, SharkCV was designed to abstract away most of the OpenCV complexity so configuration can be fast and easy. Unlike other hardware solutions, SharkCV running on a coprocessor such as a Raspberry Pi gives many different options for both input and output sources.


A Docker image packaging for the popular parts management web app Cheesy Parts , complete with deployment scripts to host a copy on Heroku .