Macs, Modularity and More

NSConference 2011 Day 2

After last night's meal, there were a few people the worse for wear at NSConference this morning. Still, we were kicked into life with:

Design for Developers

Dave Wiskus talked about design for developers, including the advice that the HIG is the Human Interface Guidelines, and not the Human Interface Gospel. He called out the iPhone's accessibility screen zoom as a good way of inspecting the lower elements of your design on device, rather than on the simulator.

In echoing Mike's comments from yesterday, he mentioned that design was important; and if you have to skimp, ensure that your application's logo is well designed, since that's what a number of people will make an immediate decision on.

He called out drop shadows and colours specifically as things to watch out for. Apple uses a shadow at 90° whereas Photoshop has it at 120°. Also, the use of colours – like red for stop and green for go – are fairly universal and shouldn't be used in a confusing manner.

Over the Air Distribution

Martin Reichart talked about over-the-air deployment using features in IOS, including:

Bonjour Networking

Jonathan Freeman talked about how Bonjour can be used to perform networking between iOS and Mac applications. He bravely ran a demo of BigRaceClient which had a single server and other iPhone applications to have a jockey-like race across the screen. Colin Wheeler won and narrowly beat Scotty to the finish.

The demo also highlighted issues you can have with Bonjour networking; in this case, the server was restarted and clients lost their connections, so the race couldn't be restarted. Problems can include:

Ignoring the port (it's not always what you expect)

Ignoring the domain (it's not always local)

Don't pass local, but let the OS figure out what domain(s) to use

Handle iOS multitasking gracefully, because a background app will have its connections terminated

Self-sponsored advert; I (alblue) wrote NetBox, which shows you a list of hosts on the local area network using Bonjour. Fun for parties!

Ads and Affiliates

Neil Inglis talked about mobile advertising on IOS and affiliate links, which either way seem to be good ways of monetising otherwise free applications. Some interesting statistics came out; most advertising have low fill rates (i.e. when you request an advert, but none is delivered) – so having advertisers with a high CPM is no good if they don't fill with adverts. iAds is the best for revenue, but they have a poor fill rate and only cover a few countries (US, UK, Canada, France, Germany) so relying on it as a sole provider isn't likely to be useful. Google AdSense and AdMob are the other two advertising networks; but you can use the open-source AdWhirl to dynamically switch between providers for your application based on multiple providers. Mobclix was also mentioned, though not in a good way.

When ads aren't available, consider falling back to house ads, either promoting other applications for yourself or other developers in an ad-sharing kind of agreement.

Positioning advertising in an unobtrusive place is important; away from controls and otherwise accidental key-presses (the dickbar got a mention again) in order not to get banned from advertisers.

Finally, affiliate links are a good way of promoting applications on a site, using LinkShare (for US and Canada) and Trade Doubler (UK and EU). Interestingly, the shares can apply for purchases up to the next 72h after the initial referral link, which can add up.

Aggressive Image Caching

Marcus Zarra announced the availability of the ZSAssetManager library at https://github.com/ZarraStudios/ZDS_Shared, a means to cache images or other large data with low (or high) priority. The cache manages itself (note: if you run out of disk space on an iPad or iPhone device, Bad Things Happen), and depending on the network connectivity may choose to suspend or throttle the background downloads.

This looks to be a highly useful library for anyone wanting to download content in the background with minimal user impact.

Great Customer Support

Daniel Jalkut talked about delivering great customer support, from pre-sales support through point of payment and thereafter. The pre-sales support allows potential customers to gain perspective on the application (as well as discouraging potential problem users before an implicit contract is given) and is just as important as after-sales support.

Support by e-mail allows you to give a 24h guarantee window, though Daniel discourages generic auto-responders instead of a human response. Importantly, support is moving towards other social media, such as Facebook, Twitter and others.

Having built-in support on the app for any crashes is important as well; it's not always the case that customers will go out of their way to report such crashes, so if you know about them you can act on them. Surprise and delight your customers by actually responding to crash reports where an e-mail address is known.

Wrap Up

I missed out a few talks today (Tim Isted's talk on assembly appears to have gone down very well) since I was preparing for my own blitz talk on Gerrit/Jenkins, largely based on my previous blog post except upgraded for XCode use.

The after conference party was very well attended, complete with Sumo wrestling suits and a PS3 game (as well as a bucking bronco; not sure how well that would have gone down after dinner). Part of what makes NSConference so special is not the talks, but the social/community aspect, and NSConference 2011 has certainly delivered in that regard.