OnlineOrNot Diaries 12
Max Rozen (@RozenMD) / June 30, 2023
Another Friday morning here in Toulouse, let's go into how OnlineOrNot went this month (?!?).
I totally dropped the ball there, sorry friends. Trying to get back to a fortnightly cadence.
In this issue of OnlineOrNot Diaries, I talk about what I shipped, failing customers during an AWS outage, trying to ship a new type of uptime check and failing, learning more about the world of direct sales, and giving up on Google ads.
On Shipping
I started June by continuing my "build basic SaaS features people ask for all the time" trend by making it possible to add multiple Slack integrations to OnlineOrNot, and making it possible to pick which Slack channels uptime checks and heartbeat checks send messages to.
I also ran into an embarrassing bug (to me, my users didn't seem to care) that has been hassling my paid users for the past 15 months: if you upgraded to a paid account while on a trial, my trial emails would keep sending, pestering you to upgrade!
I also realised I had been writing these diaries since February without writing a single product update to my users, so I'm doing that monthly now. While it feels good to ship all the time, shipping the right thing matters.
The AWS Outage
OnlineOrNot went down with the AWS us-east-1 outage on June 13, so I wrote about it, and how I'm going to stop it from happening again. I have no idea why, but nearly twelve thousand people read that article. Google decided it was news, and shared it on the Google Discover tab.
The gist of it is, I thought I was operating entirely in a single region (us-east-2), I wasn't, and I let my customers down. In immediate aftermath I moved the component that failed into us-east-2, and added a feature to make it possible for me to failover OnlineOrNot between regions, so the entire OnlineOrNot stack can jump between us-east-1 and us-east-2 without customers being impacted.
This doesn't feel like it's enough though, so I'm building a second OnlineOrNot stack that runs entirely on VMs (think DigitalOcean, or Hetzner).
Trying to ship a new type of check, and failing
For a very long time now, customers have been asking to be able to ping their servers. Not every server exposes HTTP, so regular uptime checks weren't a good fit for them. While heartbeat checks make it better, it still requires logging into the server, and setting up a regular task to ping OnlineOrNot.
So I started by building the UI and backend for adding ping monitoring into OnlineOrNot, tested it in production, and realized AWS Lambda doesn't actually support running the ping command, on the operating system level. Even if you used Docker, it doesn't work. It's explicitly turned off by AWS, actually.
Lesson learned: build a dumb proof of concept showing off the raw feature (in this case, running a ping check on AWS Lambda) before you go off and build the frontend and backend to make the whole thing work.
All is not lost, however. Once I operate OnlineOrNot on a second stack with constantly running VMs, I'll be able to offer ping checks.
Leaning into Direct Sales
I recently read about how Nathan Barry leaned on direct sales to bootstrap ConvertKit in this article, and it made me realise that "direct sales" is effectively just customer research with a few extra steps.
I already do a bit of customer research (I ask everyone that signs up to chat about what they were hoping OnlineOrNot could do), so I realised calling people to discuss uptime monitoring is a good next step for better customer research data.
So I build a page to let folks schedule a demo with me. In two and a half years I've never actually demoed OnlineOrNot to a person live, so I'm a bit worried I'll screw up somehow. Though for the most part, I'm more interested in learning about my customer's businesses and how OnlineOrNot can help them, so I don't think I'll be doing much talking in these calls.
Giving up on ads
Yesterday, I read a comment on a forum arguing that you don't actually need a CDN, because some internet providers are faster than others (or something dumb like that). Rather than argue, I decided to build a free tool to show them why CDNs are useful. I called it "Do I need a CDN?", and in 24 hours folks have checked 1500 websites, and it has driven 10 new sign-ups to OnlineOrNot in that time.
For how little effort I put into this free tool, it has driven significantly more traffic per dollar spent than my ongoing ad campaign. So I'm deciding to give up on Google Ads, and lean more into building free tools like this (and maybe sponsor things my customers use, instead).