hueglint
npmAccessible-by-default heatmap library — color scales that hold contrast and colorblind-safety from the start.
How it's built →I like building small things to understand ideas. Some end up documented and published as open-source libraries. Others stay experiments — built to fix something I kept running into myself, and not much more polished than that.
Published, documented, meant for other people to actually use.
Accessible-by-default heatmap library — color scales that hold contrast and colorblind-safety from the start.
How it's built →Local-first CLI for engineering managers — 1:1 notes and career-ladder tracking, no dashboard required.
How it's built →Draws a curved SVG route through a set of milestones — a framework-agnostic core, with thin bindings for React and vanilla JS. Pick a shape, tune it live, copy the result as code.
How it's built →The theme powering this site — six color palettes, a data-driven timeline, content collections, all config-driven. Open source.
Smaller, rougher, built mostly for myself. No writeups — just what they are and why they exist.
Quietly captures the tabs you close, grouping them by topic into an interactive graph — so the one you actually needed is easy to find again.
Turns cryptic server logs into plain-English incident reports — finds the actual root cause, reconstructs a readable timeline, and tells you what to do next.
Timestamped notes on video — pin a note to a moment, jump straight back to it later.
React wasn't going to be the only place this needed to run, so the palette logic, validation, and CVD-safety guarantees live in a plain TypeScript core — React just passes a palette name through as a prop. A Vue or Svelte binding later means writing a thin wrapper, not re-deriving the color math.
Full breakdown →Promotion evidence needed to be something I could read, diff, and version — not query. Plain markdown files do that for free. The one place it costs something is search across a lot of history, which a database would make trivial and files make you grep for.
Full writeup →Every one of these started as the smallest version that solved my own problem — hueglint began as one hardcoded palette, ladderline as a single markdown file I appended to by hand. The architecture (core/binding split, no database, whatever) came after the idea proved worth keeping, not before.
Still in progress
Forecasts Jira delivery dates and explains why, entirely on your machine.
A small language for EMs to record objectives, initiatives, decisions, and risks as structured text — then query and visualize them.