Projects
Free and open source software that I build and maintain.
- bytemap.clj
bytemap.clj is more or less a Clojure port of Ian Henry’s Janet library, bytemap, a text-based graphics library with functions for plotting graphs.
- http.hx
http.hx is a plug-in for Helix that lets you trigger http requests via
curl, getting the response back in a*scratch*buffer. It effectively mimics VSCode’s REST client plug-in and uses the same syntax, without needing its own backend.
An asciinema recording of interacting with an HTTP API in Helix - nREPL.hx
Helix is my favourite text editor. There’s currently a fork in progress, adding support for plug-ins via Steel, a dialect of Scheme.
I wrote the nREPL.hx client in Steel and Rust to enable Clojure REPL integration in Helix.

An asciinema recording of interacting with a Clojure nREPL in Helix. - paredit.hx
A Paredit implementation for Helix (with the Steel plug-in system), inspired by nvim-paredit.
Just the bits Helix doesn’t already do with tree-sitter nodes and textobjects: slurping, barfing, dragging, raising and splicing, for Clojure, Common Lisp, Fennel, Janet and Scheme.

Barfing and slurping in Helix with paredit.hx - quipu
quipu is a terminal keyboard entry scripting tool written in Rust. I use it to script asciinema recordings and generate demo GIFs for projects, pull requests, etc.
There are lots of tools out there like this, but everything else I tried had some problem with my environment, or couldn’t script modified keys, or didn’t work with TUIs. So, I fired up Claude Code and built my own.
The quipu repo also includes a tree-sitter grammar, so editing the scripts looks nice.
- skivi
skivi is a Clojure/PostgreSQL job scheduling library, a bit like Graphile Worker but for Clojure.
The code started life in 2012 as the mailer component of an application I was building at Games Workshop, called Bernard. It was called Bernard for ease of handwaving out of conversations with my non-technical line manager, who neither wanted nor needed to hear the specific details of how our backend was going to work, beyond “how’s Bernard coming along?”
That project never saw the light of day, but I’ve been copying these 3
.cljand.sqlfiles from one side-project to another ever since, migrating it from Oracle to PostgreSQL and gradually modifying and extending it to various mail services along the way.At Medicspot, we used Graphile Worker pretty extensively to run our COVID-19 operation. I realised last year that my old mailer component was actually most of the way to being a generic job scheduling library and started refactoring it as a Polylith library.
I used Claude Code with the
juxt/allium skillto get it over the line. - still
still is a Clojure self-modifying snapshot testing library inspired by Ian Henry’s My Kind of REPL.
still/snap!statements will automatically populate with the snapshot result when evaluated in the REPL, behave as anassertduring runtime, and act like an(is (=))test insidedeftest.
An asciinema recording of using still in Helix, via nrepl.hx.