I built a text repeater tool expecting developers to test form inputs with it.
What I got instead was a front-row seat to how people apologize in 2025.
Thousands of people were running phrases through my tool — not dummy data, not placeholder text. They were typing "I'm sorry" and hitting repeat. A hundred times. Five hundred. Ten thousand. Then copying that wall of text and sending it to someone they'd hurt.
I'm 25, I've been writing code for a few years now, and I've debugged some strange things — but this? This made me close my laptop and just think for a bit.
Something Broke in How We Say Sorry
Here's a problem nobody writes Stack Overflow answers for: how do you apologize when words feel too small?
We've all been there — done something that a simple "hey, sorry about that" just doesn't cover. The kind of situation where you're staring at a blank message box knowing that whatever you type is going to land short of what you actually feel.
Historically, people solved this with time and presence. You showed up. You made a meal. You wrote three pages in a card. The effort was the message.
Now presence is a FaceTime call and effort lives inside a chat window. The container changed — but the human need didn't.
Sending "sorry" a thousand times is a workaround born from that gap. It's not laziness. It's someone asking: if I can't show you how much I mean this, can I at least show you the scale of it?
What Developers Often Miss About Their Own Tools
I want to be honest here — when I was building the repeater, I was thinking purely in terms of utility. Repetition count. Character limits. Copy-to-clipboard UX. The usual.
I wasn't thinking about the person at 1 AM who'd just had a fight with someone they love, who'd run out of original things to say and needed something that looked like the weight of what they were feeling.
This is a pattern I've noticed in how we build: we design for the use case we imagine, then ship to the use case that actually exists.
The gap between those two is where the most interesting things happen.
The Psychology Behind Sending It
Repair attempts — any action made to de-escalate conflict in a relationship — are one of the most studied predictors of long-term relationship health. Dr. John Gottman's research frames them as emotional bids: one person reaching across the tension, saying I don't want this distance between us.
A wall of repeated apologies is, stripped of its quirk, exactly that. A bid. An uncomfortable, slightly unhinged, entirely sincere bid.
And here's the thing about bids — they work not because they're polished, but because they're visible. The person receiving a thousand sorries knows, somewhere underneath the eye-roll, that you didn't have to do that. You chose to look a little ridiculous in service of being understood.
That choice is the point.
When It Doesn't Work (Let's Be Real)
I'd be doing you a disservice if I made this sound like a relationship hack.
Repetition amplifies intention — it doesn't manufacture it. If the apology isn't backed by an actual conversation, a change in behavior, some real acknowledgment of what went wrong — the text is just noise. Loud noise, but noise.
The tool gets the door open. Walking through it is still entirely on you.
What I've seen work: the repeated text as an opener, a signal, a "please don't close off yet" — followed by an actual conversation. The message isn't the apology. It's the invitation to have one.
What This Made Me Think About as a Dev
We talk a lot in this community about building things that matter. About solving real problems. And we usually mean that in a technical sense — performance, scale, efficiency.
But sometimes the problem you're solving is just: someone needs to feel something, and they don't know how to make that happen.
That's not in any product spec. But it might be the most important thing your tool ever does.
Build the utility. But stay curious about who's actually on the other end of it — because they'll almost always surprise you.
What's the most unexpected use case you've ever seen for something you built? Drop it in the comments — I'm genuinely curious.
Top comments (0)