The most notable software that I have written include the following. For some projects Mercurial repositories are available on Bitbucket. For older projects, which used the more advanced Darcs version control system, the last releases may be downloaded at the end of this page. (I will not touch the epitome of masochism in user interface design known as Git with a long stick; git commit -completely-unusable-and-unnecessary-a, did the developers just shoot their brains out?)

Ion (2000–2009)

Ion is a tiling tabbed X11 window manager designed with keyboard users in mind. It was one of the first of the “new wave" of tiling windowing environments (the other being LarsWM, with quite a different approach), and has since spawned an entire category of tiling window managers for X11— none of which really manage to reproduce the feel and functionality of Ion. Even the Split View in recent incarnations of Apple's OS X finally introduces a type of tiling into a mainstream operating system—but crucially without tabbing, thus offering severely limited usability compared to Ion.

Adapted from the original “Ion manifesto”:

Mouse-based search-and-click interfaces simply are not efficient except for some very specialised tasks and in other cases involve lots of tedious repetitive clicking and searching. While most widget-based graphical user interfaces provide keyboard shortcuts to some operations, these are often sub-optimal – for example, commands can often be superior to cryptic shortcuts – and the general application design still makes them difficult to use from the keyboard. For example, tabbing through dialog entries is difficult if the dialog is laid out in a complex fashion. Most command line and other text mode programs are simply much more usable once you get used to them, but are limited in their output capabilities. (That said, the Trackpoint pointing device, which is basically a part of keyboard, a nub between the G and H keys, mitigates some of the problems with pointing-based interfaces. It is however not found on most computers, and does not help with the hunt-and-peck aspect of the interfaces.)

Similarly it is difficult to navigate through an unorganised stack of application windows, also using the mouse. In most common window managers and operating systems it is usually left for the user to attempt to keep the windows organised instead of the window manager. As a result the user often ends up in a jungle – or at the desk the overlapping window paradigm tries to emulate. Usability simply does not equal reproducing real world paradigms in computer user interfaces.

Ion screenshot

Ion was written as an experiment on a different kind of window management model. It tries to address the navigation problem by dividing the screen into mutually non-overlapping frames that take up the whole screen. Big displays have so much space that this should be convenient and smaller displays couldn't show more than one window at a time anyway. Given the organised tree based instead of an unorganised coordinate-based frame layout, moving between the frames can be conveniently done from the keyboard. The frames may have multiple clients attached, each indicated by a tab, further increasing the organisational capabilities.

The last version of Ion may be downloaded below, but none of this software is being developed or maintained anymore. I have found more worthwhile hobbies and switched to MacOS, disappointed with the “free software” movement that, wallowing in unoriginality, does not seem capable of providing a real alternative to Windows/MacOS (as opposed to a bug-ridden clone complete with a centralised software distribution mechanism).

PWM screenshot

PWM (1999–2001)

PWM was the predecessor of Ion; the first window manager to introduce tabbing (cf. “tabbed browsing”) at the window manager level. Since then this has become quite a popular organisational feature in window managers.

Riot (2004–2008)

Riot is an Information Organisation Tool, in other words an outliner, modelled after the mutt mail client. Riot is written in the purely functional programming language Haskell.

Lgen (2009)

Lgen is a simple website templating engine written in Lua, used to generate this website. The Mercurial source repository is available on Bitbucket.

dticode (2012–2014)

Originally started out as a project for doing second-order Total Generalised Variation (TGV2) diffusion tensor field denoising, this is an efficient C implementation of the Chambolle–Pock algorithm (PDHGM) for a range of Total Variation (TV), Total Deformation (TD), and TGV2 regularisation (denoising) problems. OpenMP parallelisation and an OpenACC GPU implementation are included.

The Mercurial repository is available on Bitbucket.

Borgend (2018)

Borgend screenshot

This is a retrying and queuing scheduler as well as a macOS tray icon for BorgBackup. If you are not on macOS, but still another unix system, no tray icon will be displayed, but you can still use Borgend as a scheduler for your backups. Designed with laptops in mind, Borgend works in “dreamtime”: on macOS the scheduler discounts system sleep periods from the backup intervals. If you wish, you can also choose “realtime” scheduling.

More informantion may be obtained and Borgend can be downloaded from its Mercurial repository on Bitbucket.


The attached sofware packages are provided to satisfy your curiosity. Don't ask me how to get them working, I can't help. (Each .asc is a GPG signature for the corresponding tarball.)