A Brave New Workflow

One of the good things about hitting the reset button is that it gives you an opportunity to stop and reassess.

Over the last couple of years, my tooling and workflows have slowly descended into disarray. I would often do things the quick way, rather than the right way. In the moment, this meant getting the job done quickly, but it soon meant I had a mess on my hands. A mess that became exponentially worse when I started running two Macs. 

It wasn’t long before my beloved 2010 MacBook Pro was a second class citizen, nor was it long before things on my iMac started to feel clunky after years of cruft building up.

I wanted a solution that kept my iMac and my MacBook as equals, allowing me to jump from one to the other with minimal overhead. I started by looking at the things I do most often:

  • iOS development
  • Design work
  • Web development

The first two, my iOS development and design work, were quite easy to solve. Cloud storage. 

My first thought was to use something like Dropbox, but I hadn’t realised quite how expensive it had become. I don’t need a tonne of storage, but unless I’m missing something, it looks like 1TB at £7.99 per month was the starting price beyond the free plan. I was hoping for something cheaper for say, 200GB.

Then it dawned on me, I already pay for 200GB of iCloud storage and have plenty to spare. Why not use iCloud Drive? Something about relying on iCloud in this way felt foolish. But given how invested I am in the Apple eco-system, I figured I’d trial it. Worst case, I can move to Dropbox. 

Two weeks in with iCloud Drive, and so far, so good. One thing I wish it had is a “sync now” button. There have been a couple of instances where I would find iCloud Drive out of sync on my MacBook, and there’s nothing I can do but wait until it catches up. The lack of feedback that the system provides is disconcerting at times, making you feel entirely at its mercy. Although in fairness, it does always catch up after a few (long and awkward) seconds. 

But what about version control? I’ll still be using Git in conjunction with iCloud Drive. Instead of using Git as a tool to get code between machines via pushing and pulling, I’ll use it purely for version control, checking out my branches into iCloud Drive which will then sync my checked out branch between my MacBook and iMac.

There was a time where I would keep my design files in version control, often in the same repository as my code. But in hindsight, that was probably a little heavy handed. I’m not sure my design files ever felt the benefit from being in version control, at least, not at the level I work at. If I want to try something crazy, I make a new art board, if it doesn’t work out, no harm done. Your milage may vary, especially if you’re part of a team. I guess being a solo developer allows me small luxuries in this sense.

So that leaves my web development. The one that caused the biggest headache. I feel like I’ve gone full circle on this. I started out using a combination of Vagrant and Virtual Box, but this can create a maintenance overhead, especially when you’re trying to maintain the same setup on two machines. Often, I would find myself wanting to tweak something on a vagrant box after a few months away. I would use Puphpet to do this, loading my previous config.yaml file into Puphpet to make the desired changes, only to find when I go to provision, I’m met with errors, and so the dance of debugging would begin. Again, keep in mind this had to work on two Macs.

I see the benefits of using Vagrant and Virtual Box to build development environments, and I think it’s an impressive piece of tech, but I’m looking for a low maintenance solution that can easily run on multiple machines. I also need to keep in mind that I don’t make many websites these days, and those that I do aren’t wildly complex, so perhaps I was over engineering my development environment. So, I decided to go back to basics and use MAMP with a splash of iCloud Drive.

I set MAMP’s document root to a directory on iCloud Drive, which keeps my code synced across my two Macs, with Git running on top of this for version control purposes. Similar to how I run my iOS development.

That still leaves a small issue of managing development databases. Rather than try and battle with keeping local databases in sync between machines, I set up some development databases on my remote web server which my development sites are pointed at, that way, when I move between machines, I get the same code (via iCloudDrive) looking at the same remote development database. This does require an internet connection while I develop, but I can’t remember the last time I tried developing without an internet connection.

This new workflow is only a couple of weeks old, but so far, it’s working really well. Sure, all I’ve done is add some cloud storage and move my local web development to MAMP, but that’s not the big take away here. For me, it’s highlighted how important it is to occasionally pause and reassess. This is particularly hard to do when you’re busy, it’s easier to keep doing things in a more familiar, but less efficient manner. But by occasionally allowing yourself the time to pause and evaluate your processes, you will hopefully feel the rewards further down the road. Perhaps I’ll revisit this post in a few months and see where things are then.

My app business failed. What’s next?

I’ve avoided writing this for some time:

My app business failed and I’ve shut it down.

I avoided writing about it, heck – even talking about it, because it made me feel bad and I didn’t want to admit that I had failed. Being a solo iOS developer can be a lonely and isolating place, especially when things aren’t going well, which is why I think it’s important that I share my story.

So, how I did get here?

In January this year, it became clear there were problems. My apps had been getting killed in the App Store search rankings for some time, my download numbers were sliding lower as each week passed and it wasn’t long before my monthly revenue sunk below my monthly costs.

You might wonder, as a one man shop, what costs are there beyond a relatively inexpensive developer account renewal once a year?

In my case, I set up shop as a limited company and my monthly fixed costs went something like this:

  • Monthly fees to my accountant (~£60)
  • Web and email hosting (~£10)
  • Other online services (~£10)
  • Bank fees (~£5)

So, around £85 a month to keep a limited company afloat. Most of that is going straight my accountant, but frankly, the incorporation of a company and the filing of accounts fill me with pure dread, so despite the cost, it’s probably best I leave it to someone else! 

Would I go as a limited company if I were doing it again? Possibly…perhaps that’s a discussion worthy of its own post for another time.

Besides the monthly costs, there are some things that come up annually, such as domain name renewals and my Apple developer account, call those a “round £100” and we’re looking at a fixed operating costs of ~£1100 per year.

To be clear, I never made a fortune from my apps. Some months I would break even, others I would get some pizza money – some months, I wouldn’t even break even. In hindsight, I should have made the decision to close down way sooner than I actually did, but the thought of admitting failure and quitting felt crushing to me.

As the new year rolled in, I found myself in an awkward place where my current apps were stagnating, but worse still, I didn’t have an idea for my next app. I was lost, burnt out, and the idea of shutting things down felt awful. At the time, I  convinced myself that I needed to persevere and sort out this mess.

That was until March, when an idea for a new app came along…

I did the typical thing of getting super excited about the new idea, and before I knew it, I was sketching out design ideas, listing out potential features. Then it dawned on me, this is going to take a long time to make.

When I looked at my monthly costs and guesstimated how long this would take the build, with my company the way it was, suddenly, the development of this app had a pretty hefty price tag associated with it.

That’s when the conversation in my mind changed. Suddenly, shutting down seemed very appealing. I could take stock, learn from my past mistakes, take my time without worrying about monthly expenditure and make something awesome. Then, when the time is right, make a comeback. And that’s exactly what I plan on doing.

Speaking of learning from past mistakes, with my new app idea, currently going by the codename of “Project Synapse”, I’m doing things a little differently. I’m taking a marketing first approach.

I first heard about it through an episode of Release Notes. You should go and listen to the episode, but the general idea is that before starting work on a big project, you put out a preview in order to gauge levels of interest and try and get some early stage feedback and validation on your idea. To me, the idea makes a huge amount of sense as it’s proving in advance that I have the ability to reach and engage my target audience. If I can’t do it now, that’s unlikely to change once my app is finished. 

Sure, there are some risks to this approach, putting out a preview could put me at risk of being copied and beaten to market, but frankly, there are a tonne of decisions that need to be made in order to turn what I have now into the app I know it can be. Simply ripping off my screenshots won’t get anyone that far, so it’s a risk I’m willing to accept.

In short: It’s better to find out now if nobody cares about my app idea rather than finding out after I’ve spent months sweating over making it.

So that’s what I did. I put out a preview page for Project Synapse. If you like it, you can sign up to a mailing list to register your interest. If you don’t like it, I’d still love to hear from you to know why, feel free to reach out to me on Twitter, my DM’s are open.

There are still some questions I need to find answers for. The biggest, is working out how many people need to sign up to my mailing list before I consider this an idea worthy of going into full blown development. Fifty? One Hundred? Five Hundred? A Thousand? 

I don’t know what the answer is yet, but one of my hopes for this site is that it can allow me to document my journey in a way that might help others. So as I explore this question, and others like it, I’ll be sure to write about it here.

In the meantime, please do let me know your thoughts on Project Synapse. If you fancy getting a “directors commentary” on the app’s development, be sure to subscribe to Waiting for Review, a weekly podcast about iOS development which I co-host. No doubt it will be the topic of many a conversation!

In the first half of this episode we discuss Swift vs. Objective C and the wider community debate between the two. Is Swift a difficult language, and should new projects be started in anything other than Swift in 2018?

In the second half we get stuck into free trials and their current state, post WWDC. These have the ability to make or break our business models for indie apps, but the devil is in the detail.

Listen here

Marzipan and Free Trials

This year at WWDC we got free trials, sort of… 

In short, it’s not what I would call free trials, more like a hack of the in app purchase system. At this point, I remain hopeful that this is a step in the right direction, rather than the final solution.

The thing that gives me hope for real free trials is Marzipan. 

This is particularly timely for me as I’m in the process of designing a new app, and the idea is that it’ll run on iPhone, iPad and the Mac. 

What struck me when I was sketching out my UI, was how a screen for the iPad would end up looking very similar to the Mac, almost to the point where it made me worry I was fundamentally missing a trick. Surely the Mac app should be wildly different? Maybe not…

Given that Marzipan is coming and the iPad and the Mac have the potential to be so similar, I wonder if this could all come full circle and translate into richer, more powerful iOS apps.

For me, as a one man shop, I have to be super careful about where I allocate my resources, so having the ability to create a Mac and iOS app from the same codebase will hopefully afford me the time to create a better app for both iOS and the Mac. 

Assuming that more “pro” apps find their way to iOS, it’s plausible that users might be willing to pay more for these apps (crazy, right?), and with that, real free trials could become a necessity. 

The Mac has been able to get around this for years, developers can simply distribute their apps outside of the App Store and roll in free trials as they see fit. It’s worth noting, when I look at my dock, any serious piece of software that I paid for, started with a free trial. Just sayin’…

Given how there’s no official way to distribute iOS apps outside of the App Store, when the time is right, this might just create enough pressure to get real free trails the attention it needs. One can hope!

This week, we’re a bit overloaded with WWDC so we take a break and talk about Mac hardware, timely, as Dave Nott seems to have fallen down the hackintosh rabbit hole!

Listen here

Continuing on from last week’s WWDC special, we take a deeper dive into three big parts of the WWDC keynote – performance, Marzipan and Siri Shortcuts.

We consider what these developments will mean for the platform and users, and the impacts and opportunities for developers.

Listen here

Fifth time the charm?

I’ve lost count of how many blogs I’ve started and failed to maintain, yet it’s always something I circle back to.

This time, I’m doing things a little differently, in addition to being a regular blog I’m also using this site as a home for my microblog. Both will appear on the homepage, which should help to keep things fresh, and there are individual RSS feeds should you wish to split things out.

In addition to being a home for my various blogs, I also wanted this to be a place where people can learn a little more about me and the projects I work on. Right now, that consists of a podcast about iOS development, and a new app that I’ll be ready to talk about really soon. Right now it goes by the code name of “Project Synapse”, keep an eye on its page, I’ll be updating it into something much more interesting soon.

Great fun being on the WWDC special of The Outpost Show this week. Thanks for having me on, Daryl!

Recorded just minutes after the keynote finished, we jump in to discuss our first thoughts and reactons to the WWDC keynote.

Listen here.