Portable Logic/Native UI
Submitted by Christopher Neugebauer (@chrisjrn) on Friday, 30 August 2013
This talk shows how to design apps whose complex internal logic runs on many mobile operating systems, but with native UI on those platforms. This ensures that the best possible user experience on each platform.
Topics include tools that let you do this (NDK, Code generation, etc), and ways you can structure your app.
The conventional wisdom on producing applications that run on both iOS and Android says that to make the best possible experience for both platforms, you’ll need to write a completely separate application for each platform.
The conventional wisdom, of course, thinks that the only important task in mobile applications is to make a pretty UI. This ignores all the hard work that goes into writing application logic. With a bit of up-front design work, it’s possible to get your important application logic running on multiple operating systems.
This talk looks at separating application logic and UI from two separate angles. The first half of the talk re-introduces the concepts of separation of concerns. Then we’ll look at approaches to building portable core code that runs on multiple systems, and ways to design your apps to take advantage of this. This includes code patterns, tools, and a tiny bit of hard-earned experience from a product that successfully uses this approach.
Christopher is a Python programmer from Hobart, Tasmania. He’s a Computer Science Honours graduate of the University of Tasmania, and he now works as an Android developer at Asdeq Labs. Working with Android means that his day job involves more Java than he’d like. He has a strong interest in the development of the Australian Python Community — he is an immediate past convenor of PyCon Australia 2012 and 2013 in Hobart, and is a newly-minted member of the Python Software Foundation.
In his spare time, Christopher enjoys presenting on Mobile development at Open Source conferences, and presenting on Open Source development at Mobile conferences.