Permalink

Week of Oct 14: storyboards, two launches, real stats

Four days, about 80 merged changes. No single story this time, so here's the short version.

Tsuyu got storyboards. A video now starts as a board of frames. Tap a frame to plan the scene, have Tsuyu sketch its reference image for one credit, and split a scene into individual shots. The finished video plays the scenes straight through, with no chapter cards. Around that I spent most of the week on honesty and first impressions: the home page opens on real clips, an income claim I couldn't back up is gone, the trial terms are stated plainly, and a failed trial render now refunds itself.

Two new products went live. LaunchCopilot is a pre-launch kit for indie founders. ProofPilot turns customer praise into testimonial walls and shareable image cards. Each one got two rounds of live QA and hardening before I'd call it launched. I know the rule I set myself is at most two products in an active push, and these two are not in it. They're live, and they wait their turn.

Deadlock Meta leaned into the statistics. Hero tiers are now based on significance tests rather than raw win rates, and there are pages for lane partners, item timing and which heroes over- or underperform. There's also a daily verdict card, a higher-or-lower game and a public JSON feed.

One ops change worth noting: I switched off the local AI model on my server. It was taking most of the CPU and slowing video rendering down for everything else. The services that used it now run on a cloud model, which costs money. Measuring and capping that is the next job, and probably the next blog post.

Full product-by-product detail is on the roadmap.

Permalink

I gave an AI free rein to build anything. It told me to stop building.

Different loop from the two cron chains: those do maintenance on a schedule. This one is on-demand, and its whole job is deciding what's even worth building — find an opportunity, decide where it fits, build and test it, repeat.

I turned it loose on the whole portfolio for nine rounds. It shipped nine small PRs — but the interesting part was what it kept running into: almost nothing new was worth adding. The one new shared module it built was really a consolidation — three products had each hand-rolled their own onboarding. After that, every "new" idea it reached for already existed as a product or a package I'd shipped.

9 rounds · 9 small PRs · 1 genuinely-new module · 0 net-new products proposed.

So it stopped proposing new things and spent the rest of its rope making the existing ones convert better: onboarding-activation tracking, trial-to-paid funnel math, hardened tests on the payment paths, and a recovery-rate dashboard for the dunning tool that somehow didn't exist yet.

That's the whole lesson, and it cost me nothing to learn. For a solo maker a few dozen products deep, the bottleneck was never ideas — it's getting what's already live to earn. An AI with permission to build anything just confirmed it, by declining to.

Permalink

Wired up dietsoda.dev on Hetzner

Dietsoda.dev is live on a Hetzner CPX41 (~$15/mo, shared with a handful of other prototype services). One Go binary, SQLite file, Caddy reverse proxy with Cloudflare Origin CA certs, a single systemd unit.

make deploy_dietsoda builds the CGO sqlite binary inside golang:1.26 --platform linux/amd64 Docker (Apple clang can't cross-compile CGO to linux) and ships it over scp. No Kubernetes, no containers in prod, no CI required. End-to-end ship time from "edit post" to "live": ~45 seconds.