This page lists some of my public / open source work. For my professional experience, see my resume.
Maintained projects
- Pandoc extensions
- Hammerspoon plugins
- LousyJob: a very simple background job runner for macOS, designed to be easier to use and troubleshoot than launchd.
Writing
Unmaintained projects
These are all either usable now or were usable when I released them—no vaporware.
- VS Code plugins
- Mark Headboard: a UI that lets you use Markdown files as kanban boards. (2020-2021)
- paste-relative-path: when the clipboard contains a file path, this command pastes the relative path to that file from the active file. (2020-2021)
- tueson: simple indentation-based data notation that uses the JSON data model, and a javascript-based parser/generator. (2021)
- notesdir: command-line note management, designed to avoid lock-in. (2020-2021. As of 2023, I use Obsidian instead.)
- A variety of tools for exporting data from various services, organizing the exports, and verifying their quality. (2020-2021)
- replicate-evoarch: partial replication of experiments from the paper “The Evolution of Layered Protocol Stacks Leads to an Hourglass-Shaped Architecture” (Saamer Akshabi, Constantine Dovrolis), just for fun. (2020)
- blunt-instrument: a Babel plugin for automated instrumentation/tracing of Javascript code and a browser app for exploring traces. Try it online! (2019-2020)
- object-graph-as-json: library and spec for encoding arbitrary Javascript objects (including circular references and details that would be lost when serializing directly to JSON) in a JSON-safe structure. (2020)
- htmltopdf-batch-puppeteer: converts HTML files to PDFs. In batches. Using—as you may have guessed—puppeteer. (2020)
- js-syntaxtree-explorer: UI for viewing javascript syntax tree as parsed by esprima. Runs in-browser. (2019)
- task-rotator-todoist: allows creating tasks in Todoist that change their description according to a rotation when they are completed. (2019)
- trello_backup_renderer and sms_backup_renderer: tools for creating HTML documents from backups. (2017-2019)
- scrimp: browser-based tool for interactively testing Thrift APIs. (2013ish)
- noir-servlet, noir-war-archetype, and per-ring-request: old stuff for the Clojure web service ecosystem. (2012)
- irc-indexer and irc-index-viewer: indexes IRC logs into Elasticsearch and makes them viewable in a webapp. (2011)