Realestate.com.au iPad app goes live!
It's been a number of months and some incredibly late nights in the making but the Realestate.com.au iPad App finally went live in the iTunes store last Friday, August 12. I was lucky enough to be able to give a demo of the app the night before release at the Melbourne Cocoaheads meeting at the Intunity offices in Cremorne and the response from probably the largest (70+) crowd ever to attend a cocoaheads was really exciting.
I joined the REA Mobile team back in March 2011 to help with the contenting development of their iPhone app, and after a UI uplift release for the iPhone we started working on the universal iPad app. After some hiccups along the way, we managed to deliver a brilliant looking, stable app that I'm really proud to have worked on. I'd say it's reset the bar for iOS property apps, and is streets above its competition.
The REA Mobile team is lead by Kevin O'Neill (@kevinoneill), second chaired by Luke Cunningham (@icaruswings) and backed up by Steve Hollaway, Ben Thomas, Mike Rowe, Myles Abbot, Mujtaba Hussain and myself.
Some awesome technical bits / features of the app include:
- Custom forms (IBAForms) for advanced property searches.
- A gorgeous custom UI including the little bits that are really hard to customise.
- Custom map callouts are really hard to customise.
- It's a true universal app it has a shared underlying code base and consistent behaviour, look and feel.
- It rotates, and it rotates like a boss. Rotate it, and see it resize itself without any of that crappy UI flickering you see elsewhere.
- Swishy tap, pan and swipe gesture recognisers all over the place make interactions really fluid.
- It's damn fast (it has it's own purpose built back end).
- It's stable. We tested the f*ck out of this app... and the competitors...
- It caches images and searches and other things; it also behaves nicely when errors occur.
- It's using the latest iOS 4+ technology and minimal amounts of old legacy code (there's always some right?)
- It leverages/wrangles a handful of awesome open source frameworks.
- It sets the bar for it's category in mobile property apps.
So yeah ! If you haven't already - check it out on iTunes -> Realestate.com.au in iTunes
Xcode4 Shortcuts – Melbourne Cocoaheads, April 2011
Stewart Gleadow (@StewGleadow) from Thoughtworks and I did a quick talk at the Melbourne Cocoaheads meetup this month quickly highlighting some of our favourite (or more obscure) Xcode 4 shortcuts.
The main take away of the whole exercise for me was finally memorising the shortcut symbols, overall this has improved the rate I remember new shortcuts greatly. I suggest you do the same thing!
Update: Video and slides are now available below! and on the Melbourne Cocoaheads website.
Cocoaheads 04/2011 - Talk 2 - Xcode 4 Keyboad Shortcuts via Oliver Jones
Is it worth supporting iOS 3 in 2011?
Now that we're well into 2011 the question has to be asked: Is it still worth supporting iOS 3 devices? There's a lot of cool APIs and language features you can take advantage of in iOS 4 (blocks - woo!), most new work I'm involved is targeted at iOS 4 and soon we'll have iOS 5 - but are you cutting off paying customers or future paying customers by requiring iOS 4.0 and above?
My short answer: no, not really. iOS 3 numbers are in steady decline and I don't think new or existing apps will be alienating too many active customers by requiring iOS 4+.
Quick Stats
- Only 11% of my active users are running less than iOS 4.0
- Only 6% of active users of my main paid app Seoul City Metro are running less than iOS 4.0
Now, lets have a look at some of the data I've compiled. Hope you enjoyed the graphs!
This first graph includes all the data I have collected so far summed up by month and major iOS version. The decline of iOS 3 is clear here with iOS 4 accounting for 89% of all active users by March 2011.
The second graph shows a sample of the last week's data split by iOS version.
The third graph splits up the 89% pie piece from graph 2 and shows the uptake of each distinct iOS 4 version. I found the iOS 4.3 update really interesting, since it was released on March 11 (only 9 days ago) and already accounts for 30% of users. (FYI: the first occurrence of iOS 4.3 was 15-01-2011) The previous version (iOS 4.2.1) is the second highest total at 55%. This means 75% of iOS4 users are actually quite up to date!
The same graph for the iOS 3 distribution (not included) shows the latest version of non iPad iOS 3, 3.1.3 accounts for 81% of users, and the version prior to that (3.1.2) accounts for 17.6%.
Graph four looks at the difference between paying customers and non-paying customers. The results are interesting but as I expected; paying customers are more up to date than non paying customers. There are half the number of iOS 3.x users (by percentage) of my $1.99 app as there are using my free app. It makes sense that people who pay for apps keep things up to date more than your user with a phone full of free apps.
P.S. I was inspired to pull all these details together today when I was noticed that my blog post about Delhi City Metro's iOS usage statistics had been linked to on Stack Overflow . I hope you find this all interesting.
P.P.S. Since July 2010 I have been collecting a basic set of anonymous data from users of my apps on launch. I collect iOS version, app version, unique device ID and the device type, I have recorded just over 109,000 pieces of data so far.
A simple bash script to automatically create your iOS Icon.png files
The other week at my weekly co-working catchup in the city I was made aware of the very handy sips(1) command line tool. Sips is short for Scriptable Image Processing system and is more or less a command line front end to Apple's image processing abilities.
My problem that day was "How can I automatically resize my Icon.png artwork" and all of a sudden with the knowledge of sips' existence it was easy to write this small bash script to rename and resize my large 512x512 pixel artwork down to the various names and sizes required by iOS. (Thanks Mark!)
The script is simple; give it an input PNG image at least 512x512 pixels (multiple of 512 will work too) and it will create your iTunesArtwork, Icon.png, Icon@2x.png, Icon-Small.png, Icon-Small@2x.png, Icon-Small-50.png and Icon-72.png file nicely. These sizes are all outlined in the "Application Icons" section of the iOS Application Programming Guide, and adding more when necessary is obvious.
This script should save you at least a dollar on the similar GUI apps on the app store that do the same thing...
I've made a gist on github too.
Presenting at Melbourne Cocoaheads Tonight
I'm presenting a talk tonight at Melbourne Cocoaheads (Google Group).
The topic is Apple's iAd framework, including how to add them to your project, a handful of things to remember about using iAds and an overview my first hand experiences with Seoul City Metro as an iAd supported app on the App Store.
You can find the source code for the demo I'm presenting over at git hub and the slides are below. The demo code (JCAdSupportedNavController) is an open source project I plan on updating in coming weeks with more advertising providers.
Recent iOS Version statistics from Delhi City Metro
Not long after iOS 4.0 was released I pushed a small update to Delhi City Metro to keep track of some basic (anonymous) user statistics. I'm keen to gauge the audience of any specific iOS 4 features I might consider adding and now that I've been able to visualise these, I thought I'd share them here.
To add a geographic angle to the iOS usage statistics you can see in the second graph that the majority of Delhi City Metro users are from India.
iPhone 4 has arrived!
It's been a week and two hours since I got hold of the iPhone 4 here in Australia. Just like every other Apple fan who wanted an outright iPhone 4, I lined up at the Chadstone Apple retail store; a 15 minute bike ride from my house at 5am. It was my first line up for an Apple product, not sure if it will be my last.
The iPhone 4 is that it's a great update, and the new display, camera and processor make the iOS experience just that much more awesome. I've spent this past week updating Seoul City Metro, and Delhi City Metro with new double resolution graphics - Lots to come.
Delhi Metro is enjoying #1 in Navigation in India (Updated)

I'm very proud to announce that my fourth iPhone application and third city in the City Metro Apps Delhi City Metro has had a successful first week in the app store; it is now ranked as the #1 paid navigation app in the Indian App Store. Although the raw sales data show the Indian marketplace is incredibly small compared to the US, Australia or even Korea the statistic alone is quite exciting!
It was hard work gathering accurate GPS coordinates, route length and timetables for the Delhi Metro - but the most complete version of the data available is included with the app and I have developed a high resolution custom map too.
The Delhi metro is moving at an incredible pace, so I expect to be updating it quite often.
There's a temporary webpage with some screenshots over at delhi.citymetroapps.com and I'm updating the @delhimetroapp twitter feed with minor bits and pieces.
Delhi City Metro is available on the App Store .
27 August update, here's the navigation statistics for Delhi City Metro since it's launch, now that it's been about two months
Adding the ‘pull down to refresh’ effect to UITableView
Today I was tooling around with some interface concepts and playing with apps like foursquare and Twitter (previously Tweetie) and I wondered if I could implement something similar to the now famous 'pull down to refresh' method of initialising a refresh of the content within a UITableView.
As it turns out it wasn't as difficult as I thought; There were already a couple of elegant solutions out and about. The first example I found was by Oliver Dropnik, which talked about altering an existing solution posted on git hub by user devindoty called EGOTablePullViewRefresh.
Oliver's code looked like it was a good addition to devindoty's because he had decided to subclass UITableViewController which leads to a much more complete solution that's easier to move between projects. My only issue with Oliver's code was that it refactored a lot of the underlying implementation, where I didn't see too much wrong with it.
I decided to come up with a half way measure; I moved the majority of the grunt work into a subclass of UITableViewController, cleaned up the XCode Demo project included with the source code and pushed it all back up to git hub. If you're at at all interested in this, I'd suggest checking out my fork of the EGOTablePullViewRefresh project on Git Hub.
Update: Another pull to refresh implementation is now in the three20 library by Facebook, but I'm not sure where exactly it's buried.
Seoul City Metro, and Seoul City Metro Lite are up to date again!
It had been grating on me over the last couple of weeks knowing that Seoul City Metro and Seoul City Metro Lite were not up to date with the new train stations opened on Line 1 (Dangjeong Station and Seodongtan Station) and Line 3 ( Garak Market, National Police Hospital and Ogeum). I held off an immediate update when the stations opened because I wanted to wait for the SMRT.co.kr maps to be updated properly and I wanted to include a few tweaks to the route detail interface.
As weeks moved on I was feeling increasingly like my apps were out of date, and the SMRT maps still hadn't been updated to reflect the new stations. So yesterday I just had had enough and pushed new stations, updated timetables and a manually modified map to both Seoul City Metro, and Seoul City Metro Lite. I was reluctant to manually update the maps because I don't have them in vector format but I was quite happy with the end result. Both updates were approved for sale in under 11 hours - and are available for download das you read this. (iTunes link)
I also managed to include one minor tweak to the route interface, allowing easier access to the timetables for a particular route. Although the timetables are far from where I want them, this is a step in the right direction. Also, the door side is now shown for the destination station the same as it is with transfers. (See screen shot below)

You can click the blue disclosure button on route start and transfers to see the next trains departing.
In other news:
I've been building my own custom subway map for Seoul that will appear in upcoming versions of Seoul City Metro that will release me from the constraints of the SMRT map. It's well on it's way, you can see images of it's progress via @seoulmetroapp and here.
Busan City Metro is on sale this week too, I've reduced it to $0 as more of a test of the waters. (iTunes Link)
Oh, and I'm back in Melbourne for the time being.













