2022: I just kept shipping
At the end of each year I summarize how the year went, reflecting on how I progressed towards my goal of being self-sufficient as a web developer, here are the previous editions of this article:
- (2021) Strangers from the internet paid for my MacBook Air: on my 4th year of indiehacking
- (2020) Indiehacking: a review of my 3rd year
- 2019: Further reflections on trying to start an internet business
- 2018: Reflections on trying to start an internet business
As of last year (2021), the business makes money. Not nearly enough to be self-sufficient as a web developer, but this year it continued growing enough at a steady pace that it makes me think one day it'll get there.
For most of the year, I kept working on OnlineOrNot, for roughly 2 hours every day before my workday started. Not that working on OnlineOrNot felt like work - I was doing everything from answering customer support emails, writing blog posts to build trust with potential and current customers, building landing pages, writing docs, shitposting on twitter, etc. No status updates, no standups, just building value.
Table of Contents
- On Success
- Working for Cloudflare
- Write more
- Pay attention to opportunity cost
- Register your damn business
- Black Friday can be 80% of yearly revenue
Much of OnlineOrNot's success boils down "show up regularly, do the work, over a long enough time period" - at some point I wrote my thoughts about this into an article: The unreasonable effectiveness of shipping every day.
Just show up, do the work, and ship, daily. How hard can it be?
I actually failed a few times this year, and quickly learned to just keep working on OnlineOrNot.
|it was not different this time, dear reader.
In late January, I spent a week to split out the feature flag service I use for OnlineOrNot into its own product, and realized "it runs entirely on Cloudflare's network so it's real fast" isn't as big of a selling point as "we've been around forever, have an adequate feature set, and won't randomly disappear" (part of why OnlineOrNot wins in a sea of uptime monitoring services), so I shut down the feature flag service.
Around April, I came dangerously close to splitting out my docs into another paid service before I remembered the reason my customers love my docs - they're deeply integrated into my app and website, they load ridiculously fast, and they're in the same mono-repo so I can update them while updating my code. An external service just can't compete.
In September, I used some shiny new tech from Cloudflare to build a real-time chat Trello power-up called Petit Chat. I built it over a couple of weekends, it gets users without marketing (the joy of being in an app marketplace). A fun distraction, but I'm keeping my focus on OnlineOrNot.
From reading what I write, hopefully you get the impression that I'm the type of engineer that enjoys shipping a tiny version of the end goal, and rapidly iterating while real customers use the product.
I don't enjoy work when my organization mandates a waterfall-like process, so at the start of the year after staring at the sea for a few days during my holidays, I realized I needed to change employers.
Building and releasing the feature flag service wasn't entirely a waste - I built it publicly on Twitter, got extremely lucky, and managed to score an interview at Cloudflare with the team building the tools I used. Long story short, now I get to work on Cloudflare Workers every day.
In 2021 I noticed the value of content marketing - I would write an article, a huge rush of attention would come in, and traffic would fall back to a slightly increased baseline. If I wrote nothing in a month, around 1.5k visitors would still come check OnlineOrNot out.
In 2022, this trend continued as I started following Coding Week, Marketing Week obsessively. I would work for one week on engineering for OnlineOrNot, then the following week I would write about what I did.
These days, if I write nothing, around 3.3k visitors still visit OnlineOrNot per month.
I noticed a similar effect with this blog - roughly 13k visitors come to MaxRozen.com on the months I write nothing, and that number steadily grows the more I write.
My favorite trick for writing more is turning comments/tweets into articles. I'll notice I've repeated the same information a couple of times in several forum comments, paste the comment directly into my IDE, add some context, and immediately release it as an article. You're going to write comments anyway, may as well turn your useful comments into articles.
As a good example of this, I started OnlineOrNot as a bunch of AWS Lambda functions, knowing that if no one used the service, it would cost me nothing, but if I succeeded, it would cost me a premium over a continuously running server.
Around June this year, I noticed that my AWS bill had grown to around $100 USD per month just for AWS Lambda, for something that could fit entirely within a single $5/mo VM.
While as an engineer you'd be tempted to immediately move it over, I realized I could deliver much more value to my customers in the week of engineering time a rewrite would take, than saving $95/mo.
This all changed once I launched a trial plan and suddenly a rush of users could cost me serious money, so in the end I rewrote and moved off AWS Lambda to save me from anxiety: On moving over a million uptime checks per week onto fly.io.
For a long time, I ran OnlineOrNot as a business using my Australian sole-trader tax registration, and mixed personal and business bank accounts.
This year I finally got my shit together and registered ROZENMD as a software development business here in France, and now there are business bank accounts and everything.
Being able to see all of your business expenses in one place, and not have to sift through credit card bills to figure out if something was a business expense is absolutely worth the bureaucracy.
Back in 2021, I wrote a book about a single function in React. I actually didn't try particularly hard to sell it - this blog has a few articles about useEffect, and they link to the book for folks that want a single resource to finally understand useEffect.
This year for Black Friday/Cyber Monday I sent out a couple of emails putting the book on sale for 50% off and was completely blown away at how many people bought the book.
Something like 80% of the year's revenue came from two emails I sent.