This year there are Conf-powered apps on the three biggest mobile platforms: iPhone, Windows Phone 7 and Android...
All are pure .NET projects - the Windows Phone 7 app uses the Microsoft Windows Phone SDK while the iOS and Android versions are bought to you via power of Mono: MonoTouch and Mono for Android
The official 'site' for these apps is mix11.confapp.com - it also lists a couple of 'other' options for Windows Phone users. Download one or all of them - and have a great time at MIX!
Aside: for those working on cross-mobile-platform UI, the primary navigation mechanism is quite different across the three platforms (my thoughts):
- iOS uses a 'tab bar', familiar to all users as it features in most iOS apps. The benefits are that it's always visible and the icon appearance is consistent and attractive. Only five options fit before they get hidden behind a 'More...' link.
- Windows Phone 7 uses the 'panorama' control. While it encourages discovery by panning across pages, not all options are immediately obvious to the user. Microsoft suggests a maximum of seven pages, so beyond that limit you need to think of other navigation paths.
- Android uses the operating-system provided 'hardware menu'; it is not visible until the user presses the button however it can then display a number of options at once (similar to iOS). Because it can be context-sensitive the user doesn't really know what options to expect until they press the button (although the MIX11 app uses a consistent menu from all pages to get around this confusion).
Hmm, "Pure .NET". That gave me a chill; sounds eerily like the "100% Pure Java" foolishness that infected Java back in the late 90's.
ReplyDelete:-(
@CausticMango Wasn't the problem with "Pure Java" was that it was a write once, run everywhere sort of thing? (Please correct me if I am wrong. As you can see from Craig's post, he's had to think about the way the information is presented on each platform and modify the UI accordingly for it, using all the native UI-isms such as a tab bar or panorama control.
ReplyDeleteNice job Craig!
@CausticMango... yes, I wrote some of that Java in the 90s. I like that you were reading so closely.
ReplyDeleteAs Chris pointed out, I think Mono[Touch|Droid|Mac]'s strength is that it embraces the target platform(s) rather than attempt to cover it up/abstract it away. For example:
* The platform's native UI controls are bound, so that your app feels natural to users of that platform. No-one ever loved Java's 'common look' ;-) and in today's mobile app world, you should try to respect the look-and-feel of each platform since it might well be the reason your user chose that device.
* The platform's native SDK is still accessible, so you can use the GPS, Camera, filesystem, whatever touch/gesture support is available, etc. (even the native IO and networking stack, if you'd like). There is no real 'abstraction' that hides/dumbs-down or otherwise interferes with your ability to take advantage of the platform (unlike Java's sandboxed approach to normalizing APIs and achieving interoperability via lowest-common-denominator).
The beauty of Mono* is that it brings a familiar language and common infrastructure (ie. the .NET Framework: IO, WebClient, Xml, Linq, etc) to each platform. It adds many benefits without really incurring any penalty:
- Without Mono* you need to learn everything from scratch (language syntax, memory management, networking, threading) for each platform, and if you wish to support them all you have to port/translate a lot of code as well.
-WITH Mono* you already know the language syntax and framework (eg. how to access a web service, loading and saving files, processing Xml...) so you only have to learn a few UI idioms AND any non-UI code you write can be re-used across the other Mono* platforms and ALSO on your (maybe Microsoft-powered) .NET server and Windows Phone 7.
I don't think Mono* today has much in common with the ill-fated marketing exercise that Java was. Mono* takes all the best parts of 'write once' and marries it with a realistic 'deploy anywhere with native hooks' byline. I can't think of a better way to reach all the major mobile platforms - particularly for existing .NET developers - and it's fun too with a great community around it.