How a PM Ships Software Without an Engineering Team

How a PM Ships Software Without an Engineering Team
For most of my career, the gap between an idea and a working product was an engineering team. I'm a product manager. I think in milestones, user stories, and outcomes, not in pull requests. I've always coded and I can prototype, but turning a loose idea into something that actually runs, and keeps running, was someone else's job. That gap mostly closed this year. Two tools did it: Claude Code and Claude Cowork. Running a…

Managing a Homelab AI Project with Claude Code, Gitea, and the Gitea MCP Server

Managing a Homelab AI Project with Claude Code, Gitea, and the Gitea MCP Server
I am not a software engineer. I think in milestones, user stories, and outcomes. Kim wants a smart garden assistant that tells her when to water and when the blight risk is high. I want to build it. Solo homelab projects like this usually die in a half-finished Docker Compose file. Ceres is different, and the reason is three tools working together: Gitea, the Gitea MCP Server, and Claude Code. The Setup Ceres is a…

How I Would Build the Tableau Connector SDK Today

How I Would Build the Tableau Connector SDK Today
I spent six years at Tableau turning data connectivity from a centralized engineering bottleneck into a partner ecosystem. We went from about 40 connectors, all built by Tableau engineers, to 120+ in the catalog with partners building their own. The Connector SDK, the TDVT test harness, the certification program, and the Tableau Exchange marketplace were the four legs of that platform. The platform worked. It drove 3x adoption, and it shifted connector authorship from "Tableau…

The Painless Problem: Why Kibana Runtime Fields Needed an AI Skill, Not Better Docs

The Painless Problem: Why Kibana Runtime Fields Needed an AI Skill, Not Better Docs
When I owned the Runtime Fields authoring experience in Kibana, we shipped a feature that was elegant in concept and brutal in practice. The concept: define fields at query time against an existing data view, no reindex required, perfect for the half of your data that didn't get mapped correctly the first time. (Reindexing in Elasticsearch means rewriting every document into a new index, which is expensive at scale and a non-starter for clusters serving…