Most of the software I’ve written or contributed significant code towards. Almost all of these are installable with “cabal install“. The bigger applications, like xmonad or yi, are probably in your distro of choice.

I am a member of the infrastructure team for the Haskell Platform, and 2011 chair of Haskell.org.

Cryptography

  • nano-md5: Efficient, ByteString bindings to OpenSSL

Control

Data

Development

  • diffcabal: Diff two cabal files semantically
  • ghc-core: Display GHC’s core and assembly output in a pager
  • ghc-gc-tune: Analyze the impact of GC flags on performance.
  • ghc-events-stream: parse the binary event stream from ghc
  • ghc-monitor: proof of concept web-app for monitoring a remote Haskell process
  • loch: Support for precise error locations in source files
  • mkcabal: Generate cabal files for a Haskell project
  • nobench: benchmark suite for a Haskell compiler
  • typeof: Small script for inferring types
  • yi: a text editor written and extensible in Haskell
  • vacuum-cairo: a cairo frontend to vacuum, allowing interactive data visualization in ghci

Distribution

  • archlinux: Haskell interface to Arch Linux package infrastructure. Generates this table.
  • cabal2arch: Create Arch Linux packages from Cabal packages
  • cabalgraph: Generate pretty graphs of module trees from cabal files
  • lscabal: List exported modules from a set of .cabal files
  • darcs-graph: Generate graphs of darcs repository activity
  • hackage-sparks: Generate sparkline graphs of hackage statistics
  • hackage2hwn: Convert Hackage RSS feeds to wiki format
  • hackage-plot: Generate cumulative graphs of hackage uploads
  • archnews: Convert Arch Linux package updates in RSS to pretty markdown

Formal Methods:

  • yices-painless: a typed embedded domain-specific language for SMT solving

Graphics

  • printxosd: Simple tool to display some text on an on-screen display
  • scaleimage: Scale an image to a new geometry
  • testpattern: Display a monitor test pattern
  • xosd: A binding to the X on-screen display
  • x11: A binding to the X11 graphics library
  • hscurses: NCurses bindings for Haskell
  • nanocurses: Simple Curses binding
  • repa-devil: Read and write images in many formats as 3D arrays

Math

  • cmath: A binding to the standard C math library
  • mersenne-random-pure64: Generate high quality pseudorandom numbers purely
  • mersenne-random: Generate high quality pseudorandom numbers using a SIMD Fast Mersenne Twister
  • statistics-fusion: High performance, minimal statistics package using stream fusion

Network

  • download-curl: High-level file download based on URLs
  • download: High-level file download based on URLs
  • gravatar: Find the url of the gravatar associated with an email address
  • lambdabot: Lambdabot is a development tool and advanced IRC bot
  • rss2irc: Subscribe to an RSS feed and write it to an IRC channel
  • urlcheck: Parallel link checker

Sound

System

  • bytestring-mmap: mmap support for strict ByteStrings
  • cpuperf: Modify the cpu frequency on OpenBSD systems
  • h4sh: expose Haskell list functions to the shell
  • hs-plugins: Dynamic linking for Haskell and C objects
  • hsclock: packaging of standard cairo analogue clock
  • goa: GHCi with extensions
  • pony: Can I have a pony?
  • xmonad: A tiling window manager
  • xmonad-contrib: Third party extensions for xmonad
  • riot:  Riot is an Information Organisation Tool
  • randomgen: A fast, SMP parallel random data generator

Text

  • pcre-light: A small, efficient and portable regex library for Perl 5 regexen
  • liboleg: A collection of Oleg Kiselyov’s Haskell modules

Testing

  • pqc: Parallel batch driver for QuickCheck

Web

  • json:Support for serialising Haskell to and from JSON
  • hpaste: An online pastebin, written in Haskell

Here’s a graph of parts of the Haskell library namespace I’ve contributed to (generated by cabalgraph):