I've initiated, contributed to, and maintained a number of free software projects.


Clojars (Clojure)
The community repository for Clojure libraries.
Clojure (Clojure)
A modern functional lisp language with advanced concurrency features.
Clojure Mode (ELisp)
The Emacs mode for the Clojure language.
GNU Emacs (ELisp)
The extensible, self-documenting lisp machine and text editor.
ERT (ELisp)
A testing tool for Emacs Lisp libraries. Now part of Emacs.
Fennel (Lua, Fennel)
A lisp programming language which runs on the Lua runtime.
Hpricot (Ruby)
A delicious HTML parser.
JClouds (Clojure)
A cross-provider library for working with remote storage and compute APIs from Java and Clojure.
JRuby (Ruby)
An implementation of Ruby on the JVM.
Logplex (Erlang)
A distributed log routing system.
Magit (Elisp)
A Git frontend for Emacs.
Microscheme (Scheme, C)
A compiler for a subset of Scheme targeting AVR microcontrollers.
Mirah (Ruby, Mirah)
A low-level programming language targeting the JVM.
package.el (ELisp)
The Emacs Lisp Package Archive; a package manager for Emacs. I maintained this for a time before it was merged into Emacs 24.
Quil (Clojure)
A graphics library for artistic exploration.
Rack (Ruby)
The web server adapter for Ruby frameworks.
Rackjure (Racket)
A Racket language which brings many of Clojure's conveniences to the Racket platform.
Ruby on Rails (Ruby)
A web framework for Ruby designed to allow quick application development.
RDoc (Ruby)
The documentation tool for Ruby code.
Rubinius (Ruby)
A Smalltalk-inspired Ruby virtual machine and implementation.
Ruby (Ruby)
An object-oriented dynamic language.
RubyGems (Ruby)
Ruby's Package Manager.
Sonic Pi (Ruby)
Live-coding music synthesizer.
TIC-80 (C)
A fantasy computer for making games.
Vlad the Deployer (Ruby)
Pragmatic deployment automation, without mercy.


Atreus (C, Racket, KiCAD)
An open-source hardware, ergonomic mechanical travel keyboard design and firmware.
Bus Scheme (Ruby)
A Scheme interpreter written in Ruby, but implemented on the bus! I spoke briefly about this at RubyConf 08.
Bussard (Lua)
A space flight simulation adventure with a programmable ship and stations.
Cardinality (Lua)
A game authoring environment inspired by Hypercard and Scratch.
Grenchman (OCaml)
Fast-launching CLI client for running Clojure code over nREPL.
Leiningen (Clojure)
Project automation for Clojure designed to not set your hair on fire. Installed hundreds of thousands of times.
EXO_encounter 667 (Fennel)
A top-down puzzle/adventure game featuring lasers and robots. Winner of the Lisp Game Jam Spring 2018.
Mire (Clojure)
A multiplayer text adventure engine. Used as a sample program for the PeepCode screencast on Clojure.
Orestes (Forth, C)
A Forth implementation for microcontrollers.
Pindah (Mirah)
A tool for building Android applications with Mirah. Maintainership has passed to Brendan Ribera and Alex Parrott.
Polywell (Fennel, Lua)
A fully programmable text editor and repl environment for embedding in games.
Orb (Lua)
A mock-unix operating system.
Prometheus (Erlang)
An XMPP-driven thermostat system.
Rinari (ELisp)
An Emacs mode for writing Ruby on Rails applications. Maintainership has passed to Eric Schulte and Steve Purcell.
Robert Hooke (Clojure)
A flexible, composable mechanism by which you can extend behaviour of functions after they've been defined.
Slamhound (Clojure)
A tool for reconstructing namespace declarations in Clojure files. Maintainership has passed to Sung Pae.
Smolforth (Lua, Forth)
An implementation of the Forth programming language designed for embedding in games.
Syme (Clojure)
Manages disposable EC2 nodes for collaborating on GitHub projects via ssh and tmux. Maintainership has passed to Chris Bilson.
Miscellaneous Emacs Libraries
find-file-in-project, idle-highlight-mode, better-defaults, and scpaste.


Conkeror (Javascript)
A no-compromises, keyboard-driven, extensible web browser. Incompatible with newer versions of the Mozilla runtime.
Emacs Starter Kit (ELisp)
A set of dotfiles that provides better defaults and bundles other useful libraries for Emacs users. Used by thousands of developers. Deprecated in favour of better-defaults.
Swank Clojure (Clojure)
An adapter allowing SLIME to be used with Clojure. Deprecated in favour of Monroe.
Clojure HTTP Client (Clojure)
An HTTP client for the Clojure language. Deprecated in favor of clj-http.
Concourse (Ruby)
A web application to help schedule gatherings among participants with varying schedules. My entry for Railsday 06.
Erythrina (OCaml)
A desktop program for choosing among a list of options in a composable manner. New features in dmenu 4.5 obsolete this program.
Augment (Ruby)
A framework for gathering metadata from code and displaying it. Featured in my talk from RubyConf 07.
Conspire (Ruby)
A real-time collaborative editing platform using Git as a transport layer. Deprecated in favor of Rudel.
Ebby (ELisp)
An implementation of the Obby collaborative protocol (version 0.3) for Emacs. Deprecated in favor of Rudel.
Gitjour (Ruby)
A tool for sharing git repositories on a local network over ZeroConf. I maintained this project but did not create it. Deprecated in favor of Bananajour.
ElUnit (ELisp)
A testing framework for Emacs Lisp. Deprecated in favor of ERT.
RAV (Ruby)
A plugin for visualizing the data model of Rails applications. Deprecated in favor of Railroad.
RPlanet (Ruby)
A feed aggregator written in Ruby. Deprecated in favor of Mars.