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.


June 2018, Olympia, WA — Tales from a Game Jam
A review of the creation of EXO_encounter 667 and competing in the the Lisp Game Jam with Fennel.
November 2012, Raleigh, NC — The Continuing Adventures of Leiningen
A presentation given at Clojure Conj 2012 under the influence of a severe flu about the development and features of Leiningen 2.
March 2012, San Jose, CA — Swarm Coding
A presentation given at Clojure/West 2012 on running group-coding user group sessions geared towards exploration and learning.
September 2011, St. Louis, MO — Getting Cozy with Emacs
A workshop at Strange Loop 2011 for getting the most out of your Emacs customizations.
November 2010, Raleigh, NC — Making Leiningen work for You
A presentation given at Clojure Conj 2010 on Leiningen, the project automation tool.
April 2009 — PeepCode: Functional Programming with Clojure
A screencast teaching functional programming with the Clojure programming language. The first published commercial documentation released for the language. I wrote the script, but Geoffrey Grosenbach did the visuals and narration. Watched by thousands of developers.
December 2008 — PeepCode: Meet Emacs
An hour-long screencast tutorial introducing the GNU Emacs editor. Again, I wrote the script. Watched by thousands of developers. Now distributed by PluralSight.
November 2007, Charlotte, NC — Tightening the Feedback Loop [video]
A presentation given at RubyConf 2007 on measuring and improving programming habits.


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.