Blog
February 4, 2026
Shipping pmprompt Skills as a Claude Code Plugin
I've been packaging the PM workflows in PMPrompt so I can reuse them across projects. Copying a skills folder works, but keeping those copies in sync gets annoying. This week I shipped the pmprompt...
Read →January 29, 2026
Building PM Practice: Extracting Real Product Decisions from Lenny's Podcast Transcripts
Over Christmas break, I started working on a way for product managers to practice actual PM work. Programmers have LeetCode. Designers can show a portfolio. PMs spend a lot of time talking about...
Read →December 29, 2025
Compound Engineering for Laravel
I've been experimenting with having AI write most of the Laravel code on Site Spell Checker. The part I wanted to improve was what happened after a feature worked. I could fix a mistake, ship the...
Read →September 26, 2025
Building Snooji
I wanted to build a browser game with the same basic idea as Snood. Launch something at a board, match a group, try to clear it before the board gets you. I used emojis for the pieces and called it...
Read →September 4, 2025
JSONL Viewer Tool
I kept copying individual lines out of JSONL files, pasting them into a JSON formatter, then going back to find the next record. The data was there. Reading it was the annoying part. So I built a...
Read →April 15, 2025
Building a Serverless Search Engine with Laravel and Cloudflare Vectorize
I've been writing up different ways to build search with Laravel. Elasticsearch gives me a separate search service. PostgreSQL with pgvector keeps vector retrieval in the database. Cloudflare...
Read →