Blog
October 8, 2026
Giving AI Agents a Fax Machine
I added an agent interface to FaxOnline. An AI agent can now prepare a PDF fax, hand you a checkout link, and check whether it was delivered. Five years ago I wrote about building an online fax...
Read →September 25, 2026
WordPressSharp 2.0: A .NET 10 Client for the WordPress REST API
I started WordPressSharp in 2014 to make it easier for C# applications to talk to WordPress. The library used XML-RPC, targeted .NET Framework 4.5, and did the job it was built for. I even wrote an...
Read →September 24, 2026
Jev Query Routing: Ask What It Means, Not Whether It's Right
A couple of years ago, a few engineers and I spent a month or two and thousands of dollars teaching a model one thing: when someone types a search, are they looking for help, checking inventory, or...
Read →February 20, 2026
How and why I built openclawpm
I kept seeing impressive agent demos. Then I tried to build one I could actually use, with its own context and tools, and it fell apart when I switched machines. The prompt was only part of what I...
Read →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 →