20 September 2021 was the first day I became unemployed and started working for myself.
It’s the best decision I’ve ever made. Working for myself gives me a freedom I’ve never experienced before.
Over the past two years, I have:
-
created four small but successful products (all will be mentioned later in this post)
-
built an audience of 97K followers on Twitter
-
created this newsletter with 6,000+ subscribers
-
jumped on the AI hype train and successfully created a product with it
-
and survived a drama that almost killed my business
At the moment, my total revenue across all products is about $45K/month at ~90% profit.
I want to take this opportunity to write a recap of my journey so far. I hope this will be helpful for people who are looking to become their own boss one day.
Before quitting my job, I was a software engineer with 7 years of experience (in 2021).
I love building software. My first software product was built with Visual Basic 6 in high school. Throughout my career, I have always had some side projects along with my full-time job.
Below is a summary of my full career history:
Thanks to 7 years working in the industry, I picked up a lot of useful skills: frontend, backend, DevOps, mobile apps, game dev, and a bit of UX/UI design.
These skills became my biggest advantage and have helped me tremendously later in my journey.
Early 2020, COVID happened. I was forced to work remotely alone at home (in a foreign country).
It was incredibly boring.
I discovered IndieHackers.com and started listening to their podcast every day. I got really inspired by the stories of successful indie hackers like Pieter Levels, Kyle Gawley, Jon Yongfook (and many more).
The inspiration, the boredom of COVID, and the extra time I got from not having to commute to work led me back to my passion: building software products.
So I gave it a try. I started working on a new side project with the hope of generating some revenue.
My first attempt was to build a log viewer macOS app.
As a good software engineer, I wanted the app to have a beautiful UI, tons of features, a comprehensive architecture, and a unit test suite with >95% test coverage.
I worked on it for ~6 months. I felt like the project would never finish. Then, I got bored and abandoned the project.
It failed spectacularly.
But at least I got something from it: I gained a lot of experience working with Swift, which means I can build macOS and iOS apps much faster now.
It took me a while to recover from my first failure.
About a month later, I decided to give it another try (and this time, you can be certain that I wrote zero test cases 😂).
I built the first version of DevUtils in about 2 weeks. It’s an app that bundles all the frequently used developer tools into one unified interface that works offline on your macOS.
I sent the app to friends, family, and co-workers to use (for free) and received some good feedback. People love the app!
That was the sign I was looking for. I was excited and decided to add payment to the app: $9 – a one-time purchase to use the app forever.
Then, I posted the app on Hacker News. I think I got lucky, the post received some positive comments, and I got to the top of Hacker News for a few hours.
And that’s how I got my first ever internet dollar. I jumped like crazy in my bedroom in Singapore (I was still working full-time at the time).
Things started to slow down after the initial traffic spike from the Hacker News front page. I posted the app on Product Hunt and got another traffic spike, and that was it.
A week after that, I rarely get any visitors to the website. No more sales.
I knew that posting the app to websites and forums on the internet and hoping for a traffic spike wouldn’t work in the long term. I can’t get lucky forever.
So, I started to look for a long-term distribution channel.
I tried Google paid ads, wrote SEO articles, looked for sponsorships on newsletter/YouTube channels, and tons of other things.
There were some small results, but in the end, I didn’t see a way that could give me traffic for the long-term without continuous effort. (Except for SEO, but SEO is extremely slow to see the results)
This is when I think about Twitter and the #buildinpublic community.
I decided to give it a try to become a Twitter influencer.
The plan was that if I could get a lot of followers, I would have a consistent flow of traffic to DevUtils without doing much.
And so, I reactivated my old Twitter account and started building my personal brand. Most of my tweets were about DevUtils and it was quite boring.
I quickly learned that tweeting about DevUtils alone wasn’t going to help me gain followers. People just don’t care.
Sure, I engaged with other people in the community, replied to their tweets, made jokes, and was just hanging around. But in the end, if I don’t have something interesting on my own timeline, people have no reason to follow me. Just tweeting about DevUtils wasn’t going to cut it.
I needed to do something interesting to get the attention.
So I started doing a lot of fun stuff, using my skills and advantages: coding.
For example, this experiment is my first ever “viral” tweet with 100+ likes:
In summary, my Twitter strategy was:
-
Build interesting stuff and share it in public
-
Engage with other people
-
Write threads
-
A lot of memes and jokes
-
Overall, be an interesting person and be nice
After 6 months of consistently doing this, from 100 followers in November 2021, I grew my account to 700 followers in May 2021.
I considered Black Magic to be my first ever “real” business because it has a subscription pricing model with recurring revenue.
This is how it started.
Around May 2021, when I was approaching 1,000 followers on Twitter, I decided to do something special to celebrate it (and also to get more engagements!).
By looking around the Twitter API document, I learned that I can update the profile picture via API. So, I built a small script that shows a progress bar around my profile picture.
The progress bar would get closer and closer to 100% as I get to 1,000 followers.
People loved the idea so much! So, I turned the script into a web app and added a $4/month subscription fee for the “Pro” version, where people can customize the progress bar color.
And that was how I got my first ever recurring revenue dollar!
At this time, I was still working at full-time job.
Embraced the traction, I worked on Black Magic with all the free time I had.
I added many other features to Black Magic, mostly Twitter tools that help users create more engagements.
By building and tweeting at the same time, both my MRR (monthly recurring revenue) and my followers were increasing fast.
By August 2021, I have:
-
~$300 MRR from Black Magic
-
~$200/mo from DevUtils
-
~8,000 followers
-
~1,500 active users (most are free users)
Overall, there is great momentum. I felt confident that I might actually have a shot at making a living out of Black Magic and DevUtils.
That was when I handed in my notice, officially quitting my job. 20 September 2021 was my last working day and my first day as a full-time indie hacker.
I remember I went outside for a walk, took a fresh breath of air, and felt the freedom I never experienced before.
Around the same time, I started writing a newsletter (this newsletter!). If you are a long-time reader, you may remember I wrote about it in detail. Here is the post:
I have a saving of 2 years in the bank. If I lived in Vietnam (my hometown), I could easily go as far as 4 years without revenue. My backup plan was to just get back to a full-time job if things didn’t work out.
At the time, I didn’t have a family yet, no wife, and no kid. It was the best time for me to make the biggest bet of my life. So I did.
My goal was to get to $1K MRR in the first year, which would be enough for me to live comfortably in Vietnam forever.
Since quitting my job, I spent all of my time working on Black Magic/DevUtils, and still keep tweeting to build an audience.
The growth started to pick up. I added many new features to Black Magic, most noticeably the Magic Sidebar – a Chrome extension for Twitter that provides Analytics & CRM features.
This feature single-handedly changed Black Magic as a product forever. From being a fun engagement tool to becoming a true painkiller and solving big problems that many big Twitter accounts had at the time.
Later, I pivoted the whole product around this feature. I changed the landing page to exclusively talk about this feature instead of the profile progress bar and other fun features. You can see it at BlackMagic.so.
Within a few months, by building, tweeting, and launching the product on Product Hunt, my monthly revenue grew to $4K MRR.
There’s a lot going on during this period. Luckily, I’ve written about everything in this newsletter once a month like a machine.
You can read the related posts in this period here:
By February 2022, I have reached $4K MRR and 28K followers on Twitter, far beyond my goal.
In the first few months after quitting my job, I worked a lot. Probably 12 hours a day, or even 16 hours/day if you also count Twitter as “work”.
So when I reached $4K MRR, a decent amount considering my living cost in Vietnam, I started to slow down.
I still want to get more revenue, but I realized that this is a moving goalpost, and it will never stop. $10K, then $20K, then $50K. I knew I would never satisfied.
It’s much better to work and play at the same time.
So I traveled. I went for a trip around Vietnam.
My average working hours during this period was about 4 hours/day. I still tweet a lot.
Around September 2022, something magical happened: I was invited to the Indie Hacker podcast! The very podcast that I listened to every day when I started out. It was like a dream come true!
The podcast was released on 22nd September 2022, almost exactly one year after I quit my job.
Fast forward to October 2022, Black Magic grew to $13K MRR steadily.
Besides working on my existing products, I experimented and tried new things all the time.
I built several small products, some of which failed (EmojiAI, AskCommand).
One of them, Xnapper – a screenshot app, picked up my audience’s interest and became my 3rd successful product. It’s now making $6K/month.
I’ve written more about how Xnapper started in this post:
Working on multiple products allowed me to switch between them when I feel bored with one product, reducing my stress.
It’s also a good way to have a fresh new content for the Twitter audience. I was embracing “build in public” and I shared about everything when I was building the app.
For example, this tweet showing the mobile app demo got 1,700 likes! It’s almost like free marketing.
Around February 2023, shortly after Elon Musk bought Twitter, they announced that Twitter API (which Black Magic is using) will no longer be free.
I didn’t think this would be a big deal. I was making good money from Black Magic and would be happy to pay.
Little did I know that, the price was announced $42K/month (per month, not per year). There was a smaller plan at $100/month, but the restrictions and limits are so low that you can’t even run a weather bot with it.
Black Magic was at $14K MRR at the time. That means there’s no way I could afford the API price.
I was “forced” to either shut down or sell.
Long story short, I sold Black Magic for $128K. You can read about the whole story here:
As of now, I no longer own Black Magic, but I still love the product and use it every day.
The funny thing is, a few months later, Twitter changed their mind about the pricing. They introduced a new plan at $5,000/month.
This plan comes with some restrictions and API limits, it may or may not work for Black Magic, but I didn’t even bothered to check, because it was no longer matter.
So that was my first product exit. Not the way I wanted, but there was nothing I could do.
Around the same time, I started working on a new product: Typing Mind.
OpenAI announced the ChatGPT API on March 1, 2023. I’ve been using ChatGPT via the web interface for a while at that point.
The web interface was very limited and I get annoyed by it for a long time. For example, you can’t search your previous chats, the text output was slow, etc. Most annoyingly, the app logged you out and you had to login again every day, which was extremely frustrating.
At some point I was thinking of writing a Chrome extension to scratch my own itch.
OpenAI releasing the API was exactly what I was wating for. I immediately think of writing a better UI for ChatGPT using the API.
The next day, I registered the domain name typingmind.com and started working on the prototype for a few hours.
The Twitter drama kept me busy for the rest of the week, but I managed to get the first version of Typing Mind finished on the weekend.
On Monday, 6th March 2023, I released the first version t