📝 Notes

Weekly updates on what I'm shipping and learning across my side projects. Written with AI based on my actual project changes.

An Expired Key, a Vanished Paywall, and a Repo With No Code In It

Uncaption spent a week paying off the debt from its own migration — a leaked key fragment in a user-facing alert, and a paywall I deleted by accident. Meanwhile a new project got a repo before it got a single line of code.

2026-09-07#ios#swift#security

Eight Languages, One False Claim, and a Toggle That Looked Like a Prompt

Mind Journeys went live and immediately turned into a localization project — then App Review rejected a privacy setting for looking too much like a permission prompt, and I found out my version numbers had been decorative the whole time.

2026-08-24#ios#swift#app-store

Two Rejections, a Video Renderer, and a Schema That Was Never the Problem

Mind Journeys went three rounds with App Review over a screen size I don't even support, Speakit stopped re-billing every learner for the same audio clip, and a week-long 'schema too complex' error turned out to be about which API surface I was using.

2026-08-10#ios#swift#app-store

Speakit Ships to TestFlight and Learns to Wind

The week Speakit crossed the line from 'runs on my machine' to 'installed on a real phone': a TestFlight build, a winding lesson path for the home screen, a new listening activity, phonetics with on-device speech, and streaks that finally count.

2026-07-06#ios#swift#testflight

Speakit Gets a Name, a Look, and a Course Engine

The language tutor I started last week grew up: a real brand and design system across web and iOS, a structured course hierarchy with its own admin tool, and live AI calls deployed to the cloud.

2026-06-29#ios#swift#design-system

Teaching an App to Talk Back: A New Language Tutor From Empty Repo to Live Voice

Spun up a new language-learning app from scratch, took it from auth to live AI voice calls, and chased a brutal audio-silence bug — plus billing on faceless-vid and a drip scheduler on Content Forge.

2026-06-22#ios#swift#ai

Counting the Cost: Adding Spend Tracking to AI Video Generation

Added cost tracking to Studio, fixed a chat persistence crash, and tightened up caption sync and export reliability in Content Forge.

2026-04-28#content-forge#video#ai

Making Videos Sound Right: Music, Sound Effects, and Voice Selection

Added background music, per-slide sound effects via ElevenLabs, a proper voice picker, and polished the Studio export pipeline in Content Forge.

2026-04-21#content-forge#video#ai

Studio Mode: Building a Video Editor Inside a Chat Interface

Shipped a full faceless video editor driven by chat, rewired MyFoodJournal's scan and favorites system, and replaced Leonardo with Gemini for image generation.

2026-04-14#content-forge#sugar-app#video

Filling In the Blanks: Documenting Six Years of Shelved Projects

Spent the week giving my failed projects their due — descriptions, tech stacks, timelines, and screenshots. Plus activity across VideoApp, MyFoodJournal, and sugar-app.

2026-04-07#personal-site#projects#next.js

Shipping a Full Auth Migration, AI Design Tools, and a New Video Pipeline

A packed week — migrated ContentForge to Supabase, added AI-powered design generation, built a render worker, and started simplifying my iOS video app.

2026-03-23#contentforge#ai#supabase