Droidcon NY 2016

I’ve been to some conferences in Brazil and even presented some talks here and there a long while ago (don’t waste your time on those videos…). This year, though, Concrete Solutions presented me with a trip to New York (Big Apple) to watch Droidcon NY 2016.

So, here I am after the fact. I’ve managed to survive both days of intense content being thrown at the audience and really enjoyed the experience. Here are some thoughts about it…


Organization

The venue was really well organized. Everything from registering, getting your conference card, enjoying the nice breakfast and lunch, finding the proper rooms and whatnot was really easy and quick. It is important to stress that lunch WAS included. A not so common feature of our conferences down in Brazil.

A really nice thing on top of that was the Android app they’ve built to help you manage your schedule through the tracks. Worked flawlessly.

It is important to mention that although it seems obvious, WiFi worked as expected. I had a nice stable connection in all rooms. This gets mentioned because normally this is a bit rough Brazilian conferences. It is a lot better, but still rough around the edges.

The number of people attending was below what I expected. It is not uncommon for The Developers Conference to have 500 hundred people or more in their conferences. Here the audience was in the range of 200 participants.

Talk level

Most people will probably wonder: so, are the speakers the best there are in the Android world? The answer is yes. But that was expected right? The lineup was completely stacked with high profile Android engineers. You name it: Jake Wharton, Dan Lew, Nick Butcher, Mark Murphy, Chris Banes and plenty of others.

The last sentence though might give you a wrong idea: it is not like they have secrets we don’t have. All the talks were really educative but not magical. Ok, with some exceptions: Chris Banes and Nick Butcher went reeeeeally deep into the framework with things like animating parts of a text through paths that don’t overlap each other (text transitions) and how nested scrolling has its hiccups and what the support library team is coming with to solve those. But this is just the kind of things they work on a daily basis.


Main topics

To me, it was obvious how profiling code paths is becoming more natural to Android development. Several presentations focused on how important it is to measure things and not just “guess” why your app is behaving in some poor way. A great talk by Vikram Bodicherla from Yahoo approached cold start and how that really is important for user retention. Think about it: how much time do you wait for an application to start? How much is acceptable?

Of course there are plenty of techniques to make your app bootstrap faster, but he strongly advised measuring and coming up with some performance catalog which you could use for some degradation alarm system.

Automating this into a complete system is key here. Though his focus seemed more on the development iteration of your application. Facebook engineer Delyan Kratunov went on with the subject about how a production telemetry system is also important. He told us about all the performance metrics data you can grab from Android that can maybe help you track some performance degradation issue.

That puts the famous device year class metric system into more context. This is very detrimental to how you can categorize the expected performance of a device.

He went on with some statistical theory of why they use averages and other forms of aggregations. It is important to reason about all the data you collect and without aggregations that is impossible.

Another talk worth mentioning that presented many measured experiments was the Jack and Jill build system talk by Eric Lafortune. Bad news is that performance wise it still is slower than traditional tooling even though it skips some phases of the current javac -> .class -> dx -> classes.dex flow. Good news is that Google still have plenty of room for optimization. It’s still in its infancy but seems like something promising.

Eric is famous for ProGuard and DexGuard which are awesome pieces of technology. He measured several flows of compilation with and without his tools, with Jack, with Redex and did also a comparison between them feature wise. As an added bonus he provided a more in depth view of what’s changed in Nougat like the switch to OpenJDK base.

Another area of interest that had more than one talk was authentication. There was a really great talk by Ben Oberkfell from American Express about Fingerprint authentication. This was really nice! It showed something I’ve been saying to my colleagues like: don’t think that fingerprint is simply for saying true|false for authentication. He showed how we can go about implementing it properly in the backend and in the frontend. If you are going to do it, well, do it properly.

A googler also gave a nice talk about how we should think about user authentication interactions. Steven Soneff talked about the trouble the user faces when in a screen that has thousands of options that are really confusing: several social sign ins, plus a username and password combo, plus another sign in link to a whole form. He says that a bad authentication flow can make your adoption fall as much as 50%. Nobody wants to type whole forms or to remember which of the buttons they’ve clicked to access your content.

From Twilio there was a really nice talk about why two-factor authentication with SMS is bad. I mean, it is not just a bit bad, it’s REALLY bad. Plenty of things can go wrong like: cellular data is not as predominant as internet access, SMS is a pure text protocol eligible for being sniffed, plenty of phone operators provide some service to check your text messages online and many other things that can simply go wrong. After that he went on to show their SDK for a nice solution to all these problems.

The third area which several talks focused on is reaching a bigger audience. Well, how important is that to Android development? Let’s just say that the keynote was spot on the subject. Kelly Shuster delivered a wonderful talk about “Android is for everyone”. She really convinced the audience about the necessity of adding proper accessibility support in our applications. More than just showing us code, she changed the way we should approach the challenge: think about your users. Most people probably went through at least a moment of disability. When she went to an eye doctor and got her pupils dilated she thought she could just text her husband so that he could give her a ride back home. Well, how do you text if you can’t see? This little example gets further explored to show how developing an accessible app is important to everybody. Facebook implemented an automatic playback of video on your timeline. Initially it is muted, but if the user clicks on the video he can watch it with sound. Well, it just so happens that now 85% of the videos played in Facebook are muted. The media is specializing in providing contextual caption because of that…

On the same track, Corey Latislaw told us her story about traveling to Tanzania in Africa for testing an application her company is developing. By the way, that’s Green Life Software Development and the app was to install solar systems in the countryside of Tanzania. That is a place where getting electricity for charging a phone is a paid service. I mean, there are people that takes your cell phone, goes through all kinds of woes like muddy tracks, no directions signs and things of the like to get to another city where you have electricity more broadly available, charge your phone and go back to deliver it to you. So, thinking about battery usage, data usage and those kinds of things is crucial.

The other talks I attended were all specific to a non-shared theme. One that was awesome and quite enlightening was: ADB, Break On Through To the Other Side. Eyal Lezmy, from Genymobile, went really deep on how ADB works from the inside. When I say deep, I mean protocol deep. It was nice to see how all the parts connect. It was easy to understand, for example, what made ADB much faster on current releases. Also helpful was a tip on making some ADB settings persistent throughout reboots (just use persist. instead of service. on your settings).

Another really cool talk was JobScheduler is the Unavoidable Better Future. Eric Cochran, from IFTTT (“if this than that”), gave a really detailed explanation on the perils of using AlarmManager or GcmNetworkManager or JobScheduler. I’ll not go into the details, but keep in mind that if you need to sync offline data, you need to see this talk.

Summary

Hell of a nice conference! The experience here really gives me more food for thought to discuss inside the company I work for.

One nice outcome of it all is that most of the things I’ve seen are already part of our daily discussions. I’ve said to @rafael_toledo like a week before coming here to NY about profiling needs. Plenty of the things I’ve watched in the authentication talks are already practiced by us somehow. Accessibility is already part of our definition of done.

So, it feels like we are on track with what people are doing here. Of course, there is plenty to get acquainted with but it is good to know we are on track.