Hardcore Year: I Learned Swift, Build a Mac app and Earned $1635 in 1.5 months
3 month ago, I quit my job to follow my passion and make my own products. Progress Bar OS X was my second project in my 1 year challenge. This is the story of how I made it, specifically written to answer all of the questions I’ve received on Twitter.
TL;DR
- Found an idea from a problem that I have
- Made a raw prototype in 1 day from Github example and share with friends
- Made MVP based on friends feedback in 2 weeks
- Launched and became #1 in Product Hunt, Hacker News (Show HN)
- Got some hate that it’s not free especially on Reddit
- Earned the first $700 in 2 days after the launch
- Made second version according to feedback in next month
- Earned $1635 in total after launch in 1.5 months
Where Do You Find Product Ideas?
People have asked how I find ideas for my startups.
1. Habit of collecting ideas
I have a habit to put every single idea for problems that I have into a list. Without judgments, evaluation or thinking, I put every single idea on to that list. This means that my idea for “Uber Horse” is even written down. I use Trello and I have about 10–15 ideas naturally per month. Keeping a list of ideas is crucial to making sure that once one product is launched, I have the choice to choose which product I want to launch next. Some of my ideas, prioritized before Uber Horse, are creating a marketplace for buying crypto with Paypal and launching Progress Bar OSX.
2. Review each of these ideas with friends
Friend same values and experiences. If they would use the product, I know it has potential.
I have a group chat with friends, dubbed the “Spicy Group”. It was initially made to help me launch my first idea a year and a half ago. The group is still thriving and we’ve found a place to share our ideas, support each other, and send stupid, but hilarious, memes. I owe a lot to these people. Love you guys. If you don’t have a spicy group of your own, I recommend you look in WIP Chat and find some friends.
Friends honest review helping to not suffering too many choices of ideas
Too much opinions is also bad
In total hypocriticism, it’s just as important not to listen to too much feedback. Too many conflicting opinions has the potential to burst your bubble and make you fearful of just trying.
Idea of Progress Bar OSX
Since I quit my job and started working alone, I measure time differently.
I don’t care about hours and minutes.
I don’t have meetings, appointments or calls.
I only have meetings with myself. :)
I don’t care what day of the week it is or whether it’s a weekend or not.
I don’t care what the date is.
Public holidays don’t matter because I always have public holidays off (if i want).
What I really care about is life’s progress.
How much time has passed? How much more time do I have to finish the projects I am dreaming about?
I am a big fan of @year_progress tweets. It keeps you aware of the passing time. What I wasn’t a fan of was how they only tweeted a maximum of twice a week and you had to navigate to their account to check the progress status of the year.
What Is The Solution?
I really like Mac menu bar. It’s minimalistic and simple. What if I put the year’s progress on the Mac menu bar app? I put the idea for Progress Bar OS X on my list of ideas and kept working on my previous project, Sheet2Site.
Validation
Question from TomHughes:
I’d love to hear how you validate your ideas before building them out 🙂
Solving my own problems and just building
I don’t like to validate ideas because me and a lot of other people are so bored with this “Lean Startup Method” with yet another landing page that collect emails and says that “New awesome app is coming soon” (soon forever) subscribe for updates.
These emails give some feeling that something is happening (or no) and we can get stuck in this idea validation forever. You will never know until you try to sell and see if people will pay for it. I think everything else is bullshit. For me, it’s much easier to just build stuff and see what happens.
In the worst case, I will have only one user, myself, and learn coding a bit more.
Building
How I learn new things
Questions from JasonLeow and JustMissAlex
I’d love to hear about how you managed to pick up a new coding language so quickly to make ProgressBar! (assuming you had to) And how the rest of us can do that!
I’d love to hear — whether in this article or another — about how you learned to make things. It seems like over a year ago you didn’t know how to code, and now… here you are!
I’m using programming as a tool
I think a lot of people are starting to forget why programing was created.
I don’t want to learn tons of programming theory from courses and books that I will never use. I tried to complete 10 courses but I never finished any of them. I’m using programing as a tool to implement my ideas in life. For me, learn programming is not a final goal. I just learned by Googling things like “Swift menu bar OS X”. Some man say this is not the best approach because I will not learn programming basics. But I don’t want to learn basics.
This is definitely bad if I have a goal to to find a developer job because they will probably ask me on interview about algorithms. encapsulation, a bunch of other stuff. But I don’t want to find a developer job so I don’t care. And guess what. Users don’t care either. :) We keep seeing these articles “Web Developer Skills 2018”, “Roadmap of iOS Developer” paths with tons of tools that you need to know. Lists of 10 books with 400 pages that you need to read before you even can try to make something.
If you are learning programming as a tool to implement your ideas it’s much more fun and interesting. There are always problems, something will not work, but these problems are real not some hypothetical problems that will never happen.
What language to choose?
We can make OS X apps in two ways using native Apple languages like Objective-C and Swift or we can use frameworks like Electron that allow you to write on Javascript.
I heard that Electron is really heavy weight and even simple app will be 200Mb+ so I skipped it.
Objective-C syntax for newbie looks very scary:
So when I saw this, I had panic attack and decided skip it as well. :D
Swift syntax looks like Javascript so I decided use of it.
Find code examples on Github
Instead of trying to make the app from zero, I tried to find some examples on Github. It saved me a lot of time especially because I used a new language. I found this example of a menu bar clock app so I only needed to change the logic to my own.
Share with friend first prototype
On April 12th I made the first prototype in 1 day and shared it with 10 friends. It was super raw, but it worked.
And I got pretty positive feedback but I thought: Ahh, this is friends so all of them are lying to me to so they don’t upset me.
What really surprised me, I saw my app on some of friends laptop after a couple of days after I shared with him. And I asked him pretty seriously:
- Why you didn’t delete my app? Did you forgot?
- What? No I told you I like it and I want to use it
This was really unexpected because feedback about all my previous app was “Oh nice”. They were just being polite.
Mr. John O’Nolan feedback
My friend John O’Nolan, co-founder of Ghost, was one of the people I asked to trail my Progress Bar OS X. He made a legendary blog post about Ghost idea that went crazy viral. Afterwards he ran a Kickstarter Campaign and raised $300,000. Now, Ghost is making $948,744 ARR. I recommend to listen his latest podcast where he shares how he is doing all of this.
The thing is, John is the most critical person on Earth :D. To surprise him, you need to invent a teleporter or a time machine . When I talk with him, I feel like I’m talking with somebody 100,000x more intelligent than me with the addition of perfect British English. :D :D :D
My first success, Dark Mode List, made me first $15 in revenue and was featured on Lifehacker. I was so happy with my success but John replied by saying:
Traction = 1,000+ people want to pay you.
If you find 1,000 true fans who actually want something enough to pay for it, then you can talk about optimising and growing it
If you didn’t hit that level. It’s not traction. Move on. We’ve all been there.
You try as many different ideas as possible until something takes off
I was very upset. My biggest success in life was destroyed in 1 second.
Yep, this is startup reality. Startup life is not fancy romantic writing algorithm on the window, eating pizza, coding and overnight success, like in the “Social Network” movie.
I accepted it and memorized the quote. Better to have hardcore, but honest, feedback from people who have experience instead of fake nice feedback like, “Oh nice idea! You are so awesome”.
When I had my new idea about Progress Bar, I was scared to show him because, as cool as Progress Bar is, it’s definitely not a teleporter. It was still a raw prototype. But I decided to try and sent it to him. I was ready to hear a new portion of hardcore honest feedback but unexpectedly I had this reply from John:
Yo this app is fucking cool. I have feature requests…
No way. Probably he is kidding me and this is his sarcastic humor but it wasn’t. He was quite serious. He didn’t joke. Even most critical person on Earth can like my app. :)
So I started to implement his and my other friends’ feedback and made it all public in WIP chat.
Design problems
I want to show a progress bar icon that moves when the progress is changing. From the first impression, it’s a very easy task but after I dug deeper this became a very challenging problem. The design had to:
- Fit Apple menu bar design
- Be small because menu bar does not have a lot of space
- Not conflate with battery bar
I thought before that UX designer work is easy, they just draw something and get paid well. But now I know how wrong I was. This work could be more difficult than a developer’s work.
I even decided to install Sketch. Before I used only standart OS X image editor. :D
The design took almost two weeks. I tried many different ideas like:
All of them sucked. The trick with a design, if you’re not a designer, is that you know that it sucks — but you can’t change anything. Everything you try makes it even worse and then you tend to feel useless.
I needed somebody who could rescue me from design hell. I asked my friend Dasha for help, she is designer and I really like her style.
After of couple of hours of collaboration and experimenting we finally got something that at least didn’t suck and I liked it. :)
Write code that don’t scale
I didn’t know how to make progress bar moving. Probably there is some library that can do it in 1 line.
But I would need to spend time finding this library, connecting to my code it and learn how to use.
Instead, I decided to do it in the most dump and straight forward way ever.
I made 66 different images (33 in a light mode and 33 in a dark mode) of progress bar state and put them all into one big if code.
It’s the worst code ever, it’s not optimized, no S.O.L.I.D. no D.R.Y.
But it works and later I can refactor it.
Updated: After 3 years I still didn’t refactor it, and it works perfectly for 2,000+ users. No one complained about it.
Making a website
I want to make the user see immediately what the product looks like in real life, without shiny marketing design.
I was inspired by Pixel Snap and their cool website, but I want to make not just a standard MacBook with a GIF inside. I wanted to give users the ultimate experience from the app within the first seconds when they opened the website. So I decided to make a fullscreen image slider with Mac desktop to show the user how the app will behave on their desktop just after he downloads it. Thanks for Raman, Sasha Koss and Max Manzhos who helped me to implement it.
http://www.progressbarosx.com/
I have a big desire to use @year_progress’s which is really good “The one progress bar you’d rather see go slower” but thankfully my friends stopped me. :) So a couple of days later I was struggling with a slogan for my app. Thanks for my friend Raman that suggest to use a slogan from “Fight Club” movie:
This is your life and it’s ending one minute at a time.
Monetization model
It will be paaaaaid! Paaaaaaaid only!
Today people are used to things being free, freemium, open sourced or cracked and for me was really hard mentally to make a decision to make it paid only and sell for $5. But my friends convinced me to try making it paid only.
Besides, I’m an indie developer and need money to pay my rent and bills. If I work for free I will starve and die and not be able to make more apps. :D So I decided to make it paid only and see what happened. I prepared myself that there would be some negative comments (although there were more than I expected but more about that later).
Payment System
I didn’t want to put this into the Apple Store because I didn’t have time for Apple review which could take weeks. Also, I didn’t want to pay $100 for Apple Developer program and give Apple 30% from each of my sales so I skipped it.
Probably you will think about using Stripe. But Stripe isn’t supported in Ukraine. :D so I did some research and found Gumroad. It takes the fee are 3.5% + $0.3.
OK at this point the app is ready to take off and I had spent around 2 weeks on it.
Launch
I launched Progress Bar OS X Sunday, April 22nd 2018
Product Hunt
I prepared standard Product Hunt launch kit as always (title, description, GIF thumb, screenshots and the first comment )
I launched on Sunday 00:01 San Francisco time and announced it on my Twitter, Facebook, WIP chat and emailed it to all my blog subscribers.
Small tip: the first image will be used as a sharing image in Facebook and on Twitter so make sure it gives a clear understanding on what your product is about. To check or refresh the image use twitter card validator or facebook debugger.
The app become #1 Product of the Day
Hacker News
Next, as always, is Hacker News (HN). I submitted the app in Show HN but my post failed Probably because the title wasn’t clear enough.
I almost gave up but thought ‘maybe I need to try one more time. In the worst case they will just delete the post. So just before sleeping I submitted it with a new title.
When I got up, I was very surprised when I saw that my post #1 in Show HN. But with a lot of hateful comments. :D
If your post failed in Hacker News try to re-submit it one more time with different title. And remember to wait 4–5 hours after posting before making a verdict on the success because posts don’t go to the top immediately.
My favorite is Reddit because so far, I never succeed on it :D I submitted to /r/macapps but this time I got a lot of comments…a lot of hateful comments even more than on HN.
How about Marketing?
Questions: from MaxRovensky and Srebalaji
Marketing! I know how to build things, but have no clue how to get them in the hands of people
I want to hear how you market your product in your April results.
But what is marketing?
I don’t know how to do “Marketing” and what it really means to be honest. Is it paid ads? I just follow pretty same process: Launch on Product Hunt, Hacker News , Reddit, share with my followers everywhere. After I writing a story on Medium about results. That is basically all my “Marketing Strategy”.
Five dollars for this? It MUST be for free! 😡 😡 😡
It was very painful to read this comment. A lot of people said that it should be free, refer to existing open source tools or saying that they can make such app in 5 mins.
Here are some of them:
- Why the price of 5$? Maybe start with a lower price? Not much functionality here to justify the price point.
- This can easily be done using the program BitBar
- I’m not against selling software, but $5 for something I could probably whip up in an hour and post as open source is really not the best way to get people to use your app. This app just doesn’t provide enough value to be $5–maybe if it was a dollar.
- Should be free, with no annoyware and offer a $5 purchase for some extra features, or simply ask for donations
- If I had a mac, I would probably a make a free version of this
- Five dollars for this? Are you NUTS?
- I really hate paid stupid apps like this in Apple ecosystem.
- $5 for massive anxiety???
- Your charging 5 dollars for that math to be displayed in the menu bar. That’s an incredible amount of money for nearly nothing.
- I’m in no need for such a thing. Simply stating that charging 5 dollars for simple division is a bit steep.
Someone even tried to to bargain in chat.
So true:
Even Dropbox and Airbnb was hated
Based on this behaviour of Hacker News users you can even make an app for free :D.
So remember:
When HN hates something as being stupid / simplistic / easy to make in 5 minutes. Usually, means it’s a good idea © John O’Nolan
If people are bitching about the price you hit the right spot. Because if they don’t bitch they either don’t care for your or they think tit’s a bargain
So I decided continue and took this as a good sign. :)
Press
I contacted around 40 journalists but didn’t get much press attention this time, maybe because the app looks simple or because it’s paid only. But I’ve got featured in Lifehacker Russia, Applesfera and bunch of other small sites.
Nas Daily
Also I found Nas Daily — this is an awesome guy who quit his job and decided to make 1 min inspiration video every day. He has been doing this more than 1 year every day and 6.7 million people like him. He has progress bar t-shirt so I thought it should be a perfect fit for him.
I messaged him without any hope because I thought famous cool people never reply but he replied pretty quickly:
YO I LOVE IT! Thanks for making it
It was very unexpected and a big pleasure for me.
Traffic
I got almost 10k visitors to the website in the first 3 days from launch day, Mostly from Product Hunt and Hacker News. And almost 15k in all the time. Obviously traffic is dying.
Top 5 traffic sources
- Hacker News
- Product Hunt
- My Personal Site
- Applesfera
Conversion rates
What we see here is everything is dying. Product Hunt and Hacker News traffics obviously don’t last forever.
But the conversion rate from unique visitor to click on buy page increase twice in period of May 1–31 because traffic became better qualified.
Month 2 — v2
Typically after a launch I get a lot of feedback from the users so I spend the next month implementing a lot of features that were requested and making free updates for all users.
- Custom day end time
- Custom deadline with emoji support
- Launch at login
- Save all your settings after quit
- More accurate month progress (by hours)
I was a bit tricky to implement Day Progress function with Start and End day condition. I need to make sure that it’s handle all possible scenarios and corner cases like what if current time ≤ OR ≥ that now. Thanks Sasha Koss who helped me with an algorithm.
Unit testing with Google Sheets
I didn’t know how to write unit tests is Xcode and since I a big fan of Google Sheets, I event buit a tool that allows you to create beautiful websites without code from Google Sheet, I decided to write unit testing directly there (everyone stay calm). I made a function and test it with a a lot of different inputs:
Should I stop and keep working only on this app?
I had a thought:
Maybe I should stop and keep working only on one app because people are paying for it and it’s kinda validated?
It’s such a comforting idea that you can stop launching new apps every month and focus on one and just keep polishing it.
Hell No! It’s a cool sign but it’s definitely not enough to stop and get married to this app.
Revenue
My hope was that I will make around 50 sales maybe in the best case 70.
After launching I went to sleep and when I got up I saw that I made $700. This was insane. In two days, I made almost my monthly income before.
And $1635 by the end of May
Net Profit
I paid to Gumroad 3.5% + $0.3 from each sales so I get only $4.525 from each sale. In edition I paid extra $10 monthly fee to get this lower fees otherwise I would paid 8.5% + $0.3
Net profit: 327 sales X $4.525 – $10 fee = $1,469.6
The real fee is 10.1% and it’s not so obvious when see 3.5% + $0.3 fee at the first time because for low cost products like $5 fee is high.
Magical feeling
It’s a very cool feeling that some random people will pay you and use your product. It’s totally different when I exchanged time for money when I worked on a job.
Passive income?
It’s definitely not a passive income because sometimes I work 16 hours a day on my baby product, fixing bugs, implementing new feature, talking to users etc. It’s so fun and my passion + other people use it. So cool to know that some random guy from Paris or Los-Angeles or somewhere else purchased your app and sent you some grateful feedback that he likes your product. But I know when I’m sleeping or tired, my baby is working for me and making me money.
I still didn’t get 1,000 true fans that are willing to pay me, but I’ve got 327 so only 673 left to go
Question from Roman Mishiev:
I want to hear about your plans to make the same results in May but recurrent. Without detracting anything from you accomplishments, I would be interested to know if you’re doing any tracking on the results of
This is just a leap of faith
I don’t have any plans, just a leap of faith. I’m just throwing spaghetti on the wall and seeing what will stick. I wish I had a plan that gave me some stability, but probably it’s go back to a real job. :D
Menu bar apps revolution
After I launched Progress Bar OS X, menu bars apps started launching on Product Hunt every week or even more often.
Some even tried to make the same app and put a gig on Upwork LOL. :D
They say imitation is the highest form of flattery :)
I think this is a good sign that we found some product validation model that could get value for people and they will be happy to pay for.
Hardcore Life
I want to share a bit about what hardcore mode is like. In general, it is pretty comfortable. Working from coffee shops, sleeping and going to the beach for sunset. But, there some not very uncomfortable moments. :D
Dogs attack
I’m not renting a bike, saving me $50 per month. I walk a lot, almost 3–4 km per day. It’s good exercise especially if I’m sitting all the time. But the main problem is if I need to walk at night. There is a 2km dark road full of dogs gangs that want to attack me. :D I made a short video for friends but I decided to share it with you as well:
And 1 meter snake at my house
Problem with a bank
All my revenue was sent by Gumroad to PayPal. I opened a bank account in Thailand while I was there. It’s not easy because you need to have a work permit, but after trying at 20 banks one finally gave in.
When I entered the wrong pin code via phone, they said:
You card has been blocked and you need to go to Thailand to unblock it. It doesn’t matter that you are in a different country.
Sincerely your,
Awesome bank ;)
This was my only way to withdraw money haha. :D
It’s a strange feeling when on the Internet, you have revenue but in the real life you are starving because you can’t access your money.
There was a day where I ate only bread and cookies. Some people do a juicing diet but I made a bread diet hahaha. :D
I drank free tap water in Starbucks. OMG, what could be better than a glass of tap water in hot Balinese weather?
I also worked there till night and then, even longer because it was free. :D
Sarcasm hashtags: #StartupLife #FancyOfficeInSanFrancisco
Luckily, one of my friends helped me. I sent money to his PayPal account and he withdraw cash for me at the ATM.
I ran into a local cafe for food and bought a big noodle and omelette. This was one of the tastiest dinners in my life. :D
Total April and May results
Revenue
April Total Gross revenue was insanely big for me, $1570 but MRR is low. Why? Because the biggest piece of Total Gross Revenue was made by Progress Bar OS X which doesn’t have any monthly recurring payments. This data is open on my site: http://andreyazimov.com/
BTW 30% of Hardcore Year already passed. Damn how fast.
Expenses
Question from Dennis Vermeulen:
Tell us about the costs you made this month (techstuff like servers and software, but also your living stuff like food and rent etc..)! It’s sets the revenue in a good perspective of your total balance.
Personal expenses $544 / month in Bali
We see that my expenses are growing 5–8% per month. Probably because I started to make some money and ate more and because of visa extensions. :)
Typical Business expenses for 1 month:
- Domain progressbarosx.com $10 / year
- Hosting for Sheet2 Site: $5 / month
- Gumroad Pro $10 / month
But you done all this because Pieter helped you!
Question from @DanielMeade:
Without detracting anything from you accomplishments, I would be interested to know if you’re doing any tracking on the results of Influencer Marketing. Your association with levelsio will have undoubtedly helped your reach.
Pay it forward ❤
I don’t do any tracking on how much Pieter has helped me. But, this is definitely a significant part. I got a lot advice and inspiration from him. It’s super lucky that I met him 1.5 years ago here in Bali and we became friends.
To be fair, retweets obviously helped. But the key is is the product because if the product is shit nobody will buy it.
And it’s not only Pieter, there are some other people from Spicy group who helped me build “the right” products and believed in me more than myself as I mentioned before.
But I would not call it “INFLUENCER MARKETING”. I think it’s normal when your friends help you and believe in you. Someone is helping you and you’re helping other people. Together we are building an ecosystem of people that are helping each other to make great products.
So if you are reading this please help at least 3 people achieve their goals.
Lessons learned
Product / Market fit is much higher with simple and clear products that hit one niche pain point rather than complex technical products that target wide problems.
UPD: Nov 2018
In November 2018 I released Progress Bar to the AppStore and after year_progress Twitter account with 200k followers featured it. I took the original idea from it and the creator agreed to featured it:
After Jeff Atwood (co-founder of StackOverflow and Discourse co-founder retweeted it)
And even Paul Graham liked it:
After it was featured in Uncrate:
And main Lifehacker website (before it was featured in only Russian branch)
Here’s a sneak peek of what I’m working on next
Have you ever been annoyed by that?
My next app will solve all these issues and some more just from one window. I will lunch it soon
UPD: Jul 2018 — Launched
🔮 Check my new project
Applicant AI — AI Applicant Tracking System (ATS)
AI Body Transformation — FAT2FIT
Web3 Jobs — Find a job in Web3 and join the future.
Want to see if I reach my goal?
And follow me in Twitter
And if you’re feeling really generous, you can buy me a pack of ramen by sending $2 to my PayPal address
or become my Patron
_____________________________________________________________
What happen next?
_____________________________________________________________
Thanks
- Spicy group for initial advices, product concept, your support, kicking my ass, hard kicking my ass, all memes and that you believed in me more than myself.
- Friends who tested first 100 version of the app before it was ready: Juliana, Jaayden, Fedya, Sasha Koss, Miljan Aleksic, Marc-Antoine, John O’Nolan, Pawel Gola, Fyodor Ivanischev, Sindre Sorhus, Daniel Di Giusto
- Slava and Lena for support
- Michael and Kat from Dojo Bali
- Sergey Gerasim for your code advices. Launch on startup feature maid cuz you helped.
- Sasha Koss for algorithm for progress of the day with day end change and helped rewrite slider on the website to Javascript
- Dasha for design ideas
- Raman Ksaitor for slogan idea and first version of slider on the website on pure CSS with keyframes
- Lukasz Oslizlo for payment system consultation and Pixel Snap website inspiration
- Wilbert Liu that you helped save setting after quitting the app
- Marie Denis that you helped add Emoji button
- Max Manzhos that you helped more images add to slider
- WIP Chat for kept me focused and for your support
- Eva Gutierrez for editing this article
- Chris from Ireland for proofreading this article. My English would sucks if not you
- Ben for “Ben’s coffee” and advice :)
- All Users who decide to buy Progress Bar OS X and for all your feedback and ideas
- All people who votes and comments in Product Hunt and Hacker News
- All my patrons and who donated: Max Makarochkin, Lowen Flowen, Sindre Sorhus, Fyodor Ivanischev, Joel Runyon, Cam Adair, Justin Brooke and all of others.
- For all people who subscribed on blog
- Everyone who read this
Love you ❤