Skip to content
// blog

Blog

Notes on building stuff, mostly with AI. Sometimes about product work.

Curation Is the Feature YouTube Cannot Ship

VM1 plays music videos with VH1-style trivia popups. Every video is already on YouTube, which is exactly the point.

vm1 product music

Parsing Other People's File Formats

Kleo reads whatever ebook you throw at it. Almost all the engineering is in the part nobody sees.

kleo parsing documents

Generating a Workout Is Easy, Doing It Is Not

WAGMI writes your training plan and tracks the habits around it. Only one of those is a hard problem, and it is not the one I built first.

wagmi AI habits product

Budgets Break the Moment the Trip Starts

Shoestring plans trips against a small budget. The interesting problem is what happens on day two, when reality disagrees with the plan.

shoestring product travel

The Failures You Can't See Are the Expensive Ones

Backlot chats about TV shows and must never spoil one. Prompting wasn't enough, so I built an eval suite.

AI evals LLM backlot

Tuning a Model for Tone Instead of Truth

Roastmaster looks at your selfie and insults you. The vision was the easy half.

roastmaster AI LLM product

Which Models Actually Hold a Schema

Scrollem needs every agent to return valid structured data. Cheap tokens turned out not to mean cheap output.

AI LLM scrollem structured-output

The Answer Is Not the Product, the Explanation Is

GeoGenius can look at a Street View shot and tell you where it is. That turned out to be the least useful thing it does.

geogenius AI product

Turning a Pile of Feedback Into a Build Order

BuildFR reads everything your customers said and ranks it. The hard part is that people don't write tickets.

buildfr AI product

The Screen Kept Going to Sleep

A fullscreen clock is a trivial app right up until the screen has to stay on for eight hours.

clock browser-apps frontend

AI Coding Agents Are the IDE Now

Claude Code, Cursor, Windsurf. The tools changed faster than I expected.

AI tools coding

Building UI Inside an App You Do Not Control

YouTube Playlist Search adds a search box to YouTube. Writing it took an afternoon. Keeping it alive through YouTube's redesigns is the actual work.

yt-search chrome-extension frontend

MCP Changed How I Think About AI Tools

Model Context Protocol makes AI tools talk to everything else. I didn't expect to care this much.

AI MCP tools

How I Built 9 Apps with Vibe Coding

A look at my approach to building and shipping apps fast using AI-assisted development and engineering intuition.

vibe-coding AI shipping

Four Clicks Is a Product

Google Watchlist Quick Open deletes a navigation path nobody should have to memorise. That is the whole pitch.

google-watchlist chrome-extension product

I Finally Used React Server Components for Real

After months of reading about RSC, I built something with them. Some thoughts.

React frontend Next.js

Local-First Is Having a Moment

CRDTs, sync engines, offline-capable apps. The local-first movement is getting practical.

architecture local-first sync

The Smallest Useful Thing I Have Shipped

DirectWhats is one input and one link. It exists because WhatsApp decided you should not be allowed to do this.

directwhats product shipping

Hello World: Why I'm Building in Public

The first post on my new site. Why I decided to start sharing my building journey, and what you can expect.

personal building