I built something today. Something simpler, something I whipped up in no more than nine minutes from coding to deployment (it’s also because I had everything figured out before actually doing it.)
My boyfriend is American. Our relationship exists in the overlap between two languages, two cultures, two worlds. He is currently trying to learn Indonesian—one of the languages I speak—but obviously there’s going to be a learning curve, so he can’t understand enough to follow my friend group’s chaotic Discord server where we code-switch constantly, drop slang, and reference cultural moments that don’t translate literally.
He kept trying—laughing at jokes he half-understood after spending thirty minutes telling ChatGPT to translate while he’s on the clock, asking “what did they mean by that?” Not frustrated. Curious. Patiently, genuinely curious about my world.
I wanted him to have access. Not filtered through me explaining later, but real-time, unfiltered, as it happens.
Not because I need him to understand me—though he does. But because he actually wants to. Because he asks about the inside jokes he catches half of, because he laughs at memes he doesn’t fully get just because he knows they matter to me, because he tries. Because. He. Tries.
And somehow, I’ve made it my goal to make his life easier.
I love him to the point of invention. I love that he tries. I love that he cares enough to ask. And I love him enough to meet that curiosity with something real—not just translations. But access. I wanted to say: “Here, this is what you’ve been trying to see. The difference is you don’t have to try as hard now.”
Channel Mirroring
Instead of DMing translations or just directly translating in the same channel, I created a mirrored channel system where the bot listens to source channels, translate via AI, and posts to destination channels instantly. Casey gets a parallel, translated feed of the same conversations. Mirroring.
The Stack
Why Gemini 2.5 Flash?
Google Translate API is literal and misses nuance. Gemini understands:
I also implemented smart filtering that ignores bot messages except for my other bot that I’ve been training to act like me (we’ll get to that later, don’t worry. But she’s wild. I’ve also trained her to be my therapist and I genuinely think she’s a good one for me.)
The Result
Casey can now open any source channel and read my friend group’s conversations as they happen. He gets the jokes, the drama, the mundane “what should we eat” threads—all in English.
But more than the words: he gets the context. Hopefully.
And Now, The Sappy Part
Building for someone you love hits different. You don’t care about perfect code or scalability. You care about removing friction between two people who want to understand each other. I vow to make his life easy and apparently one major part in his life is him trying his best to understand me.
By never missing his Duolingo lesson, by spending thirty minutes translating my friend group’s conversations line by line, by asking questions about the world that made me.
And I kept thinking: why should he have to work so hard to be here?
Every time he asked “what did they mean by that?”—he wasn’t complaining. He was reaching. Building little bridges with his questions. His silly “yuk”s and “sayang pagi”s that I can never correct because it’s too adorable. And I thought, I could keep explaining. Or I could just build him a door.
Not because I’m a great programmer. I’m really not.
But because love, at its best, is architecture. It’s seeing the gap between two people and saying: I see that. Let me fill it with something solid.
People say necessity is the mother of invention. They’re wrong. Sometimes it’s love. Sometimes you build things that shouldn’t need to exist, just because the alternative—the person you love feeling even slightly outside—is unbearable.
