I’ve written and contributed to a number of free and open source software packages. Among them are the following.

Revision control tools

  • Mercurial, a fast, popular distributed revision control tool

Haskell libraries and tools

  • mysql, pure unencumbered MySQL bindings
  • pcap, an efficient system-independent interface for user-level packet capture
  • stringsearch, fast Boyer-Moore and Knuth-Morris-Pratt search functions for ByteStrings
  • Data.SuffixTree, an efficient lazy suffix tree implementation
  • FileManip, a library for manipulating files efficiently

Networking tools

  • netplug, a lightweight Linux daemon for responding to network cable status changes

Older, unmaintained software

Please note that by and large, I do not respond to bug reports or issue new releases for these packages.

  • cabal-rpm, an RPM packager for Haskell Cabal packages
  • python-inotify, a set of efficient Python bindings to the Linux inotify system call
11 comments on “Software
  1. Vadim Engelson says:

    Thank you for a nice book on Mercurial
    published at

    The version of
    has a problem with _ (underscore) symbol,
    it is broken everywhere it is used.
    It has text t4ht@95x instead.

    This is in HTML version. PDF is OK.

  2. alpar says:


    The source code repository of your fantastic hg book became unaccessible. Could you fix it somehow?

  3. cg says:

    What happened to the hg book source? It’s a wonderful piece of work! The mercurial blog points to a bad link.

  4. Jason S says:

    Just FYI — there’s a bug in the hgbook in chapter 9 when it talks about the “bisect” command: all of the session listings show errors e.g. “option ‘–good’ not recognized”; perhaps these are using an older version of hg or one where the options didn’t use “–” before the bisect subcommands?

  5. patrick mullen says:

    Thank you for the mercurical book, love this vcs and am never ever going back to subversion. I was a bit unsure of understanding the slightly different world of “distributed”, but the book helped connect the dots.

    That bug in chapter 9 is still there! But it’s not a big deal, the text is enough to understand what should be going on even without the output from the commands.

  6. j. van den hoff says:

    really thanks a lot for the mercurial book, but I’d love to
    have a single-page html version (like the svn book) to enable whole document
    text search. would this be possible?

  7. alvivi says:

    Maybe I’m a purist. All books that I carry on my reader have a frontpage. So, I made a frontpage for hgbook (O’Reilly inspired :P). If somebody needs it, here it is ( By the way, great books Bryan (RWH and HG). Cheers.

  8. geoffrey zheng says:

    The links in hg book comment feed are wrong: the domain name is, and after I change it to the right one the URL still doesn’t work.

  9. David L says:

    I have read the Mercurial book, and we are looking at pushing it full steam ahead in our corporate environment, but now I am looking for governance documents, since most of the “enforcement” our old VCS did was technical and it essentially evaporates under Mercurial. Anyone have some good ones on code ownership and repo management with bug tracking and such?

  10. Bob S says:

    Reading Mercurial, 1st ed.

    p35 Merging Streams:
    4:2278 can be found on the graphic, but 5:cbfc cannot?

    p36 Merging Streams:
    5:cbfc does not match 5:b15c in graphic?

    P37 Merging Streams:
    6:12ef does not match 6:793c in graphic?

    Am I reading the examples incorrectly? Why don’t the changeset values match?


  11. Rafi says:


    I have a question about your book on Mercurial. What software did you use for HTML version of this book? It is very nice with this commenting feature, RSS and it has very clean design :). Is that software broadly available (opensource? commercial?).

    Thanks for the great job with mercurial :).

    Best regards!

Leave a Reply

Your email address will not be published. Required fields are marked *


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>