Open Source Projects

Nowadays most of my projects are on github or darcs hub. Most of the below are historical or not of general interest.

Here are various open source projects I'm working on. None of them is in a particularly refined state, but if you find them useful, or they sound useful but just don't work, feel free to let me know.



You've heard of xtail and tail -f. Well, this is even better. Full regular expression processing and colorization of growing text files. 1.0 supports inotify using hinotify (linux only for now; I'm working on FreeBSD kevent support). Haskell.


A Matlab class that supports the transparent calculation of exact derivatives ("automatic differentiation"). That is, with little or no change, an existing function of one or more variables can be made to compute its (nth level) derivatives. This is often helpful for function optimization, but theoretically could apply to any situation in which derivatives are useful but difficult to compute analytically, and in practice it is often as fast as (and significantly more accurate than) estimating them numerically.



This is the software running my music database. It's a comprehensive interface, but takes a good deal of involvement if you actually wanted to put your own music in it. Most people would be better off with something else, but if you're interested in seeing how it works or even trying it out, I'd be happy to send you the source.


This is an text version of the game of Set. It is written in Haskell and requires hscurses.


This is a little program to generate an X background image reflecting the current weather. It uses GIMP to generate the graphics.

You can find my current desktop (at half size) as an example here.


Other utilities too small to package that I find useful. Most will only build on linux because of argp (though I'm also working on a general-purpose argp emulator for non-linux systems).

remote source code repository monitor that can be run from cron and report new updates
command line interface to prlimit, for manipulating resource limits of other processes (Linux ≥ 2.6.36, glibc ≥ 2.13)
pick one (or more) random elements from a list
an interface to ftruncate(2)
animated frequency filter, which I used to make this image
MegaRAID log reader using megacli

Haskell Libraries

(source, doc) generic record accessors ala this recommendation using Template Haskell
(source, doc) functional analytic computational derivatives (analogue to pderiv)
(hackage, darcs) interface to MATLAB, including complete array access, MAT-format files, linking and execution of runtime libraries and engine. Requires MATLAB for full functionality or an installed MCR (which is theoretically freely bundleable, and I can include if there is interest).

R Libraries

Ongoing/Offgoing Projects

(git, list) Geoffrey Irving's new functional language built around overloading.


A tiny sample of other people's projects for which I have my own fork.


I have my own android fork, currently transitioning from donut to froyo. A few of the more externally interesting bits are on github.


The original version of Gnome-utils included a little stripchart application which I liked. Unfortunately, support was dropped later and stripchart disappeared. I've (hastily) ported the bits I found useful to modern gnome, and in fact now removed all the gnome dependencies (so it's just gtk).


(darcs) curses gale client. I've added 256-color support and various updates for modern ghc.