I’ve written a lot of things—all can be found on my github—however these are the ones that are of particular interest, or that I’m particularly proud of.


  • What? A Windows utility for swapping your mouse buttons with one click
  • Where?
  • Why? Swapping mouse buttons requires too many clicks

Swapper is a small tray utility which swaps your primary mouse button when clicked, and gives a visual indication of the current primary button with the tray icon. I use a mouse both left and right handed—depending on the device and task—and having to open Windows Settings to switch was onerous.

The code is open source, or you can download a pre-built release from the project’s releases page. It should work on any modern version of Windows.


The original code for primes is some of the worst I’ve written; it’s a CoffeeScript project, written before I decided to like Javascript. It was also the first-ish thing I wrote for Node.js. But: one of the most successful?

I wrote primes when thinking of twitter-as-database, but where it landed isn’t exactly that. Still; the bot itself is completely stateless; it only knows where it left off by retrieving its last tweeted prime number from Twitter. To start it, I manually tweeted 2 from the website, and started the bot.

Since then, it’s amassed over 26,000 followers. Neat.

I later re-wrote it to run twitter and mastodon from the same codebase.


  • What? A developer’s tool for writing fake/mock services
  • Where?
  • Why? Development environments can be painful; let’s make them easier

frock is one of the most useful things I’ve ever written. Urban Airship is a microservice architecture, and the product I work on has the distinction of needing to talk to the most services. frock was written to keep my team’s development environment sane. Born out of previous tools that handled only small aspects of our requirements, I set out to design a plugin-based tool that was painless to write new fakes/mocks with, with generic plugins for common needs.

It was written with Open Source in mind, so the full commit history is available. I’m also particularly proud of the docs.

It’s been a great help to my team, and I hope others find it useful.


  • What? A DNS server for your local network which uses Google’s DNS-over-HTTPS for lookups, masking DNS queries from your ISP
  • Where?
  • Why? DNS is not a secure protocol, this is one possible solution to the problem

secure-operator is a DNS proxy server. What makes it different from usual DNS proxies is that it performs all its DNS lookups over HTTPS, meaning they cannot be snooped on by parties outside your local network. This is great if you don’t like the idea of your ISP tracking the websites you visit.

I mention it’s one possible solution to the problem, others exist but suffer from a different issue: unreliable servers, and not necesarily in the “uptime” sense. You don’t really know who’s running these other services either, so why not trust Google?

secure-operator has been well received, made the rounds on a number of Golang newsletters, and has been running reliably in my home for months. The number of downloads it receives indicate it might be working well for others too.