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
13 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!

  12. Mini says:

    I actually don’t use eitehr of these tools anymore I just use GitHub. But, from what I can recall, Deploy does not deploy the database it’s primary function is to deploy the code that’s located in the Codebase repository.Secondly, you’d have to setup some sort of script or trigger to check for the production site being updated and then pulling it down. That isn’t really the purpose of Codebase, though and it can’t be done. It’s just source control.Finally, I normally checkout the trunk into my plugins directory. That way, I can run in the code in my local instance of WordPress and then just commit changes as I make them. Once checked in, I then tag it appropriately. Hope this method helps I know it can be a little frustrating trying to get the environment configured in a developer-friendly way.

  13. Minamas Plantation is one of the biggest Palm Oil Plantation in Indonesia (with more than 250.000 ha of estates) and also a subsidiary of Sime Darby Berhad ( the largest plantation company in the world. With more than 30.000 employees we are moving forward to become a world class company. To support our operation we […] Go to Source: 7 Positions Minamas Plantation

Leave a Reply

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