I have written several free software projects, help maintain several projects writen by others, write patches for several free software projects and maintain packages for several pieces of free software.


I've released several software projects and have written a few that are unreleased.


hhm chmdeco chmspec chmtests istorage istorage-makeu indychat pinballcheat clap emxwrapper bezier df3maker xchat scripts ~/bin scripts zwiki to twiki ikiwiki plugins

  • hhm (GPL2): hhm (HTML Help Maker) is a program that makes ITS files and in the future it will also make Compiled HTML Help (CHM) files. Both types of files are a kind of compressed archive format used on Win98, Win2K and other Microsoft operating systems to store documentation.
  • chmdeco (GPL2): chmdeco (CHM decompiler) is a program that converts the internal files of CHM files back into the hhp, hhc, hhk etc used to compile the documentation.
  • chmspec (GPL2): chmspec (CHM specification) is an effort to document Microsoft's Compiled HTML Help files (CHMs), mainly the internal files, since the archive format is documented already.
  • chmtests (GPL2): This is a bunch of proggies to decode the various internal files of CHMs, and report anything interesting in them (read: differing from the format known and documented in chmspec and chmformat.html). This is based on the misc directory in old chm-spec releases.
  • istorage (BSD): This is just a simple Windows proggie to extract files from those pesky MS compound file objects accessible via OLE's StgOpenStorage fuction and the IStorage interface exposed by that function. These compound file objects are created by word, excel, & probably other MS progs. Also Macromedia Flash source files (*.fla - there are some of these available from, which is an interesting site) are these compound files. These compound file objects can be thought of as the equivalent of tar files, but of course MS went & invented some new format without even considering .zip, .lha, .tar.gz, .cab, blah blah blah. One weird thing about them is that the IStreams inside can & for word & excel do have freaky chars in their names, often as the first char such as in word 2000 docs there are streams named "SummaryInformation" (that is an 0x05 - there are also ones with 0x01). MSDEV .opt files are also these compound files. I updated this in April 2002 to extract Compiled HTML Help (chm) files (also known as InfoTech Storage (ITS) files) too. This feature uses the same IStorage interface, but uses an ITStorage (CLSID=5D02926A-212E-11D0-9DF9-00A0C922E6EC) object (from itss.dll) got from CoCreateInstance to open the file. I found out how to do this from these two code samples: and
  • istorage-make (unicode version) (BSD): This is just a simple proggie to create those pesky MS compound file and InfoTech Storage (ITS) files too. It uses the same interfaces as istorage (an extractor for these files).
  • indychat (public domain): this is the code behind, the old page was really crappy, so I wrote the new php version and patched and installed the new chat software.
  • pinballcheat (GPL2): This is a little proggy to help you change the High score table for Microsoft's 3D Pinball game - specifically SpaceCadet but you (or I on request) can easily recompile it for other tables.
  • clap (public domain): clap is a Windows program that monitors the Win32 clipboard and appends each piece of data copied to an internal clipboard, which it then sends back to the Win32 clipboard. The effect is that it seems that each copy operation appends data to the clipboard. Currently only works with the CF_TEXT clipboard format.
  • emxwrapper (public domain): <sys/winmgr.h> & <sys/kbdscan.h> are files from the emx runtime on OS/2. I have created a ncurses/panel wrapper for these files, which means that programs written specifically for these files can be compiled for ncurses/panel on platforms that support these two libraries, such as GNU/Linux, various UNIXes & GNU/Cygwin. It was written on GNU/Cygwin using ncurses & panel so there may be incompatibility issues. There are likely lots of bugs so if it doesn't work try to fix it & send me a diff -u or just complain & I'll try to fix it. It is by no means complete since the program I developed it for (VBinDiff 1.7, which is available at the Hobbes OS/2 Archive) doesn't use all the winmgr.h & kbdscan.h functions & constants. Interestingly, VBinDiff has now been ported to Unix.
  • bezier (public domain): Get my bezier include file that I was using in a space animation. Use the functions HermiteLP, BezierLP, BezierLPTension to load points into the geometry matrix. Use p(u) to get the point, pd(u) to get the derivative, pdd(u) to get the second derivative & pddd(u) to get the third derivative. Other functions return curvature, the principle normal and binormal vectors, torsion (doesn't work quite right yet), and some as yet unfinished macros for orienting objects along the spline & doing banking & stuff. I think the math is right - email me if not
  • df3maker (public domain): a simple proggie to make df3 files for povray. Ported to C++ from the Visual Basic version by Mark James Lewin. His page is down, so it is available here and at
  • xchat scripts (public domain): Some python/etc scripts for xchat that I find useful.
  • ~/bin scripts (public domain): Some scripts I have written for my ~/bin folder that I find useful.
  • zwiki to twiki (public domain): a script to extract some data from zwiki and prepare it for importing to twiki.
  • ikiwiki plugins: The first simply creates id tags for headers based on the text. The second converts site-relative links to page-relative links so you can put an ikiwiki in a subdir of a site.


bugwars manju

  • bugwars: This was a 3D OpenGL/GLUT game about insects and their battles. I planned to research real-world insects and base the game on their interactions. I've since abandoned it, but might play with it again one day in order to relearn OpenGL.
  • manju: A VB mandelbrot program that generated a cool image. I only named it manju years after it was written.


I am a maintainer on these projects that I did not write or initiate:

  • helpdeco: I convinced the author to GPL it, and did the initial package creation.
  • nsis: I did a fair bit of porting to Unix.
  • synfig. Mainly fixing copyright stuff, bug fixing and compile errors.
  • icns: I adopted the icns2png code after it was abandonded.
  • xmp: I requested to be added because it seemed abandoned, and wound up motivating the developers to work on it again.
  • fonttools: I requested to be added because it seemed abandoned.


I have contributed various patches that are pending, not included and included. Other patches to various projects are not listed here.


I've some developed patches for the following packages that are still pending.

mailman cgiirc et al.

not included

  • scite
    • A half complete 133t
    • A patch to make the window title be a reversed path (eg patches.txt\ideas\pabs\:H). This is useful when you have enough windows open for your taskbar to only show part of the filename, but Neil refused to put it into the official distribution. I have diffs against 1.46 and 1.49.
  • imc_aggregator
    • Duplicate checking for each RDF, and between RDFs. Upstream is no longer used, except on, where this patch is used.
  • povray
    • particles (same licence as upstream - will relicence if they change licences): This was based on a project by James Neill - see his projects page. Chris Huff had integrated the ParticlePatch into his MegaPOV+ (with new particle system simulations) and had windows & mac compiles of it at his homepage. Mark Gordon had a Linux compile of MegaPOV+ at his homepage. Also the glow patch in MegaPOV (&MP+) is better but has no refraction.
    • some abandoned patches:
    • I was working on a custom version (Win32 version) that keeps the scene in memory between renders. I attempted to developing the controls used to interface with the scene memory. I have now given up. If you want the sources please contact me.
    • The ObjectCameraPatch progressed slowly - few obj types done-torus, cone/cyl, bicubic, sphere, then I waited for a bit as there was not much interest in the ObjectCamPatch at After that I lost interest in it and moved onto other things.


  • frhed: I developed a whole heap of patches for frhed, all of which are included in v1.1 (the latest version ATM). You can still view the old patch page if you wish.
  • chmlib: A coupla simple fixes.
  • wine: Removed one FIXME that frhed was showing.
  • nsis: Fixed build system on Linux



I'm an official Debian Developer now. Now that I have been approved, I'm thinking that I will get more involved in QA work and start sponsoring new maintainers. More info on my Debian activities is available.

I also maintain debian packages of some of the software I have written, which aren't publically available yet.


I maintain win32 packages of the some software I have written. These packages will be uploaded to their respective download pages.

I used to maintain a crappy build of xchm for windows that ccould be found in the xchm downloads page. I'm no longer working on the win32 build, instead the xchm author (Razvan Cojocaru) is doing the Windows builds.