I've been writing software since 2015, experienced in full stack web development with a more recent focus on data processing and visualization tools. I build full stack web apps and developer tooling in Clojure. I care about making software simple, durable, and enjoyable to operate and maintain.
I also write easy-to-understand technical guides and tutorials for Clojure's data science ecosystem and contribute libraries and systems with a goal of making it easier to build with Clojure's toolkit.
If I could afford to work on open source full time I would, but I currently work full time for Seeq and spend whatever free time I can working on open source. If you find my work valuable please consider supporting me, either with a donation here or by sharing it with someone you know! You can find updates about my open source work on my website.
• • • •
My main projects right now:
-
clef -- An opinionated, batteries-included, full-stack web framework for Clojure. One command (
clef new myapp) scaffolds a complete, deployable app with my recommended stack: HTTP routing with Reitit, component lifecycle management with Integrant, layered per-env EDN configuration, structured logging, and a full CI/CD and deployment pipeline using Docker, Fly.io, and GitHub Actions wired up out of the box. Distributed as a single self-contained Babashka script via Homebrew. -
reader -- live at themiscellany.app -- A distraction-free reading queue that unifies articles, research papers, and newsletters into one place and organizes your reading list for you. Articles are tagged automatically and surfaced based your individual reading patterns.
-
hosted-clay -- A hosted platform for Clay notebooks, one of Scicloj's live programming libraries. Each notebook runs in its own isolated Fly.io Sprite with a browser-based IDE (code-server + Calva) beside live-rendered output, while a Clojure control plane handles authentication, a warm-VM pool, notebook lifecycle, and a WebSocket-relaying reverse proxy.
-
finances -- A personal finance app that aggregates transactions across institutions via Plaid and Lunchflow, stored in an embedded Datalevin database. Uses Datastar to implement a server-authoritative hypermedia architecture with small TypeScript "islands" for latency-sensitive interactions like keyboard grid navigation and undoable edits.
You can read all about my adventures in coding (mostly with Clojure) on my programming blog.
• • • • •
Selected talks:
- Clojure for Data Deep Dive (London Clojurians 2024)
- Clojure for Data Science in the Real World (Conj 2023)
- Using Clojure for more than software development (re:Clojure 2022)
- Visualizing Data with Hanami (re:Clojure 2021)
• • • • •
I thrive in environments that champion open-source innovation, value community engagement, and are dedicated to solving complex problems with elegant, sustainable solutions. There are lots of things I typically help companies with in my consulting work:
- Do you have a ginormous code base that nobody can make sense of? I can help you organize it.
- Do you have stakeholders coming at you from every direction asking for different things? I can help you communicate with them to make a plan to actually build something.
- Do you have piles of data you want to get answers from? I can help you find them.
- Do you have a disproportionate number of early-career developers on your team you need to level up quickly? I can teach them.
- Do you want to build a culture of open collaboration and engage the global open source developer community but aren't sure where to start? I can help you transform your development processes.
I'm not currently seeking new opportunities but always love to meet other people working on interesting problems.
• • • • •





