All Posts

Building BagaCam Better

4 min read

I built a rabbit webcam in May 2025. It took a couple days of solid iteration. In January 2026, I rebuilt the exact same app in half a day.

Same developer, same architecture. The models had improved, but I'd also changed how I work. Both factors mattered.

BagaCam Landing Page
BagaCam's landing page

The Setup

We rescued a rabbit last spring and named him Rutabaga. Rabbits are social animals, and we were worried about leaving him alone when we traveled. I had a Raspberry Pi lying around, so I built a webcam that could stream to the cloud.

The May Build

I flashed Raspbian, connected over SSH, and pointed Claude Sonnet 3.7 to it. The Pi pushed video up to AWS via Kinesis Video Streams, and I bolted a frontend with video playback and authentication onto the other end.

It worked. CloudFront deployment, authenticated access, video in the browser. But some pieces wouldn't cooperate. I spent an hour trying to get IAM Role Anywhere set up — certificate-based credentials instead of an IAM user with a static access key, which is the more secure approach. Claude kept trying different configurations, hitting errors, trying again. We weren't getting anywhere. I tabled it and moved on with a simpler credential setup.

The January Rebuild

Eight months later, we had another trip coming up. Fresh Raspbian, SSH connection, but this time Opus 4.5 was on the other end. And my process had evolved.

I wrote a spec describing the full app, built a React mockup in Google AI Studio, and pointed Claude Code to both the mockup and the old repo for context. Prior work became reference material instead of a starting point.

I also had Claude decompose the implementation into discrete tasks, identify which could run concurrently, and spin up sub-agents to execute them in parallel. While one sub-agent wired up authentication, another built the video player, and a third configured the Pi.

The Contrast

IAM Role Anywhere — the feature I'd tabled after an hour of going nowhere — worked on the first pass. Same AWS documentation, same goal, same approach. The model just navigated the complexity better. What had been a wall in May was a non-issue in January.

I also added time-travel playback: go back an hour, three hours, up to 72 hours. The UI came together fast. The whole rebuild was functional by the end of that half-day session.

BagaCam Webcam View
The webcam view with time-travel playback

The result wasn't just faster to build. It was better. Cleaner UI, more features, properly secured credentials. The May version worked. The January version felt finished.

What Changed

Two things: the models and my workflow. I can't cleanly separate their contributions — a better model with my old workflow would have been faster, and my new workflow with the old model would have been more organized. Together, they compressed what used to be days of incremental progress into a single focused session.

If this trajectory holds, the ceiling on what I can build in a weekend keeps rising. Not incrementally, but dramatically.

Now we can check on Rutabaga from anywhere.