A few weeks ago I walked past my wife’s desk and glanced at her laptop, the way you do, not really looking. She was deep in something academic, a paper, a grant, one of those documents with more footnotes than text. Her email was open in the corner. My email. The one I host, on a private box in a datacenter.
She wasn’t thinking about it. That was the whole point.
She was just using it. Firing off a reply to a co-author, dragging an attachment in, not noticing the software any more than she notices the light switch. And I stood there for a second longer than I needed to, the way you linger over something quietly good. Because there was a stretch, years ago, when that screen was a battlefield.
Let me back up.
The hardest user I’ve ever designed for
Around 2019 I got my wife off Gmail. That sentence sounds small. It was a campaign.
She was happy on Gmail. Why wouldn’t she be? It’s fast, it searches like magic, it just works, and it’s free (well, “free”, you know the deal). I’d been self-hosting my own email for a while by then, and every fiber of my engineer self wanted her on it too. Not for ideology points. Because I wanted us off the surveillance-ad machine, on something I controlled, something that would still be standing in twenty years no matter what a quarterly earnings call decided.
But here’s the thing nobody tells you when you set out to build for the people you love: their mental model is not yours.
I am a former frontend engineer. I have spent years thinking about flows and affordances and the place a button wants to live. And none of that, none of it, prepared me for sitting next to a brilliant academic who does not care, at all, why IMAP is different from POP, and watching her hunt for the archive button in a client that wasn’t Gmail and feeling her patience drain in real time.
To me, “just switch clients” is obvious. To her, every pixel that moved was a small betrayal of muscle memory. The “obvious” thing isn’t obvious. It’s only obvious to the person who built the map.
So I learned to design differently. Quieter. The goal stopped being “show her how clever the backend is” and became “make the backend disappear.” The best UX for her is no UX. Nothing to learn, nothing to admire, nothing in the way. If she ever has to think about my software, my software has failed.
The honest compromise (because there’s always one)
Now let me be honest, because I promised myself this post wouldn’t be a brochure.
My self-hosted email service is genuinely good. Rock solid. Spam under control. But the mail clients, the apps she actually touches, don’t match Gmail’s polish. They just don’t. macOS Mail’s search, in particular, is rough. Gmail finds a six-year-old receipt from a half-remembered word in under a second; Mail squints at you and asks if you’re sure. That’s a real downgrade, and I wasn’t going to pretend otherwise to the person I share a kitchen with.
So winning her over wasn’t a demo. It was a negotiation, conducted over months, in the small honest currency of “here’s what you gain, here’s what you lose, and here’s me promising to fix the worst of the friction.” Some of it was genuinely funny, me cheerfully explaining a new email client to someone who had zero interest in email clients, her looking at me like I’d suggested we switch which side of the bed we sleep on. (That one I have not attempted.)
What got her across wasn’t a feature. It was trust. She didn’t buy the software. She bought me caring enough to keep fixing it. And one ordinary day, a while in, she stopped reaching for Gmail. Didn’t announce it. Just stopped. That’s the only review that ever mattered to me, and it never got written down anywhere.
When a bug isn’t a ticket
I’ve since built other things for the people in my orbit. There’s Enclave, a little family messaging app, ours, where the people I love talk without renting space in someone else’s attention economy. And I host email for friends, and for a couple of small businesses run by people I actually know, whose livelihoods now route through a box I’m responsible for.
This changes how you build. Profoundly.
When your software is what your wife depends on to send a grant deadline, or what your mom uses to reach you, a bug stops being a line in a backlog. It’s not a ticket. It’s personal. There’s no on-call rotation between me and the consequence. If Enclave goes down on a Sunday, it doesn’t degrade a metric; it means my family is sitting there, not understanding why they can’t reach each other, trusting that I’ll handle it. And I will, because the alternative is letting down specific faces I love.
That weight is real. I won’t pretend it’s always comfortable, there’s a particular 2am dread to “the thing my wife relies on is broken and I’m the only sysadmin.” But I’ve come to think of it less as a burden and more as the point. It makes me slower in the good way. More patient. It drags every decision back to the only question that’s ever mattered: does this actually help a human? Not “is this elegant,” not “would this impress someone on a code review.” Does it help her. The pull request of one.
You build with more care when care is literally the spec.
What I cooked on the road
Years ago, riding a motorcycle from Chicago toward India, I’d cook my chicken curry for the people who took me in. A family in the Andes, a couple in East Africa, a stranger who’d waved me off the road and into their home. I wasn’t cooking to impress anyone. There was no gallery, no rating, no one to perform for. I was cooking to nourish the specific people in front of me, to put something warm on the table for the humans who’d shown up for me that night.
It took me an embarrassingly long time to notice that building software for the people I love is the exact same act.
A portfolio piece is for the gallery. It’s plated for strangers, for the star count, for the recruiter skimming a GitHub profile. And there’s nothing wrong with that, I’ve made things for the gallery too. But the email box humming with zero unexpected downtime, the chat app my family lives in, the curry on a borrowed stove in a country far away, those were never for the gallery. They were for the table.
The best thing you build may never get a single star. It might be known to four people, who don’t even know it’s good, only that it works, only that it quietly holds up the corner of life you made it for. That’s not a lesser kind of building. I’ve come to think it might be the truest kind.
Make something for your table
So here’s my small nudge, friend, if you write code and you love some people who don’t care about code.
Build the little thing your person actually needs. Not the impressive thing, the needed thing. The script that ends your mom’s recurring annoyance. The tiny tool that saves your partner the ten minutes they grumble about every week. Sit next to them while they use it and watch, really watch where their hand hesitates, because their hesitation is the spec and your assumptions are not. Make the cleverness disappear. Then keep showing up to fix the friction, because that, not the feature list, is what they’re actually trusting.
It won’t go in your portfolio. It’ll go in their day. Quietly. Every day.
Make it yours. Or better, make it theirs.
— Jay
Photo by Tá Focando on Unsplash

