Software

I devote some of my spare time to writing free, open-source software, partly because I've had needs which no existing software met, and partly to offer something of value in return for the free software I use myself. On this page are descriptions of and links to various programs I have written or contributed code to. Each of them is available under some free distribution license (usually GPL or LGPL), as I wish to ensure that the user may modify and distribute the software so long as those same rights are afforded to others.

Maintained

These are programs which I wrote and actively maintain, or projects for which I am currently a developer.

Bones
A secure dice server with web and email interfaces. Bones implements the same interface as random.org, but uses a pseudorandom number generator (of sufficient quality for board gaming) and includes additional features geared at dice rolling.
CBUtils
A group of utilities for manipulating Cyberboard gameboxes and GTL files. CBUtils makes it possible to extract images from Cyberboard Game Tile Libraries or create new GTLs from sets of images. Work on CBUtils has been put on hold until the source code for Cyberboard is publicly available.
mkhexgrid
A utiltity for creating hexagonal grids in PNG, SVG, and PostScript. mkhexgrid is a small command-line program which generates hexagonal grids of the sort used for strategy games. Hex grids can be created as PNG or SVG images, and as PostScript. Virtually every aspect of the output can be be adjusted—from grid line thickness and color, to style and size of hex centers, to the style and position of hex coordinates. I wrote this because I needed a hex grid to overlay a map for a VASSAL module.
Signet
A virtual sealed envelope suite. Permits simultaneous revelation of choices, bids, etc. Signet grew out of the escrow agent I wrote for a game of Empires in Arms. Work on Signet has been put on hold for the time being, pending completion of Bones.
VASSAL
A game engine for playing electronic adaptations of board games. VASSAL is cross-platform by virtue of being written in Java, is more featureful than any other board game engine, and has a large library of modules for popular (and not-so-popular) wargames. I joined the VASSAL Team in the summer of 2006 after abandoning work on my own board game engine, Board.

Historic

These are programs which I wrote but no longer maintain, or projects with which I am no longer involved.

Board
A virtual board for playing board games by email. Now defunct. I started Board at a time when there was no readily-usable cross-platform program for this purpose. These days, VASSAL is better suited for the job. Nonetheless, writing Board was an interesting exercise and was a good excuse to polish my C++ skills and learn Qt. The CVS repository for Board may be found here.
PhpWiki
A WikiWikiWeb implementation written in PHP. I joined the project and did development work on PhpWiki during 2001–2002 and again in 2005. I no longer work on PhpWiki, but others continue to do so.

LaTeX

I use the typesetting package LaTeX on a near-daily basis in my work. Here I have collected various bits of code and advice that I've found useful, in the hopes that others might also.

Useful Hacks

I've been using Linux since 1998, and since then I've written numerous scripts which don't rise to the level of software, and collected various scraps of hard-won knowledge that might be useful for somebody.