How I Ship Side Projects in Weeks Instead of Months with Claude as My Rubber Duck

I wrote my first post about AI back in February. It was high-level; how AI fits into my workflow, advice for new engineers, that sort of thing. This post is the receipts.

I pulled every session file from my local Claude Code install. 222 sessions, 1,714 history entries, 615 of my own messages, 8,117 from Claude. Six months of data. Here’s what it looks like when you treat Claude as a pair programmer for side projects.

The projects

I’ve been juggling a lot of side projects. Here are the ones that got the most Claude time:

design0r is a floor plan editor web app. Draw rooms, place furniture, measure dimensions, switch between metric and imperial. I built it in Go with server-rendered HTML and HTMX. The kind of project where 80% of the work is fiddly UI state management and coordinate math. Claude handled the geometry while I focused on the interaction design.

Home Assistant automations started with a Honeywell thermostat and kept growing. Climate presets, temperature thresholds, away mode detection, and eventually a full multi-zone AC system with three Zigbee temperature sensors. Getting a ThirdReality Zigbee dongle working on Talos Linux Kubernetes involved debugging PodSecurity violations, Longhorn storage issues, and zigbee2mqtt configuration. Claude was in the loop for every step.

terraform-provider-kind is an open-source Terraform provider I maintain. A feature request had been sitting open for months. I gave Claude the GitHub issue, it explored the codebase, and we shipped the feature in a single session.

This blog was built with Claude Code. Custom Hugo theme, Apple HIG-inspired design, dark mode, and Giscus comments.

These projects span Go backends, web frontends, Kubernetes infrastructure, IoT hardware, and Terraform providers. None of them share a tech stack. Some shipped in a single session. Others took a few days of evening work, depending on how much time I had to babysit the Claude session. The Terraform provider feature was one sitting. The Home Assistant multi-zone system was a week of evenings. Either way, each would have taken significantly longer without Claude.

How I work with Claude

I don’t delegate. My most common prompt starters are “we should”, “lets do”, “can we”. I say “we” because that’s how it feels. Claude is the other engineer in the room, and I’m steering.

The typical cycle looks like this:

  1. Brainstorm the feature (“we need multi-zone climate control based on sensor data”)
  2. Write a plan together (Claude drafts, I cut scope, we agree on an approach)
  3. Execute with subagents (Claude dispatches parallel agents for independent tasks)
  4. I test, break it, paste the errors back
  5. Iterate until it works

That last step is where the real work happens. My debugging loop for the floor plan editor was: make a change, check the browser, paste what’s broken back into Claude. “The scale indicators aren’t visible unless I’m on the grid line.” “The PUT endpoint returns 204 but the units don’t change.” Claude reads the error, traces it through the code, and proposes a fix. I approve or redirect, and we keep going.

I counted 97 file operation messages, 74 web/API messages, 58 networking messages, and 46 code review messages across all sessions. The spread reflects the variety of projects. In a single week I might go from debugging a Kubernetes PodSecurity policy to fixing coordinate snapping in a canvas app to configuring Home Assistant YAML.

The pace

When I’m in flow, my prompts are short. “yes” appears 67 times in my history. “1” (picking menu options) shows up 15 times. “lets do it” is a recurring phrase. I don’t belabor decisions. Claude proposes, I pick, we move.

The marathon sessions are where the real progress happens. Six sessions ran past 50 messages. One hit 97 messages debugging a Zigbee dongle on Kubernetes. Another hit 79 setting up Home Assistant dashboards. When context runs out, I summarize what we’ve done and start a new session.

What makes this work for side projects

Side projects die from two things: loss of momentum and boilerplate friction. Claude solves both.

When I sit down at 8pm after work (my peak hours are evenings and weekends; Sunday is my busiest day), I don’t want to spend 45 minutes remembering where I left off and writing scaffolding. I paste the plan, Claude picks up the context, and we’re building within minutes.

The boilerplate problem is the big one. A Terraform provider needs schema definitions, CRUD functions, acceptance tests, documentation. A Home Assistant integration needs YAML config, automation triggers, template sensors, dashboard cards. Each of those is hours of mechanical work if you’re writing it from scratch. With Claude, the first pass takes minutes. It won’t be perfect, but it gives me a starting point to iterate from. I go from blank file to working prototype fast enough to stay excited about the project.

The real numbers

Here’s the breakdown of my 6 weeks of peak usage:

  • January 2026: 352 entries. Getting started with open-source contributions and homelab infrastructure.
  • February 2026: 960 entries. The explosion. design0r, Home Assistant, Kubernetes, this blog, and more.
  • March 2026: 391 entries (month not over). Zigbee sensors, blog writing, and continued infrastructure work.

960 entries in a single month. That’s not casual use. That’s pair programming on evenings and weekends.

It’s not about the AI writing code for you

This is the part people get wrong. I don’t type “build me a floor plan editor” and walk away. I architect the system, make the design decisions, test everything myself, and fix the things Claude gets wrong (which is often; more on that in a future post).

Claude is fast at producing a first draft of code. I’m fast at knowing whether that draft is right. Together, we move at a pace neither of us could manage alone. That’s what pair programming is supposed to feel like.

If you have a side project collecting dust because you can’t find the time, the tooling is there. You still need the vision and the taste. But the hours-of-boilerplate tax? That’s optional now.

Comments

You can also comment directly on GitHub Discussions.