Wrapping up 2015

Last year, I wrote about my final sales numbers for 2014. Now that 2015 is wrapping up, it’s time to do the same.

I had very high expectations going into 2015. I released Hobo right at the start of the new year and planned a major update to VirtualHostX for the Fall. With both of those in place, plus a renewed focus on my mailing list and website analytics, I set the seemingly impossible goal of doubling my 2014 sales this year. That meant my revenue goal for 2015 was $123,000. Audacious. Lofty. But that’s what I was aiming for.

How’d I do?

I’m sad to report that instead of doubling, sales cratered. With about two weeks to go in 2015, my current revenue sits at $35,000. Don’t get me wrong. I know there are many people out there who would love to be making that kind of money on their app business. And I’m very fortunate to earn what I do. But, still, instead of doubling my revenue I almost lost 50% year over year.

Why?

I can point to a number of reasons why 2015 was such a down year. Some were business decisions. Others were personal. Most obviously (to me) is that Hobo never really took off. Sales have been OK, but my goal of having it match VirtualHostX dollar-for-dollar seem to have been premature. I had a couple large quantity sales to businesses, which gives me hope that I could begin marketing Hobo in that direction rather than at individual developers. I positioned the commercially licensed version of the app as a boon to web dev shops with the ability to share and remotely update .hobo files. But, looking back, I haven’t made that feature prominent enough on the website. I need to do a better job at educating potential buyers.

I also never got around to properly setting up my Hobo mailing list with Drip. One of the changes I made in 2015 for VirtualHostX was requring an email address to download the software. This lets me follow up with the user after they download the app. I don’t consider it spam. I send three emails – each a day apart – that walk the new user through the major features of the app. And then if they haven’t purchased after two weeks, I follow up with a simple email asking if there’s anything the app could have done better or if they’d like more time to evaluate it. This email course has worked extrodinarily well and provided me with a lot of great feedback. I’ve had a to-do to setup the same sort of course for Hobo for nine months but never got around to it. And that’s squarely my fault.

Another major reasons for the low sales volume is I never got around to building and releasing the major update to VirtualHostX I’ve been planning. During the week of a major upgrade release, I can count on an additional $10,000 – $15,000 in sales via upgrades. Not having a major release this year definitely caused a significant dip in sales.

And here’s where things get personal.

Why didn’t I have a new, major release ready in time for El Captian in the Fall?

Two reasons. One, we had a new baby girl. And, believe it or not, taking care of two kids is way more work than dealing with just one. But, the main reason is the planning for my major Fall release typically happens early in the Summer. But during June and July of 2015, I found myself at the bottom of a deep depression. One like I hadn’t experienced since 2009. It’s hard to properly describe what it’s like being depressed, because at its core, you feel nothing. And that nothingness saps away every ounce of motivation you have. My relationships with my family and friends struggled, my app business saw virtually no attention for three months, and my nine-to-five job suffered as well. Two of those areas were forgiving. The other, not so much. But, I bounced back, got on some better meds, and feel great now. The seventh major release of VirtualHostX is going well and should be ready this Winter.

So what did I do well this year?

I grew my mailing list considerably. That means when VirtualHostX 7.0 is ready to go, I should have a great audience to market it to. Further, earlier in the year I ran a bunch of A/B tests on my marketing website aimed at upping my conversion rate. I’m happy to report that I saw good growth in that regard – even with the change to requring email addresses to trial the app.

So that’s a summary of my year as far as business goes. I thought about listing all of the services I use and expenses I have running the business, but that hasn’t changed much since last year.

How’d you do?

Switching Email Providers

Earlier this year I switched (after 11 years) away from Gmail to an email address at my own domain hosted by FastMail.

I didn’t make this decision lightly. I knew changing email addresses could uproot my very online identity. But I was tired of the new direction Gmail’s interface was heading, and I also worried about the horror stories you occasionally hear when Google accidentally closes or locks someone out of their account. Email is precious to me – especially the history it contains – and I didn’t want to chance losing it.

I’ve used FastMail with my freelance email address for years and always been extremely satisfied. So choosing them to replace Gmail was a no-brainer.

With that introduction out of the way, what I’d really like to talk about are the four steps I took to ensure a smooth transition to my new email address.

First, I used FastMail’s built-in IMAP importer tool to transfer over all eleven years worth of Gmail into my new account. The process took about six hours – they emailed me when it was complete.

Then, I setup a forwarding rule in Gmail to forward all mail to my new address and archive a copy in Gmail.

Next, I created a smart folder in 1Password that searched for my Gmail address as the login for any website. Over the next few weeks, I updated a few website from that list each day with my new email until they were all switched over.

Finally, I setup a rule in FastMail to file all email that was forwarded from Gmail to a specific folder. From there I can see all the remaining websites and mailing lists that have my old email address and update the ones I care about.

Changing email addresses isn’t easy. But it’s certainly doable with a little planning and some work after the fact.

Must, Will, Might

Last month I came across a clever post about using just two GTD contexts by Matt Henderson (by way of SimplicityBliss). Like many of us, he’s experimented with lots of different ways of managing contexts. There’s the traditionalist approach where your contexts mimic the tools or location available to you: home, work, Mac, phone, etc. Then there’s Sven’s more modern approach based on energy level, which I’ve also advocated: brain dead, quick hits, full focus, etc. But Matt’s unique take is to simplify things even further into Will Do and Might Do.

It’s a fascinating idea because by getting rid of context groups such as work or personal (as I have mine setup) it implicitly acknowledges a modern-day truth we might not all be comfortable with. That being our work and personal tasks cross-pollenate and are often available simultaneously throughout the day. If you’re anything like me, you’re just a likely to pay the electric bill during a few minutes of downtime at work as you are to answer an email from your boss before bed. And with the majority of our work now available to us from nearly any device, the clean boundaries between traditional contexts break down. And as for those who used energy levels to define contexts, at least in my case, I would more often find myself scanning all of my available todos when looking for my next task, rather than taking the time to asses my current energy level and then switch to a perspective focusing on just that type.

When all those definitions fall away, what you’re essentially left with are tasks that you will do and tasks that you might do. Which is exactly where Matt’s Will Do and Might Do contexts come from.

I was so intrigued by this idea that I took the month of August to try the system for myself. However, I have made a few tweaks to the system he describes. I’m please to say that, a month later, this new system has worked well for me and I plan to continue with it. Here’s what I’m doing…

three-contexts

First of all, in addition to the Might Do and Will Do contexts, I’ve added Must Do. These three contexts impart a slight sense of priority and timeliness that I felt was missing. Tasks that fall into the Must Do context are items that simply must get done without delay. Typically, anything in this group is automatically added to my Today list. An example might be calling a repairman when the air conditioning breaks or paying my health insurance. Will Do contains tasks that I have committed to completing but that don’t have a firm deadline. Examples are “change air filters throughout house” or “install backup software on mom’s laptop”. None of these tasks are particularly urgent. They just simply need to get done at my convenience. Finally, I have my Might Do context, which is full of tasks that I would like to do some day but have not yet committed to. These are things like “schedule a cookout with Matthew when the weather is nice” or “investigate how to buy Google advertisements”.

In addition to those three contexts, I’ve left in place those that are location based errands. This means I still have contexts for the grocery store, pharmacy, and hardware store. I also have a context for any phone calls I need to make as I hate talking on the phone and would rather have all of those tasks together where I can just knock them out.

Finally, I still have waiting, on-hold contexts for tasks that I’ve delegated to other people.

This new context arrangement has really simplified how I think about my tasks. It’s made processing my inbox much faster, too. I’m no longer hemming and hawing about which particular energy level a todo falls under. I simply have to decide if it’s something I’m committed to or not. And, if I am, can I do it at my leisure or does it need to be done right away.

It’s always healthy to re-evaluate how your GTD system is setup, and I encourage you to give this three-context system a try. There’s nothing wrong with finding a more efficient way of working or a method that just makes better sense to you. Just don’t let toying with your todo app get in the way of actually getting stuff done.

No Phone Thursdays

One experiment I’ve been trying for the last two months is taking twenty-four hours each week to be entirely phone free. My goal is to give myself time back to focus on things that matter – rather than living in a half-distracted state all the time. I’ve chosen Thursdays. Anecdotally, it seems to be the day I receive the least messages, phone calls, and distractions, so there’s potentially less to miss.

The first Thursday I turned off my phone I’m sorry to say I really did have withdrawal symptoms. There was a constant buzzing in my head as if I had forgotten something or was missing out. It’s not to say I was completely disconnected. I was still online on my Mac throughout the work day. But the difference is I sought out distractions rather than having distractions pushed to me. I still checked my email. I still skimmed my RSS feeds and read the news. But without the constant pinging of my phone beside me, I was able to stay away from Twitter, Facebook, and many other websites that eat away at my day.

Making it through that first day was embarrassingly difficult. But I’m happy to say I managed. And each week as Thursday has rolled around, I’ve come to find it easier to power down my phone for the day. I’ve even come to look forward to it. My mind feels clearer – less hurried. And as I’ve become more and more used to being checked-out, I’ve also stopped checking-in on Twitter and Facebook as much throughout the rest of the week. I’ll do a short catch-up session in the evening rather than always staying up to date during the day.

As much as our always-on devices have improved our lives, I really do believe being constantly connected is taking a measurable toll on us. I know it has contributed to my battle with anxiety. And I fiercely believe in and have witnessed real internet addiction among some of my family and friends and to an extent myself. That’s why I’m purposefully trying to tone down my dependence to these quick hits of information during the day.

I’m not suggesting I (or you) eliminate social networks or whatever your particular internet vice happens to be. I get far to much use from them both personally and professionally to entirely tune them out. But I do think we’re (hopefully) approaching the height of our collective addiction and will see a pendulum swing back towards a healthier balance.

So that’s why I’m taking Thursdays off. And it feels good.

My New Email Routine With SaneBox

I’ve written before about cutting back on notifications. Today I want to talk a bit about how I’m using a paid service called SaneBox to reduce unwanted email notifications even further.

I initially found out about SaneBox six months ago from David Sparks. His enthusiastic recommendation was enough to get me to give the service a close look, but I was still hesitant to sign up. I take the security of my email very seriously, and I wasn’t to keen on handing over access to my email to a third party.

But, as the months went by, I kept hearing more and more wonderful things about the service from more and more people I trusted. And my own email situation was causing me grief. Every morning I’d wake up to fifty or so emails I’d have to wade through. Very little were ever of any consequence. Even fewer actually warranted a reply. I kept wishing I could setup a filter just for the emails that actually mattered and leave all the rest to be ignored or skimmed over on the weekend.

And that’s exactly the promise of SaneBox. They analyze all of your past email history, and from that they determine which emails are important and which can wait till later.

So, skeptical and a little wary, I gave them a shot.

I couldn’t be more impressed.

After scanning my eleven years of email history, my SaneBox was setup and ready to go. The whole process took less than an hour. Immediately, emails began arriving and were filtered out into a folder called “SaneLater”, which I was told to read through only when I had spare time. SaneBox promised anything important would remain in my inbox – and then show up as a notification in my email client.

It’s hard to describe just how magical this service is. Of the fifty or so emails I used to wake up to every morning, only two or three actually make it to my inbox. The rest are silently stashed away in another folder that I check every other day or so.

I can report that there have been surprisingly few false positives. And if one does slip through, I can just move that email back to my inbox and SaneBox will learn how to classify similar emails in the future.

They also offer an amazing bonus feature called SaneBlackHole. This is a special folder in your email account they create for you. Any email you move into this folder will tell SaneBox to immediately delete all future emails from that sender. It’s like an instant unsubscribe that actually works.

SaneBox has other crazy helpful features, too. You can snooze emails for later date. And they can also monitor your spam folder and report back any emails that might have accidentally been marked as spam by your email provider.

I swear SaneBox is not paying me to write any of this. The service is just that good. If you do feel like giving them a try, you can use my affiliate link to sign up. Use that link and we’ll both get $5 off.

It’s also worth pointing out that SaneBox runs entirely server-side. There’s no software or special email client you have to use. All you need is an email account that supports IMAP.

Connecting Amazon Alexa’s Todo’s with OmniFocus

Last week Amazon Alexa and IFTTT hooked up in a big way. They now have triggers that allow you to do things whenever you add an item to your Alexa to-do or shopping lists. This is awesome because now those items don’t have to live within Amazon’s ecosystem. With a little IFTTT tinkering you can quite easily have them shuttled over the net and into OmniFocus.

This means I can be cooking dinner and literally say out-loud “Alexa, add red pepper flakes to my shopping list.” Or “Alexa, remind me to schedule a cookout with Matthew.” And the next time I open OmniFocus, those tasks will be waiting for me. Awesome.

First, you’ll need to login to your IFTTT account and activate the “Amazon Alexa” channel.

Then, create a new recipe with a trigger of “If item added to your Shopping List”.

Next, for the action, send an email to yourself with the following settings…

Screen Shot 2015-07-31 at 7.20.21 PM

Finally, in your email provider’s settings, setup a rule for any email with the body “Alexa Todo” to forward to your secret OmniSyncServer’s email address. They’ll get the email with your to-do item as the subject and add it to OmniFocus.

Boom!

Don’t forget, your Alexa shopping list is separate from your Alexa to-do list. So do what we did above a second time for your to-do list to make sure you can add items to either list.

Duplicate Tasks

I put everything into OmniFocus – my trusted system. Throughout the day I’m constantly hitting my OmniFocus keyboard shortcut to add whatever task just occurred to me to my inbox. It’s quick, painless, and lets me stay focused on my work without breaking my train of thought. Later in the day, I’ll process my inbox and assign those tasks to projects and contexts. It’s your standard GTD workflow.

But one problem I run into is duplicate tasks.

Because I put so much into my task manager – and because I wholeheartedly trust it to keep my data safe and myself reminded at the appropriate time – I often forget what’s in there. Frequently, during my weekly review, I’ll find that I added a task, forgot it was in there, and then added it again a few days later when it reoccurred to me.

This isn’t strictly a problem. Tasks certainly aren’t falling through the cracks. If anything, the opposite is true and I’m doubly making sure I remember to do things. But it does bother me. The purpose of a trusted system like OmniFocus is to put your tasks into it so you can get them out of your brain and focus on the work at hand without distraction or anxiety. But the fact that tasks pop back into my head tells me I’m not fully letting them go. Or does it mean that I’m actually forgetting about them so well it’s only natural that they reoccur to me?

I’m not sure.

In any case, I don’t know of a solution to the problem other than being diligent enough with my weekly reviews so that I maintain a mental model of the tasks in my system. And so I can clean up the duplicates when they invariably happen.

Where do External Triggers Belong?

The great thing about blogging vs a shorter medium like Twitter, is you can have actual, in-depth conversations. There’s nothing better than someone replying to a post you wrote with one of their own. So here’s one…

Last week I wrote about External Triggers in OmniFocus. Sven Fechner of SimplicityBliss picked up my post add added his own thoughts. He agreed with the need for a designated place to park these types of tasks, but he disagreed with where I recommended putting them. He writes:

Rather than adding a new bucket, these type of external triggers I cannot control or influence get added to my “Someday/Maybe” Single Action List which already exists anyway.

When it comes to OmniFocus and GTD, I fully subscribe to the idea of “whatever works best for you”. But to his point specifically, I disagree with his solution.

The reason I don’t put my external triggers in a “Someday/Maybe” single action list is because these types of tasks are items that I’m committed to doing. They’re not tasks that I hope to someday get around to maybe doing them. I absolutely plan on finishing them – I just can’t complete them at this point in time.

So, for me, they don’t fall into a “Someday” or “Maybe” category, which is why I’ve created a new, dedicated list to place them into.

I Will Not Use the Phrase “Growth Hacking”

But I will call it marketing.

It’s always something that I’ve been interested in, but it’s also something I’ve always put off until “I have more time”. Well, that time is now.

I spent two days in December and did a thorough review of my little software business. The obvious take away is that 90% of my revenue comes from one app – VirtualHostX. I’m thrilled that it’s doing so well, but that’s a scary place to be in. If the app ever fails, I’m done for. The non-obvious realization I came to is that I believe I’ve reached a point of diminishing returns with regards to adding new features to the app. It’s over seven years old at this point. I’m committed to continuing to improve it, but I’m not sure how much growth I can drive by adding new features. Instead, I think my company’s growth potential derives from two things.

  1. Releasing a new product that I can sell alongside VirtualHostX that will become, at a minimum, half as successful as VHX within one year.
  2. Becoming better at selling my products by investigating historical analytics and trying new optimizations, with data to backup the results. (Yes, yes, I’m the dumb programmer who just now “discovered” marketing.)

With those two strategies in play, my goal for 2015 is to double my revenue.

Yes, seriously.

I know it’s a stretch, but I’m optimistic.

Releasing a new product is the easy part. I took the last half of November and all of December and built and launched Hobo. It’s another app aimed at web professionals that makes using Vagrant easy. Customer reaction has been overwhelmingly positive so far. And I’m optimistic that will translate into sales before too long.

Improving my marketing is the hard part. And taking that on full-force has been something my wife (a marketer herself) has been beating me over the head with for years. I’ve finally taken the time to learn Google Analytics beyond the basic vanity metrics and have done deep dives into goals, conversion tracking, where my customers are falling off in the order process, etc.

Based on my learnings, I chose three goals (low hanging fruit, really) that I could tackle in January to see how they improved sales. And based on those learnings, pick better goals to implement each month throughout the year. Here’s what I’ve chosen to do this month.

First, for four years I’ve offered a free System Preferences pane download that allows you to turn web sharing on and off on your Mac. It just adds back the functionality that Apple removed in Mountain Lion. I knew it was fairly popular, but had never done any real tracking of it. Well, after watching downloads for a month, I was knocked-off-my-feet-blown-away to find out it has just as many downloads as VirtualHostX.

All of these people downloading my web sharing tool are perfect customers to upgrade to the more powerful VirtualHostX. I just need to figure out how to do that.

As a start, I’ve replaced the download page for the tool with a marketing page that up-sells them on the benefits of VirtualHostX and encourages them to give the full app a try. The final download link for the web sharing tool is at the bottom of the page – not hidden! – but they have to scroll past all of my other content to get to it.

Anecdotally, in the week since I’ve made this change, downloads for web sharing are down 15% and up 15% for VirtualHostX.

Next, not enough people are talking about my apps on social media. To make this simpler, I’ve added a callout to my apps’ marketing pages that offers a $5 coupon if they Tweet about one of my products. I offer three pre-written tweets they can choose from. And they have the option to write their own message instead.

The response to this has been way beyond what I was expecting. I’m seeing 20+ Twitter mentions a day, whereas before I was lucky to get two or three.

Of course, none of this matters until I can verify that those tweets are leading to increased traffic and conversions. I’ll know more in a few weeks.

Finally, I’ve always gotten basic stats from my apps’ automatic update code. Info like operating system, screen size, etc. But I never knew exactly how my users were using my apps or what features were most popular. Piggybacking on top of Google Analytics’ support for mobile app tracking, I’m now pretending that my Mac apps are mobile apps and am sending event data to Google.

All of that data is completely anonymous of course, but it will allow me to see session length, number of launches, and exactly which functions within the apps are being used the most.

So, those are my three marketing improvements for January. I’ll review all the data at the end of the month and hopefully learn something concrete I can use to improve my business. When and if I do, I’ll write about it here.