My Software Projects

I enjoy building command-line utilities to automate developments tasks. Lately, I’ve been getting into more web development for fun. This projects list is more or less in order of completion date.


For my masters thesis at GVSU, I built a tool to help manage engineering requirements using version control:

I am no longer actively working on this program, but many people continue to find it useful in their projects.

GR Parks

A local “civic hacking” group, Citizen Labs, started a project with the City of Grand Rapids to display parks millage dollars on a map:

We hope to be able to produce similar maps for other municipalities and explore additional datasets.


Inspired by the pleasant experience of using YAML to store program data when designing Doorstop, I decided to extract some of the core functionality into a library:

I have since used this library as the base for lots of tools. Read more on the blog.


Taking advantage of the data storage provide by YORM, I built a tool to synchronize the state of running applications using a YAML file saved in Dropbox:

I use this program every day to access my music library in iTunes. Read more on the blog.


At several jobs, my team ran into the problem of needing to manage multiple Git repositories and found Git’s submodules feature to be lacking. Out of this need, a new command-line utility arose:

I still use this tool nearly every day to simplify the task of cloning lots of Git repositories for work. Read more on the blog.


See this post for an explanation of how this tool acts as a web server for static sites.


While onboarding new team members, I discovered that ensuring their computers have everything needed to work on the project can be painful. So, I built a command-line program to check the versions of your project’s system dependencies.


When using Slack for communication with colleagues and friends, I found we needed a simple way to create and share memes as links to images. Few of the existing meme generators allowed hot-linking to images, so I build an API to generate memes:

Many chat bots have been written to use the API and the service continues to get around 30k image requests per day. Read more on the blog.


In a Twelve-Factor app running in multiple environments, it can be difficult to determine how each is configured. I build env-diff to essentially be a diff tool for the env command.


The Coverage Space

I try to enable test coverage in all of my projects as a gut check that new functionality has not decreased the overall coverage. To avoid storing the minimum coverage metric in each project’s repository, I build a simple API to track code coverage metrics:

I have already started using this in most of my projects to detect when code coverage decreases. Read more on the blog.

Crowd Sorter

I’ve always been fascinated with how people tend to use ratings as a ranking system. Inspired by other ranking sites, I build a tool to manage lists of arbitrary items and leverage the public to help sort it:

This site was shut down in 2020.

Virtual Boombox

I’ve used for as long as I’ve been into music. Connecting scrobbling data to locations, I built an application to discover music playing nearby:

This site was shut down in 2023.

Meme Complete

Autocomplete for memes via text and speech.


Your playlist for everything.


A restaurant recommendation engine powered by Foursquare.


The spiritual successor to YORM, datafiles is a file-based ORM for Python dataclasses leveraging type annotations for serialization:


In an effort define Page Object Models (POM) without code, Pomace was born:



To improve my work-life balance, I created a tool to automatically log out of Slack workspaces on macOS:


Check out this blog for instructions on connecting this to a Stream Deck.

See a typo? Help me edit this page.