I’m VibePapa — 60 years old, by the Boseong River in rural Korea, with no coding background. Yet eight apps run on one small NAS in my home: worship, parenting, learning — no ads, no hosting bills. This is how I build them with AI, one small fix at a time.
I Searched GitHub for Something Like TransLee. Here's What I Found.
I built TransLee for my own family, using the same Gemini Live API that Google publishes starter code for. That raises an obvious question I hadn’t actually answered yet: does something like this already exist, built by someone else, that I could have just used? So I searched GitHub for it. What’s Already Out There A few projects showed up using the same Gemini Live API for translation: kazunori279/live-translator — three modes: an agent mode, a simultaneous-translation mode, and a conversation mode for two people talking to each other. Built by a Google Cloud developer relations engineer. google-gemini/gemini-live-translate-livekit and livekit-examples/gemini-live-translate — official Google examples for broadcasting one speaker’s voice to many listeners, each hearing their own language, built on LiveKit. kazunori279/adk-live-translator, noodleA1/live_translation, folubebe/gemini_realtime_speech_to_text — smaller projects, closer to learning exercises than finished apps. The Feature I Thought Was Unique, Wasn’t TransLee has a “translated voice” checkbox for its conversation mode. Check it before you speak, and your Korean gets translated and spoken out loud in whatever language you picked, so you can take part in a meeting in a language you don’t speak. I wrote about how that checkbox came to be in an earlier post in this series — it took fourteen discarded attempts at automatic detection before I realized the checkbox already did the job. ...
My First Month with Claude Code Cost $75. I Didn't Know There Was a $20 Plan.
I’m a 60-year-old dad with no coding background. Before I try a new tool, I usually spend a day just reading about it. I didn’t do that with Claude Code. I opened it and started building right away, adding small amounts of credit whenever I ran low. Add up all those small payments, and the first month cost about $75. Two Doors, and I Walked Through the Wrong One I didn’t know Anthropic has two completely separate ways to pay for Claude Code. ...
WhisperX: Free, Local Transcription for Audio That Can't Leave the House
Not every recording I transcribe is a Bible teaching or a home video. Some of it is confidential — calls from a counseling hotline, where people are talking about the hardest thing in their life. That kind of audio can’t go anywhere near a paid cloud API. Not because of cost. Because it isn’t mine to send anywhere. That ruled out Whisper’s API and ElevenLabs — the two services I’d already used and paid for — for this particular kind of file. I needed something that would run entirely on my own PC, touch nothing outside it, and cost nothing per file. My PC has no GPU. Whatever I built had to live with that too. ...
The Checkbox Was Already the Answer: Building a Real Two-Way Interpreter
TransLee could already do two separate things well: catch sound from a phone’s own speaker and translate it, or listen to a person talking and speak a translation back. What it couldn’t do was the thing I actually needed for a real meeting: sit in an English-language call as the only Korean speaker, show me Korean for everything everyone else says, and speak English out loud when it’s my turn, without me touching a language dropdown mid-conversation. ...
What I Kept From the Old App: Sessions, a Glossary, and Nothing Else
Rewriting an app from scratch forces a question you don’t usually have to ask: of everything the old version did, what actually deserves to exist in the new one? What Survived Session saving. Every translated conversation gets stored so I can look back at what was actually said. The old app also had a meeting-minutes mode, hiding the translation, enlarging the transcript, and alternating the background color for each recording segment so a long meeting stayed readable instead of turning into one wall of text. That mode carried over into the new web app unchanged in spirit, just triggered by a CSS class instead of a native screen. ...
Two Features Walked Into My App. Only One Could Leave.
Late on July 13, TransLee could hear a quiet news broadcast through my phone’s own speaker and translate it live. By the next morning, that exact feature was silent. Nothing had touched the speaker-recognition code overnight. What had changed was a different feature entirely: translated voice playback had just started working for the first time. The Symptoms, in Order 03:40 — Speaker-sound recognition, which worked the night before, stopped picking up anything. 04:36 — Still broken. YouTube audio wasn’t recognized at all, and even the transcript-only fallback wasn’t translating, just showing raw text. 07:41 — Fixed the transcript-and-translation display. Recognition worked again. But the voice-playback feature, the one that had worked the previous evening, was now silent. 07:46 to 08:13 — Every attempt to get both working at once produced the same shape of failure: one sentence would translate and play correctly, then everything stopped, no more translation, no more transcript, sometimes a garbled half-second of audio right before it died. Five hours of this, with the failure mode staying identical no matter which side I patched. That repetition was the actual clue. This wasn’t a bug hiding somewhere in the code. It was two features fighting over the same microphone. ...
I Didn't Build Gemini Live Translate. I Just Shipped It First in Korea.
I want to say this plainly before I say anything else: Google’s engineers built Gemini Live Translate. Google published the starter code for it. I did not invent real-time speech translation. What I actually did is narrower, and honestly more interesting to write about: I took a script Google gives away for free and turned it into a service I could open from my own phone, on my own domain, before I had confirmed Google’s own consumer app was reliably doing the same thing for me here in Korea. ...
Even a Whisper Gets Translated: Teaching a Phone to Listen to Its Own Speaker
The Korean tagline I wrote for the original Play Store listing translates roughly to: “Even a whisper gets translated, reading YouTube by ear.” It was a promise about one specific feature, not a slogan I picked for how it sounded. What “Listening to Its Own Speaker” Actually Means Most translation apps expect you to talk into them, or hold them up to someone else talking. TransLee has always done something slightly different: it can also just sit next to whatever sound is already in the room, a phone playing a YouTube video, a TV, a radio, and translate that sound live, without any screen-sharing or app integration on the source side. ...
From Two Phones to a Family Archive: The Whole Pipeline
This is the map. If you’ve followed the series, this ties the pieces together. If you’re starting here, this is the whole system in one view — how my daughter’s photos and videos get from two phones to my eighty-seven-year-old mother’s tablet, sorted by month, for nothing per month. The Whole Pipeline [Dad's phone] [Mom's phone] | | Synology Drive auto-backup (over the internet) | | v v [ Home NAS: two backup folders ] <- never edited | hourly check copies NEW files (skips anything already handled) v [ Working folder: the "cutting board" ] | I open a browser gallery and pick the keepers v [ One "Import" button ] - convert videos to H.264 720p (ffmpeg) - resize photos - file into Year / Month by the file's date v [ Growth archive on the NAS ] | served over a free Cloudflare tunnel v [ Kids Player app -> "My Records" tab ] - tap a month - videos play continuously - photos drift by, gently zooming v [ Grandmother's tablet. Daughter's tablet. ] Every arrow except one is automatic. The single human step is “pick the keepers,” and it takes about a minute a day. ...
Month Grid, Continuous Play, and a Gentle Drift Across the Photos
A perfectly sorted archive is worthless if the people it’s for can’t watch it. My two viewers are an eighty-seven-year-old and a two-year-old. Between them, they can’t manage menus, can’t type, and won’t tap through a playlist. So the watching part had to be as close to zero-effort as I could make it. The rule I designed to was simple: pick a month, then sit back. Everything after that first tap should happen on its own. ...