Tom Waddington

Projects

Free and open source software that I build and maintain.

  1. bytemap.clj

    bytemap.clj on Clojars

    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.

  2. 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
    An asciinema recording of interacting with an HTTP API in Helix
  3. 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
    An asciinema recording of interacting with a Clojure nREPL in Helix.
  4. 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
    Barfing and slurping in Helix with paredit.hx
  5. 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.

  6. skivi

    skivi on Clojars

    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 .clj and .sql files 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 skill to get it over the line.

  7. still

    still on Clojars

    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 an assert during runtime, and act like an (is (=)) test inside deftest.

    An asciinema recording of using still in Helix via nrepl.hx
    An asciinema recording of using still in Helix, via nrepl.hx.