PortfolioBack to Home
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.
A very small cross-browser ajax library. Weighs in at 0.5k minified and gzipped. It is my most popular library.
relyqClojure, node.js, Redis, Queues
A reliable queue protocol backed by redis, with implementations in Clojure and node.js
My personal blog and resume site was written from the ground up with my personal style, monospaced and opinionated.
fyraClojure, 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)
SPSAHaskell, 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 GoGo
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.
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 InfrastructureDevOps, 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 RafflecopterDocker, Kubernetes
First, a post on dockerizing our development environments, then a full transition to containerized cluster management using kubernetes.