Back to Home

Production Code


Clojure, MongoDB

A message-deferring microservice. Send it a message and a time, and it will re-emit the message at the later time. Meant to genericize the deferring in things like transactional email events. It uses MongoDB for persistence.


Browser Javascript

A very small cross-browser ajax library. Weighs in at 0.5k minified and gzipped. It is my most popular library.


Clojure, node.js, Redis, Queues

A reliable queue protocol backed by redis, with implementations in Clojure and node.js

Personal Site

HTML5, CSS, Browser Javascript

My personal blog and resume site was written from the ground up with my personal style, monospaced and opinionated.

Rafflecopter Giveaway Widget

Browser Javascript

The javascript behind the 3rd-party iframe-insertion widget that powers the Rafflecopter platform.

Side Projects


Clojure, Relational Model

An experimental infrastructure and DSL for Functional Relational Programming (as defined in Out of the Tar Pit by Ben Mosely and Peter Marks)


Haskell, Go, Math

Implementation of Simultaneous Perturbation Stochastic Approximation, a global optimization function theoretically proven to converge for a wide class of functions, without knowing the derivative.

itertools in Go


An implementation of Python's itertools library in Go. A fun experiment that shows how channels can be used like lazy sequences (seq in clojure, iterators in python), but exacerbates Go's lack of generics.

Javascript Concurrency Patterns

Javascript, Teaching

A guest lecture given to RefactorU students (one of those bootcamp-style code schools).


denvr (Dev Environment CLI)

Clojure, docker, rkt, git, kubernetes

A CLI to manage development environments easily, consistently, and sharably. Work In Progress

Custom Application Infrastructure

DevOps, SaltStack

After building the application infrastructure for Rafflecopter, I wrote and spoke about it. Here is a talk given at a local meetup and a series of blog posts about building a custom microservice application infrastructure. This infrastructure was since replaced by kubernetes, but I haven't blogged about that yet.

Containerization of Rafflecopter

Docker, Kubernetes

First, a post on dockerizing our development environments, then a full transition to containerized cluster management using kubernetes.