For the first half of my career, most of my work has been in proprietary code bases. I'm steadily growing my open source contributions, and the more substantial ones will show up here.

Should've Been a Blog Post (Source)

Should've Been a Blog Post (SBBP) downloads videos from Youtube, creates a high-quality transcript, and places that transcript alongside extracted images from the video. Snarky name aside, I love reading conference talks in this tool.


PromptBox (Source)

PromptBox is a utility that manages libraries of LLM prompt templates, which can be filled in and submitted from the command line.


sqlweld (Source)

sqlweld is a utility that lets you write SQL in the Liquid template syntax, helping to manage common clauses and generate multiple variants on a single query.

Glance (Source)

Glance is a project that allows creation of a bunch of mini-apps which can do things like scrape data on some interval, and push it to a dashboard which shows data from all the apps together in one place.


Buzzy (Source)

Buzzy is an AI companion for children. My kids love talking to Alexa but it frequently doesn't understand questions, so this is an attempt to do something better and run on low-power devices.


Smelter (Source)

Smelter is a data processing framework designed to harness serverless workers. Imagine thousands of Lambdas processing hundreds of GBs of files in S3 with low latency.

Ergo (Source)

Ergo is a low-code task engine built with Rust and Svelte. Think IFTTT or Zapier, but the task behavior is customizable through Javascript and tasks can be represented as state machines or as a DAG. Currently dormant and much of the functionality I really wanted from this will be done by Glance (above), but I learned a lot, especially about embedding V8 in Rust.


Effectum (Source)

Effectum is a SQLite-based task queue, designed to be embedded into Rust applications. Future work will focus running it as a standalone server, embedding into Node.js, and running workers inside services such as AWS Lambda and Fly Machines.


Pic Store (Source)

This is an "image CDN" application which takes uploaded images, resizes and reencodes them in desired formats, and store them on a CDN for use on the web. I originally wrote Effectum to power this project. (Better name pending?)
Most of the images on this site were processed through Pic Store.


Logseq Note Exporter (Source)

Export selected pages from a Logseq graph. I use this to populate the notes and journals sections on this site, and most of the newer long-form writing as well.

Perceive (Source)

Perceive was a semantic search experiment during December 2022 before RAG apps were dime-a-dozen, with a goal to catalog your files, browser history, and more, and make them all searchable through a single interface that understands what you mean, even if the right words aren't there.


httptreemux (Source)

I wrote a trie-based HTTP router library back in 2014 when I was learning Go. I'm no longer developing this, but its performance focus and flexible routing options have gained a small following, including some commercial users.

Other Minor Projects

  • codemirror-json5 is an NPM package providing JSON5 language support for the excellent CodeMirror editor component.
  • Sorters is a compact package for generating Javascript array sort comparators that handle things like null values, descending sort, and multi-level comparisons. I wrote this as I've been moving away from heavyweight utility packages.
  • SWR XState is a stale-while-revalidate data fetcher built with the XState state machine library. Originally developed for internal use at my company, it provides automatic periodic refreshes with browser focus tracking, exponential backoff, and other nice features. I also wrote an article about the implementation.
  • Svelte Zoomable is an experiment in zoomable UI and advanced transitions in Svelte. This was a fun way to get better at understanding Svelte transitions, but ultimately I would favor a more traditional SVG zooming approach with some kind of level-of-detail based render switching, instead of pushing the limits of Svelte's transition system past what it was really good for.
  • Fund the Rebuild brought attention to GoFundMe campaigns that were started in the wake of the 2020 riots. Currently dormant, but it was developed in a day and a half, and in the end was also useful in seeing how quickly I could get an MVP up and running.
  • Palette Transformer transforms a color palette to fit any other color you want! I put this together after doing it manually once, and I wrote about the initial experience and the theory behind it here.