This section enables you to download some of the stuff I've developed over the years. As you can see, I've not been particularly prolific...

Source Code

Name Description

Adventure (550 point version)

Adventure is a C re-write of the 550-point, Fortran77-based, Colossal Cave Adventure, originally written by Dave Platt. In turn, it was based on the Crowther/Woods version. The C re-write was performed by Ken Wellsch. It has been cleaned-up so that it compiles without errors on modern C compilers. Historical note: I played the Fortran77 version of this game on one of the few Sigma 6 mainframes in the UK.

B Tree Library

The B Tree Library provides a UNIX implementation of a lightweight indexed file API. It is based on the B tree indexing scheme. This is version 5.0.1 of the library. The major change from 4.0.0 is a re-implementation of duplicate key handling. The API reference manual is available on-line.

B Tree API Documentation

HTML version of the 5.0.1 API reference manual and the source Docbook XML file.


A pager for the fluxbox Window Manager. This version (0.2.0) will function with fluxbox releases that implement the Enhanced Window Manager Hints (EWMH) specification. It has been tested with fluxbox versions 0.9.14 and 1.1.0. fluxter was originally written by Steven Cooper.


Source code for the MandelZoom app, based on an article by A. K. Dewdney, can be found on Github.

Multi-Anagram Finder

Maf is an anagram solving program. The code presented here provided the basis of the Windows Anagram program (see below). See the man page for more information.

remind 1.3.1

Source code, Makefile and man page for a simple command line reminder program. It's written in C and has no dependencies.

Source code is also available on Github.

rogue 5.8.6

Source code for the (probably) close-to-original rogue game. Compared to modern versions (e.g. Hack), this is for fans of history only. Requires GNU make and a recent C compiler. Tested on Debian 10 (Buster) and FreeBSD 12.


A Common Lisp program to solve sudoku puzzles. When I first heard about sudoku, it struck me that finding the solution to the puzzle was a mechanical process. And indeed it is... And writing the lisp was a lot more fun than solving a puzzle.

You will need access to a Common Lisp implementation to run sudoku.lisp; it's been tested on SBCL, CMUCL and Clisp.

To download the source code as a file, right click on the link and choose "Save Target As..." or equivalent in your browser.

Note: There are much faster Lisp sudoku solvers around; try the comp.lang.lisp newsgroup.

vc 1.3.0

Version Control (vc) is a pre-processor for source files, allowing conditional inclusion of content. It offers the same functionality as the now obsolete vc utility, which used to be available under some Unices. See the man page for more information.

vc includes a C language implementation of a recursive descent parser, implementing expression handling for logical, string and integer types (handling real numbers is left as an exercise for the reader). The parser can be exercised independently of vc.


Source code for the Wator simulation, a predator/prey simulation (another steal from A. K. Dewdney) can be found on Github.

Web Tools

A set of GNU make files and a number of python scripts for validating and publishing web site pages.

Windows Binaries

The Windows programs are available as zip files, containing the binary and a fairly terse README file.

Most are very old and may not work.

Name Description


Anagram determines single-word and/or multi-word anagrams of a given string of characters.


A rewrite of DiskUsage (see below) in C#, using Windows Presentation Framework. Therefore, it will only run on Windows XP SP2 and up.


Provides a similar functionality to that of the UNIX du utility. It uses a tree control to allow a user to easily identify where most disk storage is being used.


Keeps a slave folder structure in synchronisation with a designated master folder structure. The minimal set of updates to the slave structure are made to ensure that it is a complete reflection of the master structure.

Vampires may be unable to see themselves using this program.


cMirror is a command line version of Mirror, so that its function can be automated in scripts et al.