Bookaroo is a supervision-booking system based around CGI scripts written in Python. The data is stored in a human readable (though not pretty) XML file. An auxillary script generates reports from the data.

If you install and use Bookaroo, please let me know.


UnityWiki is a small, relatively simple Wiki written in Python, and based on PikiPiki. It's already useful, but I've yet to package it up or provide any useful documentation.


Newfile is my first (and, to date, only) substantial Perl script. It's job is fairly trivial, but incredibly handy; it creates files based on templates. It looks for a file called .template.XXX (where .XXX is the extension of the file you're trying to create), and then uses this as the basis of the new file. The .template files can contain arbitrary Perl code to execute, variables are expanded, and you can specify a template explicitly if the correct one can't be determined from the extension. For more details, see the comment at the start of the script.

The following archive contains the script, plus several example templates. There are a couple of minor bugs, but nothing show-stopping; I've been using the script basically as is for four years now, and it's proved more useful than annoying.

Blosxom Plugins


I've written a few plugins for Blosxom, the software I use to generate this site.


CLOTH: The Command Line Option Templates Header, a C++ library (provided in the form of a single header file) for parsing command line arguments. The nice thing about this is that you simply declare the options your program takes as variables, call the parser to fill them in, and then use them as if they were constants.



SilverService is a Mac OS X application that combines the power of the Unix command line with the convenience of the Services menu. It has its own page.

Power By Blosxom Get Firefox Creative Commons License: TEXT ONLY
Thu, 16 Oct 2003

Licensing Rant

The software on this site is licensed under a variety of OSI-approved open source licences. UnityWiki is unambiguously a derivative work of PikiPiki, which is covered by the GPL, and hence is distributed under the same licence. The two original projects, Bookaroo and Newfile, are licensed under the MIT Licence (basically equivalent to the advertising-clause-free version of the BSD licence).

Ideally, I'd like to distribute things under a slightly more restrictive licence; one that forced derivative works to be licensed under similar terms, but didn't impose any restrictions on other work that is merely combined with it in the way that the GPL attempts to (I think that the GPL is on shaky ground there, as it seems to try and extend the definition of "derivative work", but in any case I'd rather have a licence that explicitly permitted distribution of combined works under different terms).

The LGPL is sort of right, but I don't like the wording; it seems overly complicated, and overly specific in places (for example, it uses the words "object files" - not a useful concept if you're trying to licence software written in Python, or even Java). Apparently, the Mozilla Public License 1.1 would do what I want, but according to the Free Software Foundation it's not compatible with the GPL, and the resulting restriction is as bad as a restriction to only link with GPL-compatible software. The Mozilla project themselves get round this with a triple-licensing approach (MPL/GPL/LGPL), but that seems a bit messy. Hence, as BSD-style licence seems to be the best bet for now - it also has the advantage that it doesn't limit your options in the future. Maybe this is the way to go long-term; after all, I'm not trying to push any free-software agenda or anything. It'd just be nice to ensure that improvements to the software could be incorporated back in to the main tree.

If you've got any suggestions or comments about this issue, I'd be glad to hear them.

2002 (38): Jan (3) Feb (1) Mar (6) Apr (2) MayJun (3) Jul (4) AugSepOct (6) Nov (9) Dec (4)
2003 (40): Jan (1) FebMar (3) Apr (2) MayJun (1) Jul (1) AugSep (7) Oct (14) Nov (5) Dec (6)
2004 (23): Jan (4) Feb (1) Mar (3) AprMay (5) Jun (1) JulAug (2) Sep (4) Oct (1) Nov (2) Dec
2005 (19): Jan (2) Feb (2) MarAprMay (4) Jun (1) Jul (1) Aug (2) Sep (4) Oct (3) NovDec
2006 (4): JanFeb (2) Mar (1) AprMayJun (1) JulAugSepOctNovDec
2007 (1): Jan (1) FebMarAprMayJunJulAugSepOctNovDec