What I have learned so far about being an iPhone developer

I have been a part time iPhone developer now for just over two years. I was thinking the other day about what I have learned in the past two years.

When I started I hadn’t written any major pieces of code since leaving a large multinational and started training as a teacher of 11-18 year olds. After five years of the classroom I wanted to return to software development. Needing to get my head back into coding I required a project. Being a recent Apple convert and iPod Touch owner convinced me that writing iPhone apps looked like fun.

I haven’t made much money – so far! However I have learnt a huge amount, not so much about writing software but about all of the other stuff needed to be an independent software developer.

So in bullet point form here is a quick overview of what I’ve discovered:

Coding:

  • Objective-C is easy to learn if you know C and some other object-oriented language
  • Beta versions of Xcode sometimes crash – not so much anymore but certainly in the early days
  • Start using version control from day 1
  • Don’t use the Xcode snapshot feature – use a proper version control system. When your snapshot disk image goes wrong fixing it is really difficult
  • git is better than SVN, especially when it comes to Interface Builder files – don’t worry about Xcode integration just use the command line and gitx
  • Coding apps is relatively easy, but that doesn’t mean the whole process isn’t challenging

Testing:

  • Testing, testing, testing. It’s not always the code which has bugs in it. The first couple of versions of Go Calc had some very elementary errors in the built in unit conversion calculations – such as mis-converting celsius and fahrenheit. Having the review section filled with complaints is not a good way to start
  • It is worth investigating early on how unit tests work in Xcode
  • Some users are forgiving of problems in first releases, others are not
  • Find yourself some enthusiastic users and send them regular beta releases

Communication:

  • Communication with users, and potential users, is key. A good forum can often be better than really detailed information on a website which people can’t be bothered to read
  • Can you describe what your app does and why someone would want to use it? A cool idea which is hard to explain will be difficult to market. For my next app I have already written the App Store description even though I haven’t yet finished designing yet – let alone started coding
  • Don’t make a complicated website – maintaining it will take too much time. My website started being written by hand in HTML. The second iteration used RapidWeaver, and has taken much less time to maintain. However my site is still to complex and needs to be pruned. Some of the top selling apps have a single page explaining an app – I have 12 pages just for Trunk Notes

Marketing:

  • Press Releases are vital. I have only just started issuing press releases and am kicking myself for not doing this from the off. What prompted my first press release was seeing a press release from the creators of MyWiki – a rival personal wiki. A couple of weeks after their press release they appeared on the front page of the App Store. After my first press release, Trunk Notes appeared in the U.S. “What’s Hot” section and sales increased 1000% – for a while anyway!
  • Adwords are tricky beasts. I haven’t had much luck so far. Part of the problem is that you can’t use the word iPhone in the text of advert!
  • Do spend time courting the review sites. My personal feeling though is that you shouldn’t be paying for reviews, a promo code should be sufficient if your app is good enough. I need to spend more time on this…
  • There should be more bullet points here. I haven’t done a very thorough job marketing my apps. Something to work on…

Legal:

  • Getting an Employer Identification Number is easy, even for a UK developer acting as a sole trader (sole proprietorship for US readers) – just phone up the IRS
  • Your app name. Go Calc was originally called Go Figure. Sometime after it being in the App Store I had an email from the Apple legal department and the company who were accusing me of infringing their trademark. I don’t know whether or not I was but I changed my apps name anyway. Not that I recommend giving in so easily necessarily. However if I had contested it my app would likely have been removed from the App Store whilst I sorted it out with the accusing company. Be prepared for this kind of thing. As an aside there is now another app called Go Figure – and not by the company who complained to me
  • Read before doing. I recently added support for encrypted wiki entries to Trunk Notes. I did this before spending a couple of minutes researching the impact of adding encryption to an app. I’d seen the questions about encryption when submitting updates but hadn’t paid them much attention. It turns out you need to get approval from the U.S. Government before Apple will even review an app containing encryption – and this includes encryption which is part of the standard iPhone libraries. So, the lesson is do your research first. I now have to fill out lots of forms and then wait 40 days before re-enabling encryption in Trunk.

Oh, and lastly don’t expect to make huge amounts of money. At least not if you are creating productivity apps with a learning curve and a non mass market target audience. Money has never been my reason for being an iPhone developer. Far more important has been the feeling I get when I see a good review, or get contacted by a customer telling me everything they love about my app – usually followed by a few suggestions!

 

Trunk Notes 2.2.0 nearly ready for release

Trunk Notes 2.2.0 is almost ready for release.

The big new feature in this release is support for encrypted notes. This makes Trunk Notes the ideal place to store private information, such as journal entries. Simply tap the action button and select encrypt. The note is then encrypted in the database using AES256 encryption. The note stays encrypted in backups to keep your information hidden.

This release was to feature encryption. However due to my laziness and not reading up on Apple’s policies properly it will be delayed (encryption not the whole 2.2.0 release!) If you want to include encryption in an app, even if that encryption is provided by a standard Apple library that is shipped on the iPhone, you have to get U.S. Government approval. This can take up to 40 days – and there are LOTS of steps to go through. If you have been provided a beta release and find encryption useful you may want to hold off updating to the final release!

2.2.0 features more dynamic content. You can add checkboxes to a wiki entry. For example *{{check Buy Eggs}}* will add a checkbox with the label “Buy Eggs”. Another useful feature is *tagcloud*. This displays all of your tags using larger fonts for those tags which are more commonly used. Finally there is the *within* function. This uses geotags which were introduced in the last release of Trunk Notes. Simply write {{within 4km, HomePage}} to get a list of all notes which have a geotag within 4km of the HomePage geotag. Miles are also supported!

There are of course some other features which add to the flexibility and power of Trunk Notes.

  • The ability of disable data detectors useful for those of you who hate numbers being turned into links which might dial a random somebody
  • Mailing a note now includes any images or sound recordings
  • Links to web pages and links to wiki entries now look different
  • The search bar now ignores accents to make it easier for you to find your thoughts on a cool café you ran across last week
  • Some minor fixes – remove header line when using the {{action}} function, new splash screen and renaming no longer allows you to change the title of a page to something illegal such as “Docs:MyStuff”

Hopefully these new features will allow you, and those who have yet to be properly introduced to Trunk Notes, to create an even more useful personal wiki and information system on your iPhone and iPod Touch.

As always your comments, suggestions and feedback is very much welcomed. It’s always great to hear what users do with your software! Get in touch via email (mgkennard@appsonthemove.com), the forum (appsonthemove.com/forum) or Twitter (twitter.com/appsonthemove)