The Crazy Story of How My First Mac App Got Acquired

Published on
March 5th, 2019
Category
Makers
💌 Join 500K+ subscribers who get the best of tech every day right to their inbox
Share On
My first acquisition as a beginner MacOS developer
I’m Andrey. I’m sitting in a room, holding my pen about to sign the biggest deal in my life.
OMG! Just like in a movie. But let’s start at the beginning and go back three months.

The Problem

I quit my job in March 2018 to make apps. Most of the time I work from a coffee shop with my laptop, and from time to time I’ll go to the toilet. But whenever I go, I worry that someone might steal my laptop.

Solution

I tried to find an existing solution to protect my laptop, but nothing satisfied me. The existing apps are either too expensive (a monthly subscription), not supported anymore or they don’t work the way that I want. For example, many of them don’t play the alarm sound when the display is closed, making it easy for the thief to run away.
So I decided to make my own perfect macOS security alarm app…

Pre-sales video demo

To make sure that I created something that people would want, I decided to make a funny video that demonstrated the app and tried to pre-sell it to validate the idea — like Dropbox did.
In the same cafe where I worked that day, I shot the video on my phone with my friends and a few random people.
I was so scared to publish this, because if I didn’t get many pre-sales, then it would mean the people do not want this (this is what I learned from Lean Startup methods, at least). I failed with pre-orders before with Push To Deploy so this was twice as scary for me.

But here is the key:

Think about pre-orders as a bonus rather than the main validation people need to purchase your product. Commit to building this product anyway even if it means getting zero pre-orders.

Why? Because:

If you are a beginner, finished products are critically important. You will learn a lot each time you build a product from zero to the end. Most people give up. Train your “finishing muscle” and you will never know what could happen after the launch. Never!

Video went viral with 10k views in two days

I published the video and Gumroad link on Twitter and shared it to my blog subscribers and users of my previous Mac apps.

16 pre-orders?!!

I got 10k views in just a couple of days and 16 pre-orders. 16 people trusted me and gave me their money just because they believed in me and the idea.
Lean Startup would probably say that I should not continue building this app due to not enough interest.
But for me, 16 people was a huge win. I committed to finishing the app because people already trusted me, so there was no going back. I couldn’t let them down.

Building

The logic was simple: if someone tried to steal my laptop (disconnect from the charger or close the display), the app detects it, sounds an alarm and sends a push notification to a phone so I can capture the bad guy!
I’m a beginner macOS developer with six months of experience and two simple apps made. I used Swift all the time, so I decided to use what I already know.

Where to send a notification?

I have 4 options:
  • WhatsApp
  • Facebook Messanger
  • Telegram
  • Build my own iOS app
Telegram was the easiest option because they have great API and documentation. The downside is that not a lot of people are using it, but I decided to start with it and add in other messengers later.

Server

I never built a server for an app before, but I had to learn to be able to send phone notifications. Thanks to the help of my friend Max Rovensky, I was able to build a simple server on Node.js + Express hosted on Heroku. It was unexpected but it was easier than PHP which I had previous experience with.

The app is not working as expected

The main problem was that when the display was closed the alarm should have continue playing, but the default macOS behavior put the laptop into sleep mode.
This means that a thief could just close a laptop to stop the alarm. This was critically important to fix.
I tried everything: I found a code example in Stack-overflow and Github, terminal command, asked all my friends, forums, and even dev chats but none of it worked.

First, I tried to fix it

I found the NoSleep app that was doing exactly what I needed and tried to run my app with it… and it worked!
Obviously, this wasn’t a viable solution. No one wants to install a third-party app after they purchase a product. It should just work seamlessly, so I continued to search for a solution.
Of course, this only made things more complicated.
The NoSleep app is fully open sourced. I thought “oh cool, I will just use its code.” The problem was that this app is not a just simple app. This app is a kernel extension that modifies standard hardware behavior. The app consists of hundreds of code files, command line tools, interfaces written on C and Objective C++ by a guy who works at Intel. The code is 100x more complicated than anything I had ever seen.
It took me a solid month just to compile this app on my computer. I even asked my friend Sergey (an experienced macOS dev) for help with integrating it inside my app but still, we couldn’t make it work.

Mental pain

I felt that my brain was fried. I had panic attacks and anxiety. I almost gave up. The mental pain was so high that I drank Cokes and ate Snickers almost every day to stop it. After such a “healthy diet” skin started to peel on my fingertips. Maybe don’t try this at home :)

Never give up!

I took one day off to think about everything.
My gut feeling told me that I should try a much more simple solution to prevent MacBooks from sleeping when I close the display.
Maybe guys from Intel like to make things complicated?
In the middle of the night in Dojo Bali, and after countless tries, combinations and asking so many people like Marc Köhlbrugge from WIP to send me some Stack-overflow links that I could try, still nothing worked. Most of the links sent to me I had already tried, but I decided to try again anyways and it still didn’t work…

Eureka!

I finally gave it another go, made some changes to the code and boom! It worked!
It was a hack that combined a couple of terminal commands and some code that executes it. That’s it! The laptop didn’t sleep and continued to play the alarm after it was closed.
I was so happy! The problem that I worked on every day for several months was at last solved with a simple solution. I was dancing in the room! And thank you to my friend Fyodor Ivanischev who tested all 100 versions of the app.

Almost there

The last thing I needed to do was execute the code that allows users to bypass entering a password each time they activate the app. It wasn’t critical but very annoying. I wanted to make it perfect. Again, I tried to ask friends and a dev forum but everyone told me that this was impossible. I kept trying and told everyone that I knew this was a problem.
I met a guy in another co-working space, Matra, named Joel Dorne. He’s an experienced Linux user and terminal guru. As a last hope, I texted him.
Andrey: Yo! I’m having a problem with a terminal command. Can you please come to the co-working and take a look? Pizza on me.
Joel: Sure! I’m coming.
After a couple of hours of work, two cokes and one pizza we found a solution that worked perfectly!

Don’t listen to people who tell you that it’s impossible

Be prepared for your idea to be more complicated then you think. Be prepared for solutions to take some time. Keep trying. Consult everyone about your problem. Solutions could come from anywhere. Don’t listen to people who tell you that it’s impossible.

Website, icon, name, domain

I usually do all of the fancy stuff at the end when the main product is working.
I’m not the best with design, so I just used the 🚨emoji for the icon.
I made a simple one-page website with a video and FAQ built with HTML, used a Bootstrap theme hosted on Netlify and set up payments via Gumroad.
"MacBook Alarm" was probably not the best name because search results would yield an alarm clock instead of a security alarm. But I didn’t want to spend to much time on it so I decided to use "MacBook Alarm" as the name and bought the domain macbookalarm.com.

Launch

On Sunday, October 28, the app was ready. It’s time!

Live on Twitch

During the entire 14 hours of launch, I was live on Twitch and revealed the finished product.

Product Hunt

I launched it on Product Hunt and it became the #1 Product of the Day!

Hacker News

Hacker News didn’t go well this time, maybe because tech people are not my target audience.

Reddit

I made posts and crossposts in r/macapps, r/ macbook, r/apple, r/oakland and it went pretty well. I got around 3k views of all of my posts. Pro tip: Each subreddit has its own rules like self-promotion only on Saturday. Please read them carefully, or post could get banned.

Traffic

In the first week after the launch, I got ~5k unique visitors, mostly from Product Hunt and Reddit.

Feedback

After the first week of launch, I gathered feedback from everywhere. I also asked people on Twitter why they didn’t buy MacBook Alarm.
After the prioritization, I had the following list of what users wanted:
  • To have different options to trigger the alarm because there was only one. If the charger was disconnected, the display was closed or both.
  • To be able to change the sound of the alarm or even mute it and just receive notifications. They don’t want to bother other people.
  • To make sure that a thief can’t mute the alarm when it will be played by hitting the mute key.
  • To not have to install Telegram, and to instead receive notifications through WhatsApp.
  • To be able to prevent a thief from stealing the laptop. How can the app scare the thief away before he decides to take off with the laptop?
I predicted that users would ask for these features, but because I launched as fast as possible with core functionality only, I made sure that I asked users what they wanted so I could make updates.

Revenue

Total sales: 95
  • 16 x $5 (pre-orders)
  • 14 x $4.99
  • 33 x $9.99
  • 24 x 14.99
Gross Total Revenue: $834
  • September: $65
  • October: $384
  • November: $385

Share your products for free with people that you meet

I’d never sold a business before and I wasn’t planning on it.
When I worked with Pieter Levels in Dojo, I remember that he shared his products for free with some people that he met. He gave out free Nomad List memberships, Make Book copies and code snippets. These days, this is not that common as everything is commercial — but he did it anyway.
I also shared my previous apps for free a lot. People were always very appreciative of these small gifts. A lot of people I’ve met in my travels are using my apps.

Sales deal

All it took was sending out a promo code one night to a guy that I met a long time ago in Dojo, and the next day I received the following message: “Can we meet? I want to discuss something…”
We met up and I received my first offer to buy the app.
I didn’t know what price I should accept so I took a couple of days to think about it. I sent them a price a bit higher than what I thought the app was valued at and they ended up coming back with a lower offer. We negotiated a fair price somewhere in the middle.
Always price it a bit more than you’re thinking because it’s easier to decrease the price.
We shook hands and I transferred everything that I had to them and received the biggest amount of money that I have ever received in my life.

Sold!

I can’t disclose the sale price, but it’s about 12–16 months of living expenses here in Bali.

What’s next?

I wish good luck to the new owner of the app and I know that it’s in good hands. The app has a new name — Beepify — and a lot of improvements.
Comments (6)
Zack Philipps
Software Developer
@andreyazimov your site for Push to Deploy has been infected with malware just FYI.
Share
Fajar Siddiq
Serial Entrepreneur, Singapore
Great Story! ❤️
Aurora Maggio
Zefi.ai co-founder 🚀
nice pitch!
Juliana Meyer
CEO & Founder of SupaPass
Thank you for sharing your story - I love the details, including the ups and downs - very insightful and helpful to others wanting to do it to. Congrats on your success on it... 🥳
Amaar Fazlani
Founder of WebRemarks
Great Story!