Last week we went to Droidcon in Kista and enjoyed the company of fellow android developers in Electrum, a laboratory building for KTH. The conference was filled with lots of interesting developers and thought-provoking lectures. The overabundance of coffee, tea, fruits, and cinnamon buns was also very appreciated. In this post, I’ll try to summarize the conference by briefly describing the lectures and my experience of the whole conference.
The first day started off with Ali Parr (Facebook) talking briefly about their service called Parse, which they use themselves for deploying features to production, among other things. One of the more compelling points they made was features are directly deployed to production instead of maintaining a staged environment. To keep users from experiencing a great deal of unfinished features, Parse Config have a “feature switch”; Essentially letting you control who will see the feature. This introduces an interesting way of letting you apply “dogfooding” for your project. Other than that, he also mentioned some UX tips, mainly consisting of KISS (Keep It Simple Stupid). An overall interesting talk.
Second speaker was Troed Sångberg from Sony Mobile. The talk was mainly about he seeing a trend in the way people uses new technology, stating that we’ll probably see a deviation from our current phone usage in about 3 to 4 years.
Next up was Mark Allison from Styling Android Ltd, with the main theme of graphics (and some fascinating card magic in the beginning). This is the first lecture where we actually got to see some code. The things Mark talked about was how to speed up your application by removing unnecessary layouts and merge bitmaps where applicable. I’ve applied these improvements myself in a lot of applications and it’s always a good performance booster to try and keep the layout simple. Very good lecture which also included examples of image blurring with RenderScript.
A couple of guys from Novoda gave a great deal of tips regarding working environments and how to code. One focus was how to do pair programming which I personally found a bit interesting. They showed pictures of having duplicate sets of keyboards and mice at their desks and briefly talked about different ways to approach pair programming; Pair tennis or driver/navigator. One being that A is responsible for implementing code and B write test code for those parts. The other being that one codes and the other is in charge of making sure the code is written according to the requirements. Lots of other stuff was mentioned that was interesting:
- Hack & tells, developers take an hour to show each other something interesting that they’ve implemented.
- Xbox downtime, taking a break from coding can freshen up ones mind. Be it from games or something else.
- After work pubbing. It can help to grab a beer and talk about stuff that doesn’t necessarily fit into conversations at the office.
- And a lot more
Tim Messerschmidt from PayPal talked about other authentication and authorization techniques than using a simple password. Disturbing points were made where around 10% were shown to use “123456” or “12345678” as a password. He recommended everyone to use two stage authentication where appropriate and gave links to some solutions for storing passwords on your device (if needed).
Kevin Grant from Tumblr gave a very interesting talk about Material Design and animations. A lot was about how you should follow the design guidelines, but rather than thinking your app is done when you’ve followed the guidlines, use some time to come up with some design/animation on top of that, that might set you apart from other apps.
Henrik Sandström from Wrapp went through a lot of things they did to refactor their app. This included dropping support for anything below Ice Cream Sandwich and introduce RxJava to get rid of lots of boiler-plate code. Other than listing different third party libraries they’ve used, he also mentioned they are using Google Play’s Alpha and Beta testing.
The last speaker of day 1 was Kenichi Kanbara, from NTT Software Corporation where he gave a beginner course in Android Wear, describing how to set up your IDE and gave code examples of how to send data to a Wear device.
Day 2. First lecture of the day was from Juhani Lehtimäki, Snapp Solutions. The general theme of this one was developers should care about details in the design. The whole lecture was interesting, giving examples of bad design where developers changed the behavior of already defined user patterns. E.g. using the overflow/menu icon as a tab among other things. The summarized version would be to use the design guidelines strictly, and be very subtle with animations. He gave an example of a bad behavior in an app where all visual elements exploded out in every direction and new elements came in from all directions. If you’re going to use animations, use them to describe to the user where they are, where they are going, and where they came from. One other thing that was mentioned was tabs at the bottom, which is a iOS pattern. It shouldn’t be used on Android.
Next in line was Matthias Käppler from SoundCloud, presenting his solution to tackling complexity in large applications. A big part of this was how to differentiate between accidental complexity and essential complexity, one where complexity has been introduced by writing code that is more complex than it needs to be, and the other that is an inherent complexity to your project’s domain, one which is needed. After that there was a brief talk about how to structure your project, where it was recommended to use a featurized architecture, meaning you should keep all classes that is related to one feature in one package. This would be most beneficial if your project is divided into separate teams per feature. Again, RxJava is recommended for everyone to use.
We had a lecture from Bontouch representative Christoffer Hirsimaa where he gave us information about using custom views to set your application apart from the others. Lots of examples and tips were given, one of them was that you should probably avoid extending View if there’s already a class the extends it that contains code that you could use in your implementation. A good talk for developers that haven’t explored custom views yet.
An interesting developer named Tyrone Nicholas from Facebook talked about their solution to solve image management. One issue that all developers agrees on is handling images is always difficult to handle as the memory heap too frequently causes OutOfMemoryErrors. A way to solve this is to implement your image handling through C++ instead of Java, so you’re more in control than you would otherwise be. A fascinating topic for developers that know C++. Sadly, I’m not one of them but it did give me a spark for learning it.
Like the introduction to Android Wear, we also had an introduction to Fragments by Greenlife representative Corey Leigh Latislaw. It was a pretty basic lecture, giving some interesting statistics about use of fragments and how and where to use them. She had summarized Google’s documentation in a very good and understanding way. I think that this presentation was a welcome refresh to the know-how of Fragments.
Surprisingly enough, there was a speaker from Microsoft at this conference. Aleksandar Djordevic had a pretty important topic, namely Security demands by enterprises. This talk might not have been everyones cup of tea but it was certainly a serious talk and it was interesting to listen to. This lecture gave an insight in how much of a difference there is between a business to business- and a consumer application. One of these things is that you should be aware that the Terms of Service is (actually) read by enterprises by their legal teams. If anything isn’t correctly written, one of the enterprises could be in for a bad time. Another thing worth mentioning was security holes are taken very seriously because the provider of the service might be taken to court if nothing is done right away. Lastly, enterprises uses risk based decision making. Meaning that if a security hole costs more to fix than to pay fines from court, it might not get fixed.
Esri representative Annika Hermodsson Hyltén talked about GIS (Geographical Information System). A pretty current history of its use was described, where applications to map Sweden’s largest forest fire that occurred this summer was presented. Rescuers were providing live data to update the map of where the fire was currently heading, giving everyone the most live feed they could wish for. It was also used during the flooding in Halland later that summer.
Remi Pedersen had an interesting history lecture of his career up until the current day. He was one of the guys responsible for the GPUs used in our ARM-devices (99% of all android phones) and talked about how he got were he was and what he had done to get there. A fascinating topic.
Lastly, Magnus Hyttsten from Google did a recap of his presentation at Google I/O (sadly, without the t-shirt cannon). He made a summary of how you, as a developer, can use Google Play Services (GPS) in you application and how it has helped providing devices get new features, even if they are stuck on Android 2.3. GPS is a way for Google to relieve the fragmentation issue caused by users having Android devices ranging from 2.3 up to 4.4. In this presentation, a lot of APIs were mentioned. One of these was Google Wallet, a service to pay using your phone instead of carrying around a hefty amount of credit cards. This is not currently available in Sweden, but there’s nothing saying it won’t come here soon. It might be worth looking into. A related API is the Address API. It’s built so the user shouldn’t have to fill in their address more than once, storing it on their Google Account. Lastly, the App Indexing API.
The App Indexing API provides a way for developers to notify Google about deep links in their native apps and allows the Google app, version 3.6 and above, to drive re-engagement through Google Search query autocompletions, providing fast and easy access to inner pages in apps. The deep links reported using the App Indexing API are also used by Google to index app content and are surfaced in Google Search results.
These two days were pumped full of knowledge and hopefully a lot of this will stay in most of the developers memory. A huge amount of colleagues with different types of knowledge of the platform can meet up and talk at these events and it’s really interesting seeing the different types of people with their diverse opinions. I personally look forward to more meetups and conferences; they don’t replace StackOverflow but it’s a lot more fun.