Being a programmer by both hobby and trade, i have an inherent interest in software. These pages contain material relating to my programming projects as well as material for 3rd-party software, which other users of that software might find interesting or useful.
My largest active open source projects are, ordered by the amount of priority they get from me:
  • s11n is an advanced, easy-to-use, general-purposes data serialization framework for C++. It can serialize a huge number of types out of the box and can be "taught" to serialize most client-side types. It may seem rude of me to say so, but the only other C++ serialization framework which i believe can compete with s11n in terms of feature set, power, and flexibility is the Boost serialization library.
  • In 2008 i found a revived interest in C and started work on a number of libraries implemented in C, most of which are hosted over at Examples include a serialization library, an embedded filesystem library, and a PEG parser creation library.
  • QBoard is a Qt4/C++ application for playing arbitrary boardgames, with a focus on ease of game setup and features useful in prototyping custom boardgame designs.
  • v8-juice is a C++ library to assist in extending the Google v8 JavaScript engine. It provides most of the features provided by SpiderApe (see below), but for v8.
  • SpiderApe, a C++ wrapper around the Mozilla Project's SpiderMonkey JavaScript engine. Ape was, for several years, the only full-fledged C++ wrapper for SpiderMonkey (but now there's also Flusspferd), and it makes embedding JavaScript capabilities in C++ applications much, much simpler over using the vanilla SpiderMonkey library. It provides, for example, strong type safety when converting data to/from C++ and JavaScript contexts, which is a feature sorely lacking in SpiderMonkey. Ape also provides the world's first free JavaScript bindings for ncurses and sqlite3.
  • While the 'toc' project may not seem to be very active, i do in fact use those build tools for nearly all of my source trees (and for all other trees i use shake-n-make). toc ("the other ./configure") was designed way back in 2002 or 2003 to replace GNU Autotools in my source trees because the Autotools are such a major pain in the ass to maintain. toc is "portable across Linux-like distributions", rather than trying to be portable to every platform, and provides a simple, maintainable, and highly extendable way to manage build trees on platforms hosting GNU toolsets. Unlike Autotools, toc is designed to live in the source tree it builds, making it effectively immune to problems related to system-wide software updates (traditionally, each time the Autotools get updated programmers worldwide collectively spend tens of thousands of hours fixing their build trees).
i maintain a handful of mini-projects as well. Some of those can be found in the navigation menu of this page and some can be found over on (though much of that material will be gradually migrating to this site).