Built with Claude Code
Tools & Experiments
Open-source tools that support my design workflow, plus product experiments shipped end-to-end.
Weather App
LucidSky
Weather forecasts that tell the truth. Most weather apps commit false precision, showing single numbers that imply far more confidence than exists. Lucid Sky shows temperature ranges, confidence levels, and honest uncertainty that grows wider for distant forecasts.

3D immersive sky · AI forecast discussions · Uncertainty visualization · Precipitation radar
React · Next.js · Three.js · Claude AI · TypeScript
Data Pipeline
NOAA Radar Pipeline
The radar tile pipeline I built for LucidSky, open sourced. Pulls free NOAA GRIB2 data, reprojects it, classifies precipitation by type (rain, snow, hail), and generates XYZ map tiles on a $4/month EC2 instance.

MRMS live radar · HRRR 24h forecast · Rain / snow / hail
Node.js · TypeScript · GDAL · AWS EC2 · Cloudflare R2
Privacy Tools
Daylight
See what's hidden in your photos. Then fix it. A privacy-first image toolkit that processes everything in-browser. Zero network requests. Audit metadata, strip GPS, compress, resize.

Metadata audit · GPS stripping · Compression · Network monitor proof
React · Vite · TypeScript · Leaflet · Canvas API
PDF Tools
Unfiled
I got tired of paying for Adobe Acrobat to do basic things, so I built my own. Merge, split, compress, and organize PDFs entirely in your browser — no uploads, no servers, no tracking.

Merge · Split · Compress · Rotate · Convert · PDF to Markdown
React · Vite · TypeScript · pdf-lib · pdf.js
Beach Safety
Burlington Beach Monitor
Every 15 minutes, a GitHub Action fetches a live PDF published by Vermont's environmental agency and scrapes the current water quality status for each beach. When a beach you've subscribed to changes status, you get an email. Wave height forecasting, AQI monitoring, and an overview of all 10 Burlington beaches on Lake Champlain.
Water quality status · Wave height forecasting · AQI monitoring · Email alerts
JavaScript · Leaflet · D3.js · Cloudflare Workers · OpenWeatherMap
Developer Tool
Port Monitor
A local dashboard for macOS that shows every active TCP port, the process behind it, and a kill button. Zero dependencies. It classifies dev servers separately from system processes so you can spot a forgotten Vite instance or a rogue Flask server without digging through lsof output.

Active port discovery · Dev vs. system classification · One-click kill · Auto-refresh every 3s
Python · Zero dependencies · macOS · lsof
Information Design
Color Namer
A Chrome extension that asks: what would you call this color? Crowd-sourcing the raw data behind a larger information design project on how people perceive and name color. Install it, name a few colors, and your responses become part of the dataset.

This is what it looks like with just a few responses, but as more data comes in, these visualizations will become far richer.
Color perception · Crowd-sourced data · Information design
Chrome Extension · TypeScript · React
Want to see more?
Get in touch with me for a deeper dive.