15 Jan 2016
Josh

2015 in review

An incrementing of the year field in the Gregorian calendar might be arbitrary, but it's as good a time as any to pause and reflect on the last 12 months' progress. Hello Code, the company founded by myself and my partner Belle Beth Cooper, had a pretty big year of ups and downs — not quite on the epic rollercoaster scale of a large, venture-backed startup, but at least on the bootstrapped scale of one of those kiddie rollercoasters that goes up and down and around at a moderate speed. It felt real enough to us. (And if you like, you can read mine and Belle's separate personal reviews of the year.)

At Hello Code we make Exist, a personal analytics platform for understanding your life. In 2015 we also launched our side project Littlelogs, a place for sharing progress on your creative work (as "little logs", you see), and a podcast about our startup. Let me tell you how these went.

Exist

At the start of 2015 we had around 170 paid users and collectively the business earned around $1,100 a month — $550 each for Belle and I. We had just switched to charging in USD, $6/month/user, which worked out to around AUD 7.16, a little extra bonus that we appreciated. We both had a minimum of contracting work on the side that effectively paid for us spending the rest of our time working on Exist — Belle on content marketing and iOS development, web and Android development for me.

In March we created a user survey and emailed it to all users, asking questions about frequency of use, which areas users found most valuable, and what they'd most like us to focus on. The results showed that many users wanted us to add more services, then mobile apps, and then more insights and tips. We delivered on most of these, launching mobile apps soon after and adding more insights throughout the year.

Beginning the year we had a web app only, although we'd been working on mobile apps for months by that stage. For Belle this was her first real coding project ever. We launched both in May, thinking this would be one of the things to change our fortunes. Everyone was hanging out for mobile apps, of course! In reality this didn't get us any press or result in a big spike of signups. I'm sure it contributed long-term to our value, but we couldn't see it at the time.

In terms of services added, I didn't do so well (as the only developer able to work on this part of the app). 2015 saw only three services successfully added — Instagram, Misfit, and Runkeeper. I started and then aborted two other integrations, but that's not much of an excuse, and one service every four months isn't very good. This is something I'll be trying harder to change in 2016.

One thing I find interesting about service integrations is that even though Jawbone and Fitbit collectively own ~81% of the fitness tracker market, people just keep asking for their favourite niche fitness trackers to be added. It's not enough to handle the main players, people expect the long tail too. And even after deliberately targeting popular services, our users' combinations of apps they already use and can connect to Exist is quite varied. We still get plenty of users signing up who have only one service to connect. We're planning to address this by diversifying the sort of data we collect by adding popular apps like Gmail, Pocket, and Goodreads, which will cover emails received and sent, articles read, and books read, rather than moving further down the long tail of fitness data.

As a related point, our RescueTime integration for tracking productive time remains one of our best referrers of signups. We didn't expect this benefit, but it makes sense that users of other personal analytics services would be interested in finding related ways to use their data. Thanks Robby!

End of May we added a cheaper yearly plan as an option for all users. You can see a big spike in income and charges in April and May in the graph below, the result of our early backers recurring one year after we launched, but after this we made a yearly price available to everyone. You can see this new option was jumped on by all of our long-term users who wanted that yearly discount, but after July, everyone was spent. Existing users had already upgraded if they were interested, and new users weren't seeing the value in doing so. It took us adding our new mood features, which I'll discuss a bit later, to turn the trend around right at the end of the year.

Next we opened our API, the same one powering our mobile apps. Because the value of Exist is its data, particularly its integrations with other services' APIs, we reasoned that opening our API to all users would speed adoption among developers looking to retrieve an aggregated data set of their activities and build a "personal API" or dashboard. When we first launched the API, we made it read-only for everyone other than us, and later white-listed the ability to write data. We attempted to court developers and other services to integrate with Exist, but the reality of the situation was that nobody really noticed or cared — probably because we didn't know how to make them. I spent many person-days writing the developer docs and adding example requests and responses for each API endpoint, which I maintain is vital to attract developers, but it still wasn't enough. Later in the year we switched from whitelisting to a fully open model where users can create API clients without any oversight from us. We've had some users take advantage of this, which is a promising start, but we're probably still too niche a service to see much uptake yet.

To make more use of our collected data, we launched a new Trends page, showing long-term data trends for each user and comparisons across all users. We're careful not to pronounce people's results extra good or bad, but users seem happy to know how their activity, sleep, and productivity compare to our global averages.

Mid-year Belle found out about her massive tax debt and had to relinquish most of her Hello Code duties to find a full-time job. She joined Ghost in July and I essentially went full-time on Exist, taking all of the income and only contracting for around one day a month, and later dropping even that. The circumstances were unfortunate, but it felt like a big milestone to finally be making my income entirely from our product. This is something I'd been wanting to do ever since I'd gone freelance back in 2008.

One of the things we learned from Belle leaving was how important marketing was, and how obviously it was reflected in our income when it disappeared. From the income graph you can see that weekly income dropped at the end of July and never quite recovered. It's hard to know the exact reason for this, but my hunch is that with less visibility from the sort of in-depth content Belle was writing for the Exist blog, and fewer chances for that content to be republished in other places, we weren't able to drive as many new signups. That caused the signup:churn ratio to become balanced and kept our income stagnant for a few months. I did try taking over the blog for a while, but I only continued the publishing of our weekly links posts, the lowest-value and easiest-produced content. Eventually we gave up on this approach as it wasn't doing anything for us. The lesson? Good content is definitely worth it, if you can find the time to create it. Belle's post on habit tracking was republished on Lifehacker and brought us an unexpected bump in traffic and signups in November that persisted for many weeks. Not everyone has connections with big blogs like Lifehacker, but without that content there's no chance to even create them. Good content brings opportunities for extended reach. And don't forget that you're playing the long game. Belle wrote a post about how activity trackers know you're asleep that continues to be our most popular post month after month, including a huge spike right after Christmas — but it took a long time to get to that point.

Later in the year we sat down and seriously discussed the value Exist was providing. User growth was still stagnant, and we were worried that Exist wasn't providing clear value. We noticed from our earlier survey that the one area that seemed most valuable to users was mood tracking. The vast majority of users tracked their mood nearly every day, which was quite high engagement compared to the rest of the app. I came up with a new plan — to split up Exist into separate products, each with their own clear use case and value, instead of the mess of functionality we had built. In December we launched a new Mood tab, with its own interface for tracking moods and reviewing past notes, plus dedicated statistics based on mood ratings. This is the point on both graphs you can see the income and yearly upgrades move upwards again, which was a huge relief. My theory is not just that we gave users something valuable that they loved, but that the calendar interface gave the impression of something that would be valuable in the long-term, and worth sticking with. But it could just be that they liked it more than what we had before. Regardless, we'll be pushing on with making a set of compartmentalised tabs in Exist that represent those separate use cases.

In December, Belle was suddenly fired from her role at Ghost with little explanation, which was... unexpected. Now our Hello Code situation was a little complicated. I depended on Exist's income as my own, and couldn't really afford to split it in half again, but on the other hand, Belle needed work. We decided that she would look for more contracting work to cover her costs, and we'd both work hard to keep increasing Exist's revenue until it could pay us both.

So we ended the year with 581 active users and $30,585 earned in total, around $3,000 per month by December. If you look back at the numbers I listed at the start of this section, you'll see that despite our ups and downs, we did manage to grow throughout the year and even triple our active users. We're working on keeping this trend going in 2016, adding more integrations and more functionality, and building revenue to the point where it can support both Belle and I comfortably.

Transfers

Upgrades

Littlelogs

We launched our side project Littlelogs in February based on an idea of Belle's, an itch she needed to scratch. She'd been using a second Twitter account to log her day-to-day progress on her work, writing and developing, but wanted somewhere separate to keep it — somewhere closer to a journal, that still felt like a community. Our idea was to give anyone a place to share progress on their creative work and side projects, get feedback and support from the community, and keep a log of how far they'd come.

When we started, we invited friends and acquaintances who expressed an interest, essentially "throwing users at the wall to see who'd stick", as a particularly violent growth hacker might say. We had a strong desire to keep the community friendly and supportive, gender-balanced, and as creatively broad as possible. We knew it would be easy to be overwhelmed with male developers, making the site seem less friendly to anyone who didn't fit that perceived niche. As it turned out, it's quite hard to juggle a desire to build a community that's broadly in the tech space and also keep gender numbers balanced. Even when your site is invite-only. Looking at Littlelogs today, roughly 29% of loggers in the public feed are female, based on a quick look and my assumptions (a very fraught area, I realise). Better than it has been, but not quite where we'd like it to be. Happily, many of our users describe Littlelogs as a really supportive community, so I think we're on the right track.

A few months in we switched from 256-character text posts to 1000-character markdown-enabled posts, which kick-started adoption a bit and helped potential users understand how we differed from Twitter. Right after this we made the front page of Hacker News and Product Hunt, but while we saw a lot of traffic, we had barely any signups — probably because we were (and are still) manually approving signups to combat spam. And we've had a lot of attempted spam.

As Littlelogs stands today, we have an API, two mobile apps and a desktop app in the works, and a small but enthusiastic community of people working on things like web development, mobile app development, games, hardware development, audio and video production, book writing, technical writing, programming language development, songwriting, and learning new skills (mostly learning to code). We're a little more coding-focused than I'd like, but as long as people in other creative fields aren't turned off, that's okay.

Has Littlelogs helped grow Exist any? It's hard to know. Some of our Exist users are on Littlelogs, and vice versa, but Littlelogs is too early to do much for Exist, I think.

At the end of 2015 we had 295 registered users, 2,992 logs posted, and 1,360 unique tags (a tag represents a user's project or a shared technology or task, like #writing). This year I'm looking forward to adding some more analytics and charts around users' progress on their projects, and we're considering building a private group version for teams who'd like to have something similar internally. If this is you, get in touch.

Podcast

In February we launched a podcast which we imaginatively called Hello Code Podcast. It's about Hello Code, you see. Again, this was Belle's idea, and something I wasn't sure about doing as I'm not at all the target audience. However, it is kind of fun to do when we have things to talk about, and it seems to have done okay at finding an audience. In 2015 we recorded 13 episodes, and we've had 2,000 listens since we moved to Simplecast in April. Is that good? Probably not. Again, it's hard to tell how well side projects like this work as marketing for our main product. It certainly can't hurt for brand awareness. This year we'd like to do more, but coming up with good topics is hard.

Our most popular episodes are Startup house, Content marketing (free educational content), and Bootstrapped. Our audience is 40% American, 16% Australian, and 14% British — perhaps everyone else has a hard time with our accents. Flamin' galahs.

TL;DR

Let me summarise what we learned this year for you in handy dot point form.

  • Marketing is important. Even if you can't tell at the time, you'll notice when it's gone.
  • Content is useful marketing, but it works best if you're happy to play the long game.
  • Providing value is really really important. Find product-market fit.
  • Getting press is helpful but essentially random chance. It always comes to us.
  • It's hard to quantify the effect of side projects (but they can't hurt).
  • It's rare that any one thing moves the needle. Keep marketing and keep building the value.
  • Persevere, listen to your users, don't give up.