iOS Development Resources

This post is specifically written to support the Thursday morning iOS session at the Alfresco “Level Up” DevCon in London.

Below is a list of online resources I have found incredibly useful whilst climbing the Xcode / iOS learning curve. If you’ve got others please let me know in the comments!

Apple resources

  • iOS Dev Center
    This is pretty much your central bookmark for all things Apple / iOS related. You’ll be given access to different types of resource depending on the type and details of your developer account (e.g. iOS Beta downloads are only made available to paid-up, confirmed developers)
  • Xcode 4.2 on the Mac App Store
    Note: you’ll only be able to get Xcode from the MAS if you’re running OS X Lion. If you’re still on Snow Leopard then grab it from the iOS Dev Center. 
  • iOS Human Interface Guidelines
    The essential design guide for app developers. Read and digest before writing your first line of code! :-) 


Developer links and blogs. (Note: many links on this list has been sourced from this post on ClingMarks.)

Thanks and I hope you enjoy / enjoyed my DevCon talk!
– Mike

Matrix Digital Rain – JS1K

Very quick update: @kevinroast wondered if I could squeeze my Matrix demo into the rules defined by the JS1K challenge, whereby all JavaScript has to be under 1024 bytes in size.

Challenge accepted!

…and completed. Without losing too much readability, here is a version that weighs in at 888 bytes. Sweet.

Matrix Rain

Playing with <canvas>

A while back, I tried to build a “Matrix Digital Rain” demo using the then-new <canvas> element and some images I’d grabbed from a screensaver. It became very obvious very quickly that throwing that number of images around really pushed the browser implementations to breaking point.

Image-based Matrix Digital Rain demo

To be fair, there were a lot of images! Small sections of two template images (“sprites”) were being fed into drawImage() along with positional and scaling parameters; one section for each character in a vertical line of rain. Even with scaling switched off, modern browsers were struggling with the 400 or so images per animation frame.

Sprite file (one of two used in the image-based demo)

To cut a long story short, it had always occurred to me that drawing text rather than images would be much more performant. Further, since the advent of the @font-face CSS directive for loading custom fonts, I could even copy the randomly swapped symbols from the movie version.

[Jump straight to the demo]
(opens in a new browser window)

You’ll need a relatively modern browser, e.g. Safari 5, Firefox 4, Chrome 12 or Opera 11 but you’re using one of those day-to-day right? Right?!

Feel free to grab the code and the font and have a play around. It’s… errr… “self documenting” hence not many comments. Sorry. Finally, here’s the piece of HTML to hang it all on:

<script type="text/javascript" src="/wp-content/uploads/demos/matrix-digital-rain/matrix.js"></script>
<script type="text/javascript">//<![CDATA[
   new Matrix.Main().init();
<style type="text/css">
   #canvas { margin: 0 auto; }
   @font-face { font-family: "Matrix"; src: url(/wp-content/uploads/demos/matrix-digital-rain/matrix_code.ttf) format("truetype"); }
<canvas id="canvas" width="800" height="600"></canvas>

Have fun!

— Mike

 P.S. Matrix aficionados might notice that the “rain” in this demo is actually somewhat different to that portrayed in the movies. You’ll be happy to know, therefore, that I’ll probably hopefully get round to making a proper version sometime in the future.


Third Party credits
  • Sprite images borrowed from Thomas John’s Matrix Fall screensaver.
  • Matrix Code NFI v1.0 TTF font ©2003 Thomas W. Otto – Norfok® Incredible Font Design –
iPad 2

iPad 2

My company have very kindly allowed me to acquire an iPad 2 for UX planning and (of course!) product development. For the benefit of the four or five people in the world who’ve never seen one before… tada!


It’s a white 64Gb wi-fi model sporting a lovely green magical magnetic cover!

This one is currently re-sync’ing after being downgraded from iOS 5 beta 2 back to 4.3.3, as Apple’s activation servers are currently offline. And have been for > 24h and counting. Which is nice.

For the benefit of my addled memory when I come to do this again, here are the steps to get to 5.0 beta 2…

First the preparation:

  1. Download the correct iOS 5 beta .ipsw for the device from the dev portal.
  2. Download iTunes 10.5 beta from the same place.
  3. (Safety net) download iTunes 10.3 from Apple.
  4. (Safety net) grab TinyUmbrella and backup the SHSH signatures.
  5. Make sure the iPad’s UDID is registered as a development device via the Provisioning pages. Grab the UDID from either iTunes or the System Info app.
  6. Take a full backup via iTunes.
  7. Quit iTunes and copy (somewhere like an external USB drive) the ~/Music/iTunes folder. This will allow iTunes to be downgraded as 10.5 is still a little buggy.

From v4.3.3 to v5.0 beta 2:

  1. Install iTunes 10.5 beta and launch.
  2. “Restore” the iPad to the new .ipsw image by alt-clicking the Restore button and choosing the downloaded firmware.
  3. Optionally restore from the backup taken in step 6 above.
  4. (Optional) Swear lots because the Apple activation servers are down and beta 2 closed the previous activation workarounds!

Back to 4.3.3:

  1. Remove iTunes 10.5 beta. Probably have to find and quit the “iTunes Helper” app.
  2. Re-install iTunes 10.3.
  3. Restore the backup of the iTunes folder taken in preparation step 7.
  4. Launch iTunes 10.3. Ignore the warning about an incompatible iPad being connected.
  5. Put the iPad into recovery mode by powering down, then turn on whilst holding both the power and the home button.
  6. iTunes should detect recovery mode and restore 4.3.3.
  7. Then re-sync the backup taken in preparation step 6

The reason we take a backup of the SHSH files is in case Apple stops signing the iOS 4.3.3 firmware we want to go back to. In reality I expect this step is unnecessary as 4.3.4 would be restored without issue should it be released. However, TinyUmbrella is extremely useful should the iDevice get stuck in a “recovery loop” during either of the firmware loading steps.

– Mike


Chapter 1, Verse 1

I did it.

I contributed to the Apple Inc. coffers the sum of Fifty-nine Great British Pounds to join the iOS Developer Program.

And the process very nearly went smoothly. You see, it turns out there is exactly zero tolerance built in to Apple’s payment / authorisation systems for coping with the discrepancy between “Mike” and “Michael”. I have absolutely no idea why half their databases prefer the one even my parents stopped calling me many, many years ago; probably about the same time we took delivery of an original Apple ][+ thinking about it… To be fair though, a quick (and free – thanks, Skype!) call to Developer Support across the pond and flags were raised, lifted, removed or perhaps just waved – and the golden gates into the walled garden unlocked.

iOS Dev Centre

Since then, I have been mostly scouring API documentation, WWDC videos, release notes, sample code… you name it. There’s a lot of great info available.

And then there’s this… iOS 5 beta 2 released a few days ago.

iOS Dev Center, section heading for iOS 5 beta 2 download links

My day-to-day iPhone briefly experienced beta 1 before I realised any new data would be lost (iOS 4.3.3 won’t load v5.0’s backup data set). It is very tempting though; the background – and now wireless! – sync is worth the effort alone.

— Mike

Go to Top