Occasionally I am moved to write code. When this happens, it is usually in the form of a plugin or extension to some piece of existing software. A good number of my more mature/older projects are listed here, but I also contribute to several third-party projects on a semi-regular basis.


sopel (formerly willie) is a Python-based IRC bot framework. I started running it sometime in 2014, and have since written or updated a number of modules for it.

In roughly alphabetical order:

Query for anime airtimes with filtering by title and station (emulation of a Java module for Pircbotx).
Plant and defuse bombs on other users in the channel (forked and improved from an existing module).
Companion module for (most of) my games for sopel that allows merging users together in such a way as to preserve their stats.
Lets users duel each other (emulation of a preexisting mIRC script).
Performs Japanese–English dictionary lookups using’s public (but basically undocumented) API.
Karma-type module that lets users “luv” and “h8” each other (emulation of a mIRC script).
Lets users play Russian roulette (emulation of a mIRC script).
Proof of concept to let sopel receive text through TCP connections and send it out to IRC. Intended to be forked and extended for specific use cases.
Provides UNO games via IRC on a per-channel basis (originally based on an existing module for a predecessor of sopel called Phenny).
sopel’s built-in Wolfram|Alpha support was removed when the company instated an API key requirement. I was the first person willing to take and package existing third-party code for distribution on PyPI. My first PyPI module, and first sopel module to have proper releases. Co-maintained with the original code’s author.
Fetch quotes from the xkcdb quote database.
Nuisance module I threw together one night to bother people who try to pronounce my nickname phonetically.


YOURLS is a self-hosted URL shortener, an alternative to using one of the big names like TinyURL or Bitly. I installed it in September 2011, after getting a short domain name, and have since used it for almost all of the short links I need for Twitter/Facebook/SMS messages.1

Don’t Track Admins
Does what it says: It suppresses click tracking of logged-in YOURLS admin users. This is by far my oldest project featured here; the first version was committed on September 18, 2011.


  1. A big motivator for this was wanting control of my own links. Much of my Twitter archive, for example, is largely useless because I used links for their brevity and for the clever domain name. The service shut down without publishing the link database anywhere, and the mappings are now simply gone. []

Comments are closed