Projects

All projects

2025

status-board

A minimal team-internal status page that reads from Slack reactions. Two weekends.

  • Astro
  • Cloudflare Workers
2025

tldr-this

Browser extension that summarizes long articles via a local LLM endpoint. No data leaves your machine.

  • TypeScript
  • Vite
  • WebExtensions API

2.1k @ChromeWebstore

2024

changelog-bot

GitHub Action that auto-generates human-readable changelogs from PR titles, conventional commits, and linked issues.

  • TypeScript
  • GitHub Actions

24k @GitHubMarketplace

2024

Feed aggregator (self-hosted)

Tiny RSS/Atom aggregator with a JSON API. Replaces my Feedly habit.

  • TypeScript
  • SQLite
  • Cloudflare Workers
2024

readme-gen

CLI that generates a starting README from a repo's package.json, language detection, and a few prompted answers.

  • Rust

8.1k @CratesIO

2023

metrics-mirror

Thin proxy that mirrors a Prometheus federation endpoint to multiple downstreams with per-target rate limits.

  • Go
  • Prometheus
2022

cron-replay

Library that wraps cron jobs to capture inputs and replay deterministically on failure.

  • Go
  • Postgres
2022

deploy-coordinator

Tiny service that holds the deploy lock across multiple repos and posts deploy status to Slack.

  • Go
  • Redis
2021

pg-metrics-exporter

Prometheus exporter for Postgres internals that the official one doesn't cover — replication lag breakdown, planner stats.

  • Go
  • Postgres
2018

dotfiles

My Neovim, fish, tmux, and Ghostty config. Modular, opinionated, machine-portable via a chezmoi setup.

  • Lua
  • fish
  • chezmoi

Archive

  • rsslike — feed reader with social layer

    2022 · abandoned

    Abandoned after three months when I realized I was rebuilding a worse version of Feedly + Mastodon. The social layer was the differentiator and I had no answer for how to bootstrap the social graph.

    Vue, Rails, Postgres

  • sketchr — collaborative whiteboard

    2021 · abandoned

    Abandoned when Figma shipped FigJam. The CRDT model was solid; the market was solved overnight.

    React, WebRTC, Yjs

  • walknote — voice-memo journaling app

    2020 · abandoned

    Got to a working iOS build with transcription on-device. Shelved when I realized the daily-journaling habit I was trying to build for myself wasn't actually a product. A tool for an audience of one.

    React Native, Whisper.cpp, Firebase

  • klock — terminal time tracker

    2019 · superseded

    Worked beautifully for me for two years. Replaced by Toggl when I joined a team that already used it. Code still runs; just stopped needing it.

    Go, SQLite

  • Cleared work — 2016–2020

    2016–2020 · classified

    Five years of systems work I can describe in shape but not in specifics. Order-of-magnitude scale, formal change-control, security-classification regime. Happy to talk in a 1:1 with appropriate context.

    details on request