/ the-rise-of-self-hosted-apps

The rise of self-hosted apps

Here’s a sleeper prediction: a new crop of killer consumer apps are coming: self-hosted PWAs, and they will replace cloud services for many uses.

To name a few:

  • Home Assistant is a universal personal automation system, combining every smart device and data source available into dashboards, plots, and IFTTT-like automations.

  • Frigate monitors security cameras with private realtime AI object recognition.

  • Paperless indexes scanned documents with OCR and neural net based categorization.

  • PhotoPrism is an AI-powered private photo organizer with auto labeling and face recognition.

  • code-server is VSCode, the most popular code editor, with self-hosted remote access.

There’s a buzz building around apps like Home Assistant, which casts a large shadow over the smart home industry. You may not have heard of most of these apps before — that’s not unexpected. The technical knowledge required to set them up mostly relegates them to nerds running homelabs.

Thanks to favorable market conditions, home turf advantages of open source software, and a raft of enabling technologies from the past few years, there’s never been a better time for a few leading self-hosted apps to explode in popularity. Let’s dive into this phenomenon.

Users want to own their data

Recently, Eufy cameras were found to be uploading footage to their cloud. Notably, these cameras were marketed with claims of private, local-only storage. In the same month, home air quality monitor Awair junked their first generation of connected devices by discontinuing the cloud services on short notice. Through unaudited design faults and a business model which treats hosting as a cost center, IoT manufacturers are failing to deliver on privacy or longevity.

In a survey by Cisco in June 2022, 76% of respondents said they would not buy from a company they do not trust with their data. The study classified 32% as “privacy actives”, who identified as: caring about data privacy, willing to invest time and money in it, and had actually switched providers based on their data policies. In a 2021 US survey, KPMG found 86% say data privacy is a growing concern, with 30% responding that under no circumstances would they be willing to share personal info with businesses.

This is the sweet spot for open source self-hosted apps. Self-hosted apps have a home field advantage where data is private and sensitive: the sensors in your home, security cameras, paperwork, passwords, personal photos, and health data. There is latent unserved demand for apps which offer users confidence their data is truly private.

Local = fast

Another major benefit of local apps is latency. This is something you immediately feel when interacting with them. Every operation is nearly instant. The effect is magnified for users with slow or unreliable internet, or those without an always-on connection. Even with the shift towards edge computing to bring servers as close as possible to metro areas, for realtime automation and recognition tasks, you can’t beat physics: local apps will win.

Self-hosted AI has a bright future

Local AI is a notable feature of the majority of apps I listed above. Historically, large firms have had an advantage here. They have larger data sets to work with and off-the-shelf alternatives were generations behind. While LLMs currently require impractically expensive hardware to run, thanks to projects like Whisper, DeepSpeech, and Hugging Face, an increasingly large class of cutting edge AI tools have become accessible to run locally.

An interesting scaling property of machine learning is that while vast amounts of compute are required to train models, the models themselves require orders of magnitude less time and energy to run. As it becomes cheaper to run models locally, inference in private spaces like speech and cameras are seeing a push towards local processing, both for speed and privacy.

Successful communities outcompete big tech

Let’s take another look at Home Assistant. One of its key successes is its massive library of integrations with any device imaginable. The smart home industry faltered when it became a cross product of individual hardware makers supporting Google, Apple, and Amazon’s disparate home automation systems. Product companies are bandwidth-limited by how they form partnerships. Planned two-way handshakes are slow vs. permissionless integrations built on APIs or hacks.

An army of nerds are now using Home Assistant to solve their specific problems and sharing how they did it. If you search for any particular home automation challenge, you’ll probably find one of the first results is on the Home Assistant forum.

Why have products like Google Home plateaued, while Home Assistant has taken off? To its part, Google Home has its own huge list of device integrations, but the controls it provides are too simplistic. An expensive, top-heavy product development team like Google or Apple has to focus on solving bounded problems. This makes them uncompetitive when the problem space is sparse and a community of devs are expanding the space for free.

The web is good enough

The future of apps will not be installed individually on each device. Apps are becoming services you interact with across all your devices. Self-hosted web apps are uniquely well positioned for this, though there’s still a few pieces missing (particularly discovery of available local web-apps).

Progressive Web Apps have been around for a while, but have never had their day in the sun. One reason was the lack of push notifications on Mobile Safari, which was recently announced to be added in iOS 16.4. It’s no coincidence that the apps I listed above are all PWAs: the web is easiest to develop for, works everywhere, and has the largest pool of developers.

A common critique is that web apps yield clunky user experiences. This will be debated endlessly in developer circles, but native feeling UI is not necessary for mass adoption; the bar is “good enough”. Component libraries have closed that gap. MUI, Chakra, and Tailwind make it easy to create a UI which feels cohesive and adapts well to any sized device. Looking back across my 15 year professional history building apps, PWAs + an off the shelf component library are the fastest path to “good enough” that has ever been available.

The last mile is a huge opportunity

It’s never been easier to self-host apps: Let’s Encrypt made securing apps instant and automatic. Docker made them easy to install. Aside from Raspberry Pis becoming unobtanium over the past year, there are many available small low power computers in the $30-50 dollar range.

However, let’s be real: the biggest thing holding self-hosted apps back is they’re still too difficult to install.

A potential user must be able to:

  • Set up Linux on a device and get it onto their network.
  • Follow installation instructions specific to their chosen apps and distro.
  • Configure subtleties like DNS and HTTPS, then open the right address in their browser.

These steps are hindered by there being multiple ways to accomplish them, yet no best way.

For self-hosted apps to succeed, 5 minutes must be all it takes to get up and running. It must be trivial to discover and install new apps, and the apps themselves must be immediately locatable on all of your devices.

One promising approach would be a physical device which tunnels to the internet for external access. Such a tunnel could simplify user setup greatly by providing an easy to remember URL and automated certificate management. This is what Home Assistant Yellow is doing, complete with an add-on browser where you can install containers packaging other apps.

The future of self-hosted apps looks bright, but to have a shot at disrupting the past decade’s markets dominated by cloud hosting, they must solve this adoption problem. There is a chicken-and-egg problem here, but all that’s remaining is a foot in the door. As more awesome self-hosted apps appear, the incentive to ease adoption grows. Once you’ve solved it for one app, you’ve opened the door for others.

I think it will take vision and creative thinking, but eventually this dam will break. We’ve seen this story play out many times before in the history of computing. When free apps are trustworthy, solve a problem well, and become easy to adopt, they take off explosively.

/ practicing-urgency

Practicing urgency

Sunset from Japantown, San Francisco, on October 3rd 2022

“What would you like to be remembered for after you’re gone?”

I tried to stifle a laugh as I gazed bleary-eyed at my work laptop. It was a new colleague’s first day, and someone had offered an icebreaker at our morning standup.

I’d spent the night awake on the couch. Hours sitting, my whole body shaking, as I processed the news from the prior afternoon: my MRI had found something. The scan couldn’t identify it, but there appeared to be some kind of growth in my head. More scans in my future.

“I would haunt my wife, she’d love that.”

About 6 weeks ago, I was wheeled into an operating room at UCSF Parnassus for endovascular surgery. The operation would investigate and hopefully cure a rare condition called a DAVF.

This concluded 8 months of doubt and slow panic, searching for answers for a sound I started hearing in February. I’d calm myself by enumerating how low probability a bad outcome was. For the vast majority of people, hearing internal sounds is temporary and unremarkable. For a fraction of those, the sounds persist and there’s a diagnosable cause. A low percentage require intervention; the majority turn out to be benign.

We decided, with the help of the incredible team at UCSF, that it was worth it for me to have the surgery. The alternative was to wait and watch for the rest of my life. Thanks to advances in the past 30 years, the operation would be minimally invasive and had a high success rate.

I was cured that day. When I put in earplugs, I found that the rhythmic pulsing I’d heard constantly for the last 8 months was gone. Pure joy.

A photo of me in the ICU, smiling, after hearing silence for the first time in 8 months

The following morning, I learned my case had turned out to be higher risk than anticipated. With each pulse, blood was flowing backwards towards my brainstem. We were lucky to have caught my DAVF early and taken action before it could present dangerous symptoms.

What started as an innocuous rustling sound turned out to be the herald of a potentially life-threatening condition. I was in that tiny slice of the fraction of the percentage. But somehow, amazingly, I’d found a path through and had taken it.

“There is a tiny risk”, the neuro IR resident told me the day before the operation, “that you don’t wake up from this.”

We make choices every day. Not always so dramatic, but nonetheless vastly important. We are constantly choosing who we want to be by how we spend our time.

This summer, prior to hearing my MRI results, I was carrying several grindy projects which were sapping my energy. “I just have to get through the remaining unpleasantness”, I’d think, “and eventually I’ll be done.” That weight of upcoming grind became a fixation. I’d lose time thinking about doing all the things, and how much was remaining, instead of doing them. My coach Wen calls this an “energy leak”.

And then suddenly, it became less clear what the value of my time was going to be. I couldn’t afford to spend it on things that made me unhappy. As if the value somehow changed due to scarcity. Isn’t that funny? The past year mattered too, and the one before that. My change in expectations merely brought the present into sharper focus.

This year taught me to live with urgency, and how this can manifest in multiple ways.

I started by dropping obligations I could live without in the months leading up to my surgery. That was easy to do. I doubled down on the things most precious to me: time with my wife and friends, and what I’d be most devastated to lose: the capacity and presence of mind to be creative.

This was my first lesson of urgency: to take every opportunity to do what I treasure. Given a choice of last meal between a protein bar or your favorite foods, which would you choose?

While I’ve always been inspired by (and paid lip service to) the trope of living each day like it’s your last, it’s hard to actually put yourself in these shoes. I began to worry what’d happen if I became physically unable to continue my projects. The best shot I had was now.

I picked up a stalled project I’d been dreaming of for over a year, a journaling tool called TIME THIEF. Because I didn’t know if I’d be able to continue someday, I took most direct path towards the project standing on its own. This was jet fuel! In two fast months I finished an initial version I was satisfied with, which I still use daily. More importantly, that time was spent doing what I love.

Recently, a long-time mentor of mine explained something about himself I’ve always been too polite to notice: he’s an extremely impatient person. He admitted this when I noted he’d accomplished several huge long term goals in the past few years.

This is another thing I’ve learned about urgency: it’s worth wanting things badly enough to be impatient for them. It’s often what it takes to push through to the finish line, even when the path forward is arduous.

The same mentor got me started running marathons. On training runs, I’ve noticed a paradox: when my goal is to get to the finish line, I’m slow. I end up focused on making it to the halfway point, then the quarter point, 1/8th… until finally the run is over — the whole time waiting to get it over with. Oddly, my best runs have been when I set my sights to run beyond the finish line. It seems like that would leave energy in the tank, but empirically I finish faster. And it feels better!

I’ve realized something as I take stock of the tasks I deferred until “everything turned out okay”: I’d been working to get to the line, not for what comes after. When the finish line becomes the center of attention, it becomes an obligation instead of an accomplishment (oh hey, there’s Goodhart’s Law popping up again — no relation!)

Time is too precious to waste, but my goals, even the unpleasant ones, have meaning. That doesn’t mean a return to grinding. Working with urgency means using every tool possible to achieve the goals: reducing scope, delegating, even moving goalposts. So I can get to what comes after.

Wonderfully, here I am today, and everything turned out okay. Back to status quo. Back to energy leaks. The grinds I triaged earlier this year remain. I told myself I’d return to them when everything went well.

I couldn’t be more excited to do so. Impatient, even!

The night after I got my MRI results, I asked myself what I’d do if there was a magic wand that made everything I was worried about go away.

I realized didn’t need to escape from anything. I didn’t need to go thru hiking for 3 months to find myself (not for lack of inspiration!)

I love what I’m doing. I’m excited about my future. All I wished for was more time.

It looks like I got my wish, and I’m not going to waste it.

A selfie a week after my operation