justin․searls․co
What follows is an issue of my newsletter, Searls of Wisdom, recreated for you here in website form. For the full experience, subscribe and get it delivered to your inbox each month!

Searls of Wisdom for January 2024

Greetings from me and my Persona(BETA). In case you haven't met him, here's what he looks like:

Justin's persona (BETA) creeping out Ebi Patterson

If you'll allow January to leak into the first week of February (as I have), what a start to the year this month has been! I kicked off a brand new podcast and cut 4 episodes for a grand total of over 8 hours of explicit-rated, Searls-flavored content. Less importantly and after 7 years spent cooking in the R&D oven, Apple Vision Pro finally released, ushering in a mostly certain future amid a wildly uncertain present. And the world is finally fixated on a problem relevant to my life: how much of a time-consuming pain in the ass it is to fly between Japan and the US.

But today, we're not going to talk about any of that. We're going to talk about the nature of software and what it means to truly own an app.

ONCE more, into the breach

It is possible you've heard of a fellow named David Heinemeier Hansson, an entrepreneur and programmer who is more frequently referred to as DHH. He created Ruby on Rails way back in 2004, and in a meaningful sense my world has been tied up in his ever since I started using Rails in 2005. Last year, he and his partner in business/crime Jason Fried put up this web site, hoping to kickstart a movement curiously-named and infuriatingly-cased as "ONCE."

What is ONCE? A manifesto as much as anything:

Today, most software is a service. Not owned, but rented. Buying it enters you into a perpetual landlord–tenant agreement. Every month you pay for essentially the same thing you had last month. And if you stop paying, the software stops working. Boom, you’re evicted.

For nearly two decades, the SaaS model benefitted landlords handsomely. With routine prayers — and payers — to the Church of Recurring Revenue, valuations shot to the moon on the backs of businesses subscribed at luxury prices for commodity services they had little control over.

Add up your SaaS subscriptions last year. You should own that shit by now.

Say what you will about David and Jason, but they have a way of striking a nerve that resonates with what a lot of people are feeling. Exhaustion over the fact every self-contained utility has somehow morphed into a perpetual and pricey subscription. A growing sense that the software we've come to depend on for activities we deem vital is in no way ours and is liable to disappear at any moment. Maybe even a hint of resignation that every app we use will only ever meet 90% of our needs and we'll forever find ourselves with no recourse but to duct-tape disparate systems together in a vain attempt to cobble together something resembling a seamless end-to-end workflow.

Well, they've released their first pay-for-it-just-once-we-swear standalone app in Campfire and it comes with this license:

Permission is hereby granted to any person purchasing a copy of a ONCE product (Campfire), its source code and associated documentation files (the “Software”), to install a single instance and modify a single version of the Software as provided. This does not include the rights to publish, distribute, sublicense, and/or sell copies of the Software, source code or products derived from it.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

The user of the software represents and warrants that they will at all times comply with applicable law in their download and use of the Software.

If you know anything about the software business, this is an unequivocally radical license. Its brevity alone should tell you it's completely different from every EULA you've ever mindlessly agreed to. It's closer to the open-source MIT License than any commercial license anyone has seen in the last 30 years.

That said, it's still just a license. It isn't true ownership. If you pay $299 you won't own Campfire, you'll merely hold a license to do damn-near almost whatever the fuck you want. And no judgment—that's pretty good! Paying a one-time fee for a corporate chat app to rot your people's brains and sap your organization of creative productivity certainly beats the pants off paying thousands of dollars a month to Slack for the privilege.

But all this got me thinking: what would it look like for someone who isn't a programmer or capital-b Business to own their software outright for once?

Well, let's find out…

NEVER gonna let you down

Introducing NEVER, a new line of software products from Justin Searls.

  • Pay me or don't, you own the copyright.
  • I'll write the code, you tell me what it should do.
  • I give you the software, nobody else uses it without your say-so.
  • Simple and straightforward, you'll never hear from me again.
  • I mean it. Never.

Our brains have been so thoroughly warped by the degree to which software has eaten the world that it's been a while since anybody's asked what the hell ownership of software even means, especially when the marginal cost of making a perfectly-functioning copy of a piece software can be generously rounded up to a sum of $0.00.

This all probably sounds a bit silly, I'll admit. But humor me by considering ownership of creative work in a different context for a second:

Suppose I commissioned a painting from a respected artist. If the artist were to return a few months later and deliver a single print pulled from a stack of hundreds, I'd be furious! I don't want a mere copy—I want to be able to feel the brush strokes on the actual canvas they were painted on. That painting isn't truly mine until I'm free to to sell tickets for others to look at it, to print it onto t-shirts and coffee mugs, and to erase it from history by throwing it in the garbage.

If you can imagine the above scenario, it's because there's a long history of patrons funding starving artists to produce private works of art. But analogous acts of patronage to commission closed-source, non-commercial software would seem absurd. If some millionaire named Pedro were to pay a solo developer to write a bespoke calendar app called PedroCal for no one's use but his own it might elicit confusion, disbelief, and maybe even anger.

So why is a statue of Pedro posing with his pet lion considered a perfectly-acceptable status symbol, but not a single-user productivity app that only runs on his personal phone? Maybe it's because the massive potential economic value of useful software makes the act of withholding it from the market (whether as a product or as open source) feel like a crime against capitalism. For decades, every innovation in the art of software engineering has been undergirded by the belief that software's ability to be copied and distributed without any loss of fidelity represents a natural imperative to copy it more and distribute it further.

But what if we designed software without any intention of copying or distributing it at all? And what might we learn if we tried?

Truth be told, I've been tussling with this idea for years. My entire career, I've been making little toy apps and tools for no one's use but my own, but I've nevertheless felt compelled to either sell them or share them. I explored the joys of designing software solely for oneself in my 2019 talk The Selfish Programmer, but even then I lacked the courage to reserve the app for my own private use and to this day work to keep it running for the sake of the tens of thousands of people who've come to rely on it as a free service.

Of course, another big reason why nobody walks around with a basket of their own one-of-a-kind apps is that it's become comically expensive to produce and maintain working software. A competent programmer's time is so expensive that hardly anyone who isn't themselves a programmer could ever imagine owning a piece of software designed exclusively for them.

Until now, of course.

My first patron

In the twenty years we've been together, my wife Becky and I have followed parallel vocational arcs: we went to college at the same time, started our careers at the same time, gained notoriety in our professions at the same time, and we each began developing ideas and insights that we aspired to share with a broader audience around the same time.

As for me, whenever I wanted to put something creative out into the world, I carried an easy confidence that came from knowing I could always fall back on my skills as a programmer to build a custom solution to any problem. It might cost me some number of nights and weekends to accomplish, sure, but I was drunk with the all-too-familiar hubris that—in a world eaten by software—programmers can do anything they set their minds to.

Meanwhile, when it came to Becky's creative endeavors, I left her to fend for herself with whatever off-the-shelf software might be available. Whenever that resulted in her ambitions being constrained in a way that mine weren't, I'm ashamed to admit I didn't do as much as I could have to unblock her. Occasionally, I'd slap together something custom for her to use, but I rarely followed through to the extent that she could fully realize her vision without depending on me for ongoing logistical support. As a result, she often felt trapped between poorly-suited consumer apps on one hand and half-baked custom software on the other. Unsatisfying.

Well, as of month ago, I committed to finally take the time to table my own selfish ambitions and build Becky some software-assed software to help her fulfill her own. And I'm taking my time to do things "right"—putting in just as much spit polish as I would if I were building it for a corporate client who was paying my full rate. I'm also not calling anything done until she can fully manage it herself, including handing it off to another developer, if necessary.

I have a few projects in the hopper, but shipped the first of them just this week.

NEVER #1: Beckygram

I don't know if you've heard of an application called Instagram, but as an early adopter of the iPhone I really enjoyed it back in the day. Instagram was an app where you'd take a picture of the chicken salad sandwich you just ordered, apply a colorful filter to make your iPhone camera look less shitty, and then post it so your 8 friends might consider bookmarking the restaurant on Foursquare. Then you'd close the app and not think about it again for a few weeks.

This was, of course, before Facebook got their grubby mitts on it in 2012. Since then, Instagram has gradually morphed into a finely-tuned Skinner box designed to hijack people's dopamine pathways in order to maximize the time they spend in the app. Even though using Instagram makes users feel worse about themselves—some more than others—the more time users spend in the app, the more ads Facebook can sell. And any unhappiness it instills in those users is a feature not a bug, because unhappy people are more likely to engage with ads than happy people, which only makes Facebook more money. The algorithm is successfully meeting its revenue-optimizing objective!

This is all very good news for Mark Zuckerberg, but it is perhaps less good for the 2.4 billion other people on Instagram. As a result, I wouldn't blame someone if they decided to uninstall the app.

Now, if you decide to get off Instagram and just want to share your chicken salad sandwich somewhere else, there are a couple competitors like Glass hoping to rekindle that OG Instagram magic. But, if the thing you want from Instagram is to connect with any of the billions of people who find themselves glued to it, what the hell are you supposed to do?

Enter Beckygram.

Becky is an NSCA-certified personal trainer who is currently building out a strength-training program called Build With Becky. And if there's one thing I've learned so far about the fitness industry, it's that literally everybody uses Instagram as their calling card. (Even more so than programmers ever did with Twitter!) Instagram is so central to the fitness community that to retreat completely from the platform would inhibit a trainer's ability to grow and maintain their professional network. Weird as it seems to me, as someone who "likes people" and is "committed to growing in her career", Becky was looking for a way to spend less time staring at the Instagram app while simultaneously gaining more control over where and how her creative work was stored and presented.

So Becky approached me with the idea of building her own marketing platform with the following capabilities:

  • Post images, videos, and carousels, just like Instagram
  • Present posts in a responsive web site and with a carousel UI that doesn't totally suck
  • Allow for advanced editing workflows like scheduling when posts are published, reordering images, and swapping media out after the fact
  • Render each post's caption (which are blog-post length these days) as full-blown HTML by supporting proper formatting and links with Markdown
  • Support native mobile share sheets and make it easy for users to e-mail comments and questions
  • Enable calls-to-action for her services and products to be added in the future
  • Syndicate every post to her @beckyjoy Instagram account using my totally-designed-for-this-app-all-along Ruby gem, feed2gram

I spent January building it and Becky said she likes it, so I shipped it. Mission accomplished. She's hosting it at gram.betterwithbecky.com if you want to check out her first post.

You might notice that there's only one profile (Becky's) and no way to sign up or login to make your own posts. That's because this is a NEVER product, which means it's Becky's app and we're just visiting it. She has graciously chosen to permit us to browse whatever content she posts there, however! 🙏

Without diving into the technical details, Beckygram is a robust app that's designed to scale gracefully to handle hundreds of thousands of users and terabytes of data. It was a lot of work! In order to create a single-user Instagram, I first had to invent a multi-user Instagram and then go the extra step of restricting access to just Becky. If I had to guess how much the app is "worth", I'd wager it would have cost between $75-100k to pay a vendor to build a similar app.

Given this level of investment, it may seem absurd to have gone to all this trouble despite having no plans to scale beyond one user. Maybe Becky will open it up at some point, who knows, but the point is that's entirely up to her! For now, all I know is she's the only personal trainer on the block with her own self-hosted Instagram-like portfolio app that automatically syndicates to Instagram. (Welcome to the POSSE, Becky!)

NEVER say never

So is NEVER a real thing? Am I going to continue writing apps that only myself and a select few patrons can ever use? Actually, yeah. That's exactly my plan.

Why? Because my career as a serial over-sharer of software has taught me that just because distribution is free doesn't mean there isn't a cost.

GitHub let me create as many open source repositories as I wanted, and it led to me blowing thousands of hours responding to issues that didn't affect me and implementing feature requests I didn't need. Heroku charged me the same amount for Postgres whether my database contained one user or ten thousand, and it resulted in my receiving dozens of e-mails from upset users every time Heroku experienced an outage. RubyGems and npm have covered the bandwidth costs for my libraries to be downloaded millions upon millions of times, and I've lost countless weekends helping users recover after a transitive dependency broke their apps through no action of my own. And while I don't regret sharing so much of my work per se, there were undoubtedly other things I could have been doing with my time that I didn't consider when I first ran git push or npm publish. I'm just finally realizing that my propensity for freely sharing my work has often cost me more than I bargained for in the long run.

Web3 came and went and perhaps the only concept worth taking from it is that of "digital scarcity." In a world of free, instantaneous distribution of information and software, what have we lost? Call me silly, but there's a certain preciousness to the idea of someone taking a month of their life to build an app that only their spouse will ever benefit from. Tailor-made to their needs. That doesn't have to be shared.

Okay, that's all I got. Have a great month and feel free to reply to this e-mail to tell me what an awesome husband and/or terrible open source maintainer I am.