I work as an Engineering Manager at Shortcut.
Clojure is my primary programming language, been using it since 2010 and making a living with it since 2013.
💻 My Open Source Work
- Ari: Array Relational Interactive Programming
- PiLisp: An interpreted Lisp inspired by Clojure, implemented in Dart
- Metazoa: Tools for viewing, testing, searching, and querying Clojure metadata
- shortcut-repl: A REPL & CLI for Shortcut (Dart)
- cci: Minimal CircleCI API CLI Client (Clojure via GraalVM native image)
- clj-webdriver: (Unmaintained) Clojure API for Selenium-WebDriver
Tiny utilities:
- csver: Convert JSON array over STDIN to CSV over STDOUT (Rust)
- xmler: Small CLI utility to report on stats for XML sitemaps (Rust)
- last-stacktrace: Utility to print stacktraces from JSONL logs (Rust)
Learning, experiments, and toys:
- Gershwin: Stack-based, concatenative programming language with a Clojure runtime that targets the JVM
- rankle: Experiments with data rank and tables in Clojure, inspired by J and Q
- kintampo: Hierarchical data processing via file system + ZeroMQ
- river-crossing-spec: TLA+ Specification for the "Wolf, goat, and cabbage" puzzle
- AsIf: Language implemented as a Clojure transducer
- Shackle: Stack-based language, implemented in the web browser
- webdriver-logic: Logic programming API for testing web applications using clj-webdriver
💾 Technology I Use
- Clojure for most of the professional code I've written
- Goal for day-to-day data analysis, HTTP API interaction, and scripting
- Julia and J for data analysis
- Glamorous Toolkit built on Pharo Smalltalk for moldable development
- LaTeX for authoring documents of all kinds
- Ruby for writing scripts that I can share with folks that might find Clojure unapproachable
- sops for managing secrets locally
- fish as my primary shell
- WezTerm and Alacritty as terminal emulators
- tmux for multiplexing
- Emacs, traditional bindings for Lisp-adjacent work, Vim bindings via
evil-mode
for everything else - NeoVim for text editing at the terminal
- Visual Studio Code for most non-Clojure development
- macOS at work
- Ubuntu for Linux at home
📫 How to reach me: