I write lots of open-source software in my spare time. Or maybe it would be more accurate to say that I write software to solve my own problems and support my own projects outside of the realm of software, and then I share most of it with others.

I aim to create software that does exactly one thing well and is simple and small, easily understood and maintained by one person and using as few dependencies as possible. My typical development toolkit includes Python, SQLite, Flask, Qt, curses, and the Linux/Unix shell. While I tend to reach for Python when I see a new problem, because I have many years of experience with it and it’s so incredibly easy to start a rapid prototype in, I have also worked in C, C++, Java, Rust, Lua, Lisp, Prolog, PowerShell, Bash, and JavaScript, and I enjoy playing with different languages and paradigms.

See the work page for what I get paid to do during the day.


You can find all these tools on my GitHub page. I keep these roughly in order of polish from most to least, so if you want to judge what I’m capable of, start at the top!


These aren’t my projects, but I’ve helped out with them.

In the pipeline

These projects aren’t publicly available yet, but likely will be once I get them past the alpha stage.