Software Projects

This page lists all software projects of which I am the principal author. Old projects are hosted here on, newer projects are hosted on GitHub.

For old projects, if you want to report a bug please email me directly. You may also hop over to the Bugzilla page to have a look at issues that have already been reported. Please note that although anonymous users may freely browse the bugs database, they may not enter new bugs, nor is it currently possible to register a new account.

For new projects, emailing me directly to report a bug is fine, although I would prefer that you use the GitHub issue tracker.

Little Go iconLittle Go lets you play the game of Go on the iPhone or iPad. You can play against another human (on the same device), or against the computer.

libsgfc++ is a cross-platform C++ wrapper library around SGFC, the SGF Syntax Checker & Converter. SGFC is a command line utility written in C that reads and writes SGF (Smart Game Format) files. By wrapping SGFC's functionality, libsgfc++ transforms the command line utility into a reusable software library that makes the functionality available in the form of an object-oriented API.

SgfcKit is an Objective-C wrapper library around libsgfc++, making the combined libsgfc++ / SGFC functionality available to Objective-C clients.

I originally wrote libsgfc++ and SgfcKit so that I could add SGF parsing and writing capabilities to Little Go (which happened in the 1.6.0 release). However, neither of the two libraries is tied to Little Go in any way, both are standalone projects that are perfectly usable by other clients out there.

dgsmonX is a faceless Mac OS X application (i.e. an application that is not visible in the Dock) that monitors the games you have joined on any number of Dragon Go Servers (DGS) and alerts you when it is your turn to move.
Note: dgsmonX is currently unmaintained and likely no longer works on modern macOS systems.
mkroesti is a hash generator written in Python. mkroesti can be used both as a command line utility and as a web tool. It takes an input (e.g. a file, or a password) and generates different kinds of hashes from that input. The hashes to generate are selected by naming them on the command line, or ticking the corresponding checkboxes in the web GUI. Check out the demo site.
python-aprmd5 is a Python extension written in C that wraps the MD5 routines of the Apache Portable Runtime (APR) Utility Library (libaprutil) and exposes them to the Python interpreter as the module aprmd5. The main purpose of writing python-aprmd5 in the first place has been to expose the function apr_md5_encode(), which generates salted crypt-style hashes using a version of the MD5 hash algorithm that was modified especially for the APR project.
Aqua Crystal Ball iconAqua Crystal Ball is a plugin script for the Gimp. It can be used to create Mac OS X icons with a (surprise!) "Aqua Crystal Ball" effect. The image on the left demonstrates the result of the script with only the "circle color" parameter value changed from the script's default settings.
AceXpander iconAceXpander is a Mac OS X graphical user interface to the unace command line utility. With AceXpander installed, you can simply double-click on any ACE archive in the Finder and the contents of the archive will be extracted to a sub-folder of the same folder where the original archive is located. If you launch AceXpander as you would any other application, it provides a couple of other mildly interesting features for handling ACE archives.
Note: AceXpander is no longer maintained. It stopped working long ago when Mac OS X switched to the Intel platform, because the unace utility that ships with AceXpander is a PowerPC binary. An updated version of the utility is not available because the WinAce project appears to be defunct.