Two years ago at Yow Connected 2014 I gave a presentation on the architecture I have been using to develop android applications, titled “A simple, scalable app architecture with Android Annotations”. Last night I got to repeat the presentation at our local google developers group meeting.
Over the past few years there has been a lot of discussion amongst the android community about software architecture. The conversation has definitely moved along from where it was in 2014. However despite a number of alternatives being proposed such as CLEAN and MVP, I found the architecture I presented still holds up very well.
A screencast of my presentation can be viewed on youtube.
Soscribe is startup which provides a service for monitoring and filtering your social networking streams. Soscribe aims to provide you with relevant posts, based on your location, activities and interests. I’ve now worked together with Soscribe for a number of years and it’s been an absolute pleasure to see how they iterate on and improve their product. Most recently, I’ve worked closely with Soscribes designers, server team and founders to launch a visual refresh of the Android product. This involved adding support for rich content, large full bleed imagery, inline maps, image galleries and compelling visual effects. The app also re-focused on delivering relevant local content.
Soscribe had this to say about their updated app:
It has been a long time coming and there are still a lot of improvements to do but we can finally say we have nailed it this time with over 25% WEEKLY user retention without any intervention.
ZettaBeam is a media player, based off X-Box media center. The ZettaBeam device is produced by a startup, aimed at the Chinese market. Code Monastery in Sydney were contracted to build an app for controlling the ZettaBeam device via android smart phones. I worked closely with Code Monasteries junior Android developer to produce the ZettaBeam app. The app was based off the open source ‘Kore’ application. I was responsible for the overall software architecture, along with helping to manage Code Monasteries android developer on a day to day basis. I also developed a significant portion of the ZettaBeam application, modifying the existing Kore codebase and implementing a new UI. The UI needed to be built in a way that would allow the app to be translated into chinese.
The ZettaBeam hardware is currently undergoing testing and will be available for purchase in China shortly.
With the 100th year anniversary of World War 1 the Australian War Memorial in Canberra needed to provide a unique way for visitors to experience their displays. They wanted to allow people to both contemplate and experience spine chilling moments, to relate to individual stories, to create a personal connection between visitors and the exhibits. Their solution was to commission a system which allows visitors to experience customised audio, through a mobile device, triggered by indoor positioning technology. Art processors, along with a consortium of other companies were contracted to implement the system. I was lucky enough to be given the opportunity to work with Art Processors to implement the Android app portion of the system.
At the entrance to the gallery visitors select one of 5 tours from a wall length touch screen, and then with a Nexus 5 device and headphones, enter the world of World War 1. As they explore the galleries their movements trigger audio files which are combined, based on the user’s’ movements. This creates an experience which is personal and moving.
I developed the Android application running on the nexus 5 devices. This involved integrating with the enso CMS system for downloading data and talking to the AWILOC indoor location system to determine the device’s position. The app then had to mix real time audio, based of the devices location and movements. A simple audio engine which made use of location based ‘triggers’ was designed, developed and tested. The app had to communicate with a wall and table of touch screens, to allow the user to select their tour. I developed a method of communicating by flashing colours at the device’s camera which allowed communication without using wifi. Finally the app also had to carefully manage device power and report analytics to the enso backend.
Art processors provide mobile apps for museums and tourists sites. I have worked with art processors to help develop the Android SDK for their enso locate product. Enso locate is a software library and cloud hosting service which provides indoor device location using bluetooth beacons. This involved developing a stable API and documentation which would allow other developers to add the enso locate library to their apps.
At the same time I also worked with Art Processors to help refresh the android app for their enso platform. Art Processors describe the enso platform as:
… an integrated technology suite designed for creating world-class mobile experiences at museums, cultural institutions and tourist sites.
The Android enso app connects to the enso CMS system and presents users with an interactive guide. Users are shown object listings and information based on their location. The Enso app makes use of the Enso Locate api, to determine the device’s position using bluetooth beacons.
The NSW water live application reads data from a network of realtime water sensors deployed across the state of New South Wales. I worked with Spatial Vision to develop an Android application that allows users to view current sensor values, and historical graphs. Users can also define favourite sites, create ‘watches’ on values they are interested in and browse water sites via a map. The application downloads sensor data from a json webservice and caches it in a local SQL Lite DB.
In 2014 I was lucky enough to be chosen to give two presentations at Yow Connected. The first of my presentations was titled “Android for iOS people”
As a freelancer, many of the customers I work with have extensive iOS experience, but little or no Android dev experience. iOS focused organisations and developers have many questions about Android development: About the android ecosystem, fragmentation, test devices, app design, libraries to use and what to expect from Android development. Making the situation even worse there is a large amount of hyperbole and uninformed opinions spouted online by the supporters and detractors of both operating systems.
We will cover many of the common questions those with iOS experience have about Android, providing concrete advice on subjects such as dealing with multiple screen sizes, choosing test devices, what versions of android to support, etc. We will discuss the Android ecosystem and the business aspects of building Android applications. Finally we will conclude with some short code examples, showing how to use the Android SDK to create a simple ‘hello world’ project in Android studio.
A simple, scalable app architecture using the Android Annotations library will be presented. The app architecture has been used in multiple projects to quickly and reliably produce well architected, maintainable apps, with a minimum of effort. We explore how the Android Annotations library can be used to solve several problems with android application development, such as excessive boiler plate code and dealing with interactions between background tasks and the UI thread. We will also discuss how this architecture can be easily scaled from small apps with no persistent storage all the way up to complex applications backed by a DB and interacting with multiple web services and 3rd party APIs.
Soscribe is an intelligent mobile app that helps you monitor and filter incoming tweets and Facebook updates based on the interests it learns from you. Instead of you sifting through hundreds of social posts every day, Soscribe will scan through them like your very own personal assistant and notifies you when it finds something that matters to you.
Soscribe is available in the google play store:
My involvement with the Soscribe project actually started with writing a document – The Soscribe team engaged me to produce an analysis of their existing application, and document a series of proposed UI changes to:
Improve the usability of the application
Enhance the apps consistency and polish
Bring the application in line with the Android design guidelines
The initial engagement went well, and concluded with me documenting over 31 pages of improvements to be made, each one listed with a rationale, pros, cons and implementation tips.
The Soscribe team then hired me to make the suggested modifications to their application. This involved diving into their existing codebase and quickly becoming productive. As part of the work I also analysed the overall code quality and made suggestions for future improvements and evolution of the application. In addition to the UI work, the Soscribe app also involved integration with the Twitter and Facebook API’s along with GPS tracking.
The end result is a polished and simplified UI experience suitable for rolling out to users in Soscribes beta program.
I recently did a presentation on Android wear for the Melbourne Android developers group. The presentation went well and we had some very interesting conversations afterwards. The slides of my presentation are available here: Android wear presentation
As is usual around WWDC an endless amount of ink has been spilled criticising, praising and analysing the various announcements. As an Android developer its only natural for me to view what has been announced through an Android prism. There are two bits of commentary which I thought summed up things up from the Android point of view pretty well. Firstly Chris Lacy, the developer of Action Launcher and Link Bubble posted this very good summary to google plus. One nice point I think he makes is:
It’s easy (and mostly accurate) to point at a great many of the features announced and say “Android had them first and Apple are playing catchup”. This misses the point on a few levels. Firstly, Apple’s M.O. is to be the best, not necessarily the first. Also, as of the day iOS 8 releases publicly, it doesn’t really matter that Android users have had feature X for Y years previously. iOS devices now have these features, and their users are going to be delighted.
Smartphone fanboys will spend the next few days arguing about whether or not Apple did anything interesting yesterday. Third party keyboards? Welcome to 2011, Apple. Calling from my laptop or tablet? Do you even AirDroid, bro? How about Google Voice? The conversation isn’t all that interesting, and usually ends in slinging insults or moving goalposts, and that’s because the larger point is being missed. Apple isn’t just taking the best parts of Google and sewing it into iOS. Let’s be honest, each of the smartphone OS designers have been taking cues from one another for years now, and for the most part that is a good thing for everyone. What Apple did yesterday was a lot more deliberate, and a lot more targeted. Apple took to the stage with a single goal in mind, to categorically replace the need for Google in your life.