29 Jan 2018

2017 in review

We can't remember why, but last year we didn't write up an annual review for Hello Code. Perhaps because a lot of the details of our year ended up in Josh's personal 2016 review. Our last company review was in 2015.

Anyway, we're back with a 2017 review. Its was an interesting year, with one of the major events a huge achievement we've been working towards since we started Hello Code: it's now paying both of us to work on it full-time! But we'll get to that.

Let's take a look at what else happened this year.

We started the year with a new feature: an annual report for each user who'd been using Exist long enough (and had synced enough data) for it to be interesting. Josh put this together all by himself and we were happy to find that many users really enjoyed it. We're making this an annual feature, and just sent out the 2017 reports recently.

Josh continued his good form with a new feature release in Exist for Android: the Trends tab. This brought a small snippet of the data analysis we do on the web into the Android app. Exist's web app will always offer more in-depth data analysis and exploration, but we want to continue bringing more of these features to our mobile apps. This feature is planned for addition to the iOS app, as well.

Early in the year we were lucky to get some good press coming our way, which helped enormously with our revenue.

Josh also created an interactive report page that lets you select the services you already use from among those we integrate with, and tells you how useful we expect Exist to be based on what data you'll be able to sync to your account. This hopefully drives home the idea that Exist is more useful if you feed it more data, as well as helping prospective users understand more about what they'll get when they sign up.

After the success of our annual report, Josh pulled a lot of those design cues into our regular weekly email reports to spruce them up. This seemed to go over well with users, and had already been requested by some who enjoyed the annual report.

Our first big addition to Exist for iOS was a feature we call "year ago mood". After rating your mood and writing a note each night, if you have more than a year of data in Exist, we'll show you your mood rating and note from this day one year ago. In future we plan to make this work with more recent data as well, so users who haven't been around for a year can get the benefit of this feature. It's one of my favourites, and makes the payoff of rating your mood and writing a note about every day much more obvious.

A feature we'd been considering for a long time was offering a referral program to reward users who tell their friends about Exist. Josh made this a reality in 2017 and it was fun to see some people using their referral links when they shared Exist on social media or in blog posts. Both the new user and the existing user get a credit for the referral, so it's a nice payoff for anyone who likes Exist and wants to help us grow. Uptake on this has been pretty small, but it's been nice to see when people do refer their friends.

Unfortunately, due to abuse, we had to change how this worked later in the year, so now referral credits only apply to users if their friend finishes their trial and starts paying. Pretty frustrating when one bad egg ruins it for everyone else.

Another web-based feature Josh launched this year was Optimise, which shows you the top ten things that correlate to you having a better mood, lower weight, more active minutes, more steps, and more productive time. Josh created some new graphs for this page and made each correlation tell you just how much it affects your steps, weight, and so on. I love this feature, and check in with it every few weeks to see what's most strongly affecting my activity, mood, and weight.

Another big Exist for iOS release this year was syncing Apple Health sleep. This was on our roadmap for a long time, and much-requested, but wasn't much fun to work on. Apple doesn't enforce many rules about the data that's synced into Apple Health, and they include a lot of hidden work inside the Health app to account for bad quality data, which you lose when you query the Healthkit database directly. I had to work around lots of issues like duplicate data from the same app, multiple apps sending sleep records for the same night, and sleep records that somehow cover more than a 24-hour period(!). There's still more work to do to improve this feature, as I'm always discovering new ways that users or other developers create data combinations I hadn't expected, but for most users it works well and it's been a relief to tick it off our to-do list.

Josh added three integrations this year: Gmail (and later, the option to connect multiple Gmail accounts), Facebook, and sleep from Google Fit, which was launched right at the end of the year.

Though we didn't add a whole lot of external data to Exist this year, we did launch custom tracking, which lets users create a tag for anything they want to track. Like mood, this data is created in Exist, rather than synced from an external source, and it was a big feature that took up a lot of our time in the first half of the year. We've been really happy with the response, though, and have seen users creating custom tags to track habits, medical symptoms, people they spend time with, emotions, food, and hobbies.

We were lucky enough to get some more press around the launch of custom tracking, which again helped with increasing sign-ups and revenue.

Our annual survey came late this year, as we wanted to launch custom tracking first, and give users some time to play with it. The survey showed that custom tracking was a big hit, and was most popular when we asked users which of the new features from the past year were most beneficial to them.

Not long after the survey we hit the arbitrary milestone of 1,000 paid users, which made us feel good.

We added custom tracking to the API a while after it launched, as there was some extra work to do to account for users adding tags via the API while still managing most of their tags via our first-party clients.

In October we hit our biggest milestone for the year and perhaps ever: I was able to quit my day job and join Josh as a full-time Hello Code employee. Paying both of us to work on Hello Code has been our goal from the beginning, so reaching this point was extremely rewarding. We recorded a podcast episode that goes into more detail about this milestone and the journey we took to reach it.

Our annual user survey showed that more users than not were interested in having a forum where they could discuss Exist and personal tracking in general. We set that up late in the year using Discord.

Finally, we spent the last chunk of the year trying to please Apple, who suddenly cracked down on a rule we'd been supposedly abiding for years, deciding we weren't allowed to keep our app in the App Store unless we allowed users to buy their subscription with in-app purchase (giving Apple a 30% cut). We're still allowed to sell subscriptions outside the App Store, but we're not allowed to encourage users to purchase this way anywhere in our app or our App Store description.

We found this whole situation ridiculous, as well as stressful. I spent many days calling Apple employees in the U.S. to beg them to let us release critical bug fixes, because they'd frozen all updates to Exist for iOS until we'd added in-app purchases.

Eventually we finished the in-app purchase work and satisfied Apple so we could finally get back to improving our product and working on our own priorities. By then it was almost Christmas so we didn't launch anything else before the year was over.


  • In 2017 we published 9 posts on the Exist blog.
  • In Dec 2016 we had 601 paying users. In Dec 2017 we had 1,070. That's a 78% increase.
  • In 2016 we made $44,472.63 total, for an average of ~$3,706.05 per month. In 2017 we made $74,498.23 total (a 68% increase), averaging ~$6,208.19 per month.


We'd noticed our instructions asking users to search before adding a new suggestion to our roadmap weren't having the desired effect, and we were wasting a lot of time deleting duplicates. Josh added autosuggestions to the new suggestion form on Changemap and we immediately saw the number of duplicates drop off.

Near the end of the year we invited a few beta testers to try Changemap for their own products. Things are moving slowly, but we'd like to continue adding beta testers in 2018 and figuring out what features we're missing that will make Changemap worth paying for.


Being a tool for developers, we'd planned to have an API for Larder as soon as we were able. Like Exist, we released the API well before we had enough users for it to really make any difference, but we do see more than a handful of Exist users using our API these days, so it's good to have the Larder API done already. If nothing else, it probably helps with signups among developers who want to see that they can easily wrangle their data or get it out of our service anytime.


  • In 2017 we published 7 posts on the Larder blog.
  • In Dec 2016 we had 23 paying users. In Dec 2017, we had 40. That's a 74% increase.
  • In 2016 we made $692.64 total. In 2017 we made $1,080.79. That's a 56% increase.

Finally, a couple of company-wide stats:

  • In 2017 we published 17 Hello Code blog posts (incl. 14 monthly reports—we had some catching up to do in January).
  • We released 3 podcast episodes in 2017.
  • In Jan 2017 we had 1 employee. We finished the year with two :)

Looking ahead to 2018

This will be the first full year that has both of us working full-time. As such, I have some big plans for the iOS app, which has always lagged as I filled a lot of my time with a necessary day job.

I've already released a new feature which was on my 2018 list: weekly graphs on the Today tab. Other features I'd like to launch this year include syncing meditation minutes from Apple Health's mindful sessions, as well as weight and maybe menstruation data from Apple Health. I'm also working on a big refactor to the app that will make my code cleaner, more modular (less spaghetti), and less fragile. This should make the app more reliable and help me catch new bugs I've created before they get to users.

Josh is working on a major redesign to the web app, which will make it easier to find out what you want to know about your data, and help us surface interesting insights for users instead of making them dig through their data to learn about themselves.

After the redesign is done on the web, we'll focus on bringing more of the web's excellent data analysis into our mobile apps, as many of our users see our mobile apps as the entire product (no thanks to Apple forcing us to let new users sign up without visiting us on the web at all). These users are missing out on Exist's best features, so we'll do our best to bring more of those to our native apps.

And if that's not enough, we also want to find some time and energy to put into marketing this year. With me putting so much time and effort into iOS development, marketing has really fallen away, and we could use some more of it. It's a constant battle to balance all our priorities, but this is the year to figure it all out.