Robin Sloan
the lab
February 2020

An app can be a home-cooked meal

Have you heard about this new app called Boop­Snoop?

It launched in the first week of Jan­uary 2020, and almost immediately, it was down­loaded by four people in three dif­ferent time zones. In the years since, it has remained steady at four daily active users, with zero churn: a resounding success, exceeding every one of its creator’s expectations.

🙂

I made a mes­saging app for, and with, my family. It is ruth­lessly simple; we love it; no one else will ever use it. I wanted to share a few notes about how and why I made it, both to (a) offer a nudge to anyone else con­sid­ering a sim­ilar project, and (b) sug­gest some­thing a little larger about soft­ware.

Tap or click to unmute.

Barely there

My story begins with another app, now defunct, called Tap­stack.

Opening the app, you saw a live feed from your phone’s camera. Below, a grid of faces, some of them rep­re­senting individuals, others rep­re­senting groups. My grid had four cells: my mom, my dad, my sister, and a group col­lecting all three. Just like Snapchat or Insta­gram, you tapped to cap­ture a photo, pressed to record a video. As soon as you lifted your finger, your mes­sage zipped away, with no editing, no reviewing. A “stack” of mes­sages awaited you in the corner, and, after you tapped through them, they were discarded.

It was all so simple that it was barely there. Tap­stack more closely approx­i­mated a clear pane of glass than any app I’ve ever used.

For sev­eral years, Tap­stack was the main channel for my family’s communication. The app didn’t lend itself to prac­tical cor­re­spon­dence or logis­tical coordination; its strength was ambient presence. I met one of Tap­stack’s designers once, and they told me it seemed espe­cially pop­ular with far-flung families: a dias­pora app. Because there was no threading and no his­tory, mes­sages didn’t carry the burden of an expected reply. Really, they were just a car­rier wave for another sen­ti­ment, and that sen­ti­ment was always the same: I’m thinking of you.

A selfie with coffee, a pic­ture of an ice-covered pond, a video of my nephews acting silly: I’m thinking of you, I’m thinking of you, I’m thinking of you.

It never seemed to me that Tap­stack attracted a huge number of users. I don’t think the com­pany ever made a cent. There was no adver­tising in the app, and they never asked their users to pay.

Why didn’t they ask us to pay?

In 2019, I felt a rising dread as the months ticked by and the app didn’t receive a single update. Sure enough, in the fall, Tap­stack announced that it was shut­ting down. It offered its users a way to export their data. It went gracefully.

It was, I have to say, a really great app.

Here comes a new challenger

My family all agreed we were going to need a replacement, and while my first instinct was to set up a group on Insta­gram or WhatsApp, the prospect of having our warm channel surrounded — encroached upon — by all that other garbage made me feel even sadder than the prospect of losing Tap­stack.

So, instead of set­tling for a cor­po­rate mes­saging app … 

I built one just for us.

I’ll show you the screen cap­ture again, but the point is that there’s not much to show. The app is a “magic window” that cap­tures photos and videos and shut­tles them around. Mes­sages wait in a queue and, once viewed — always full-screen, with no distractions, no prods to com­ment or share — they disappear. That is lit­er­ally it. The app has basi­cally no inter­face. There’s a camera button and a badge in the corner, calm green, that indi­cates how many mes­sages are waiting.

Tap or click to unmute.

Here are a few mildly tech­nical observations. Feel free to skip ahead if this part doesn’t interest you:

In a better world, I would have built this in a day, using some kind of modern, flex­ible Hyper­Card for iOS.

In our actual world, I built it in about a week, and roughly half of that time was spent wrestling with dif­ferent fla­vors of code-signing and iden­tity pro­vi­sioning and I don’t even know what. I burned some incense and threw some bones and the gods of Xcode allowed me to pass.

Our actual world isn’t totally broken. I do not take for granted, not for one millisecond, the open source com­po­nents and sample code that made this project pos­sible. In the 21st cen­tury, as long as you’re oper­ating within the bounds of the state of the art, pro­gram­ming can feel delight­fully Lego-like. You just reach out and rake your fin­gers through the bin.

I know I ought to pay it for­ward and pub­lish the code for my app. Even if it doesn’t work for anyone else as-is, it might pro­vide a helpful guide — one I would have been grateful to have. But the code is mar­bled with application-spe­cific values, well-salted with authen­ti­ca­tion keys. This app is Entirely Itself — not a framework, not a template — and that’s insep­a­rable from the spirit in which it was made. Which brings me to:

Cooking at home

For a long time, I have strug­gled to artic­u­late what kind of pro­grammer I am. I’ve been writing code for most of my life; I can make many inter­esting and useful things happen on com­puters. At the same time, I would not last a day as a pro­fes­sional soft­ware engineer. Leave me in charge of a crit­ical data­base and you will return to a smol­dering crater.

Building this app, I figured it out:

I am the pro­gram­ming equiv­a­lent of a home cook.

The exhor­ta­tion “learn to code” has its foun­da­tions in market value. “Learn to code” is sug­gested as a way up, a way out. “Learn to code” offers eco­nomic leverage, pro­fes­sional transformation. “Learn to code” goes on your resume.

But let’s sub­sti­tute a dif­ferent phrase: “learn to cook”. People don’t only learn to cook so they can become chefs. Some do! But many more people learn to cook so they can eat better, or more affordably. Because they want to carry on a tradition. Some­times they learn because they’re bored! Or even because they enjoy spending time with the person who’s teaching them.

The list of rea­sons to “learn to cook” overflows, and only a handful have any­thing to do with the marketplace. Cooking reaches beyond buying and selling to touch nearly all of human experience. It con­nects to domes­ticity and curiosity; to his­tory and culture; to care and love.

Well, it’s the 21st cen­tury now, and I suspect that many of the people you love are waiting inside the pocket com­puter you are never long without, so I will gently sug­gest that per­haps coding might con­nect the same way.

When you lib­erate pro­gram­ming from the require­ment to be pro­fes­sional and scalable, it becomes a dif­ferent activity altogether, just as cooking at home is really nothing like cooking in a com­mer­cial kitchen. I can report to you: not only is this dif­ferent activity rewarding in almost exactly the same way that cooking for someone you love is rewarding, there’s another feeling, too, spe­cific to this realm. I have strug­gled to find words for this, but/and I think it might be the crux of the whole thing:

This mes­saging app I built for, and with, my family, it won’t change unless we want it to change. There will be no sudden redesign, no flood of ads, no pivot to chase a user­base inscrutable to us. It might go away at some point, but that will be our decision. What is this feeling? Independence? Security? Sovereignty?

Is it simply … the feeling of being home?

Update, Feb­ruary 2022: Two years later, my family still uses Boop­Snoop every day. I have added one (1) feature, at my mother’s request.

Update, Feb­ruary 2023: Yep, still using it every day!

Update, Feb­ruary 2024: Still booping. Still snooping. Test­Flight build 26.

Update, Feb­ruary 2025: I have changed lit­er­ally nothing in the app, and it’s glorious. Test­Flight build 30!

Feb­ruary 2020, Oak­land