I just put my first paid app on the App Store

Icon-144_mediumIt's called Roadtrip. It's one of those apps that exists because I needed it to, or more accurately, because my sister needed it to: she's a production manager on a touring stageshow, and there was no way on the iPad to get a big-picture view of what the whole tour looked like. iPad's Maps app doesn't do multi-point routes like the Google Maps website does, so I knocked up an app to do it. You can buy it here if you want to justify the insane amount of work I put into it by giving me 63 cents.

Lessons learned:

1. Selling something is a lot easier if it's free. I don't even mean with regards to marketing and getting people to buy it, I mean in terms of actually being able to get it to market in the first place. Putting a free app on the store is a piece of piss. Putting a paid app on the store actually involved me faxing something. Faxing. I thought it was 1992. I had to apply for GST, something I've never had to do because I never earned more than $50,000 from selling goods or services, but now I have even more paperwork to do at tax time. I had to sign three different contracts.

2. The rumours are true: sync is difficult. One of the big features of Roadtrip is sharing. You can share your trips with your friends and when either one changes it, the change gets reflected on the other's device. This is insanely hard to do and I still haven't got it working perfectly. I spent about twice as much time getting sync working as I did implementing every other feature of the app.

3. Google provide free APIs that are almost as good as the ones they use themselves. Google's Geocode API is now, essentially, unlimited. Which is pretty amazing, and I couldn't have made Roadtrip without it. But I still can't search for businesses by name - I can only geocode addresses. Google's Places API allows you to search for businesses and more, but (a) it's in beta, and thus is under usage limits and (b) it does way more than I need it to. There's no simple solution to search for business names like you can on Google Maps.

4. Making something intuitive is a lot harder than writing code. It's an old adage but it's true, "design is how it works". Corollary: design is fucking hard. It's really hard to point out a single piece of UI or UX that was difficult to design, because in retrospect it seems obvious. But if I had to point to one, it's the edit mode in the Stops view. When you go into editing mode, all the directions cells collapse and move handles appear on the stop cells. Getting that to work intuitively was a pain in the arse.

5. Build in error reporting from the start. As I was completing Roadtrip and getting ready to move to beta testing, I searched my code for that dreaded word: "todo". About 90% of these were along the lines of "if (error != nil) { //todo }". Retrofitting error reporting was actually pretty difficult. Like localisation (which I learned some time ago to do from the start) you should make your project assuming that, at some point, you'll have to report some errors.

I've made a fair few apps before - apps for businesses, education apps in my current job at the University of New South Wales, a piece of junk called "Color Fill" (whose name I nearly got sued over) which took me an afternoon and which I still use very occasionally - but this is the first time I've actually made an app that I've charged money for. It's a daunting prospect, and I feel very anxious about people's reactions, but if you'll pardon the cliché, nothing ventured, nothing gained. Now, if you'll excuse me, I've got to get back to work.