Droidcon Berlin 2017 Recap

Simona Stoyanova
Dev Labs
Published in
14 min readSep 18, 2017

--

Our first 5-day adventure as a trio.

The event we attended is part of the largest global network of developer conferences with a focus on Android. Actually, the first droidcon ever took place in Berlin in 2009 and since then it has spread to over 20 countries across 4 continents, so we were where it all started.

As the schedule was too tight and there were four different tracks, it was clearly not possible for us to attend every session. But we did our best, split up occasionally… and of course missed some pretty good talks so we are waiting for the records to be released.

May I present to you our travel history, memories and key takeaways. :)

#nofilter #6am

02.09 Travelling and Tourism

03:30 — We departed from Varna, Bulgaria to Bucharest, Romania.

06:18 — Here we are crossing the Danube while watching the sunrise (picture above). Such a breathtaking moment. This was by far the most beautiful sight from our journey!

13:40 — After a short 110-minute flight, we landed at Berlin — Schönefeld airport. 12:40 + one hour from time traveling… We headed to the nearest S-Bahn station and from there to our temporary Airbnb home. :)

It was time for us to play tourists that day, so we took the S-Bahn again and headed to the city center ready for sightseeing. The city is old, as you can see, but there also are some very modernistic buildings. We walked around the Brandenburger Tor and saw plenty of iconic buildings — squares, museums, universities and more. We also had the chance to try the famous currywurst at Witty’s.

03.09 — Droidcon Barcamp and IFA

The conference took place in the major conference and exhibition venue, Messe Berlin. Known for staging mega events attracting upwards of 400.000 attendees, it is home to conferences and exhibitions such as IFA, Fruit Logistica and many more. We had the chance to visit this year’s IFA, as it was held at the same time as we were there and they had provided tickets for us.

The Samsung hall in IFA

The Droidcon Barcamp

Droidcon Berlin starts off with a Barcamp. It is one of the interactive parts of the event, where the participants get the chance to actively shape the program. It’s also perfect for very up-to-date topics that have emerged shortly before.

  • Before the sessions, there was a small Speed Networking we took part in. We had the chance to attend the presentations for Anvil which is a small Java library for creating reactive user interfaces. Originally inspired by React. It lets you declare your layout, assign event listeners and bind data in your Java code and is supposed to be faster than inflating a layout from XML.
  • And of course the most artistic presentation — Sketching for all by Chiu-Ki Chan. For me, as a Bullet journal addict, it was nothing but fun drawing all these clouds, ribbons and sketches :) Definitely, will bring my colorful pens for the next conference.
  • Live templates — Hendrik showed us how to setup them for a specific language or file format and also how to create more complex ones using groovy scripts. The presentation was very nice structured and well presented so even a beginner will understand it and I highly recommend it. His templates are here. As he said, this is one of his favorite features in Android Studio.
Just an example of Live templates

SQL Lovers & Haters Unite — an Open Discussion on Data Persistence

There also was an informal get-together around data persistence.The Panel included: Jason Feinstein (Android and web developer for @Bandcamp), Leandro Favarin (Lead Android Engineer at Blinkist), Florina Muntenescu (Android Developer Advocate at Google), Markus Junginger (CTO at ObjectBox) and Christian Melchior (Android Team Lead at Realm). Here they are getting ready for the cutest fight ever. :)

And with this, the Barcamp has come to its end. It was really nice, we met so many new people, we saw some of our developer heroes in real life and I can’t wait to tell you about the next days of the conference.

04.09 — Day 1

Here is what happened on the first official day of the conference. The keynote was by Chiu-Ki Chan and for those of you who don’t know her, Chiu-Ki is an Android developer with a passion for sharing her knowledge. She blogs, speaks, draws and makes videos about Android. She has spoken at numerous conferences all over the world and has been recognized as a Google Developer Expert.

How to be an Android Expert

by Chiu-Ki Chan.

“An expert is just a person who happened to be sharing what they know”

Her talk was so lively, involving all these sketches. It was also full of good pieces of advice. And the best part is that you don’t have to be an Android developer to take something from it. Honestly, I think I am writing this article because of her. If you watch her presentation you can learn “the secret of how we can all be experts”. Here are the link to her talk and slides.

I was lucky enough to meet her in person and frankly, she is so friendly, thoughtful and kind-hearted :)

Data persistence in Android:

There’s Room for Improvement
by Florina Muntenescu

Florina works at Google as an Android Developer Advocate and has been writing code for more than 8 years, mostly for Android. She keeps a strong focus on clean code and architecture.

This really was the most overcrowded presentation of them all. Maybe because Florina is so charismatic or because she is so passionate about Room. We were lucky enough to enter the hall while there was still place. :D

The key takeaways for me were:

  • Running multiple DAO calls atomically by wrapping them in transactions
  • Unit testing our Room database using the InMemoryDatabaseBuilder, InstantTaskExecutoRule, LiveDataTestUtil and many other details
  • Migrations — How to define them so that the code is clean and easy to read. She also mentioned that Room always chooses the shortest path to apply the migrations and that they are triggered right before the execution of the first query. And last but not least she covered how to test migrations. The presentation is here.
picture by @vladans92 I think the #Room is full? Get it? #droidconDE #dataPersistence @FMuntenescu
picture by @laeckerv Actually, there is no room left :-) @FMuntenescu #droidconDE

Profile, Debug, Analyze

by Wojtek Kalicinski

Slavi attended this session, so the summary here is made by him.

Wojtek works as a Developer Advocate at Google, based in London, helping Android developers with new framework features, Android Studio and testing. He says that he enjoys finding ways to make apps more usable, mostly through better development patterns and code optimizations.

The presentation was about the new suite of tools for analyzing apps and for debugging runtime errors and performance problems. This session has aroused interest among the developers attending droidcon Berlin because we know what it feels to dig deeper into the things we wrote and wanted to see our creation in action behind the curtains.

I learned about the new ways of analyzing with Android 8 (Oreo) by using the new Android Profiler — it is possible to view instances and references without dumping memory, but only by selecting the part from the memory graph you want to inspect! There is also a new way of using APK analyzer — through the terminal. You can view detailed information of what you are searching for there by just typing a command line with a few arguments.

In general, this session from Wojtek was very useful, because I learned the right way of using the new features in Android Studio tools.

The presentation is here.

picture by‏ @wiyarmir Call charts in @wkalic overview of the new android profiler #droidconDE

Genetically Modified Tests

by Xavier F. Gouchet

“Tests ensure the quality of your code, but what ensures the quality of your tests?”

Xavier is an Android architect at Deezer. There, he focuses on the core architecture of the apps, tools for all the Android developers, unit tests and administrates the CI systems. He has been dabbling in Android since the Cupcake days and has been working as a professional Android engineer since 2012.

One of the best presentations in my opinion. He first covered different types of tests, code coverage and why those numbers may be misleading and then the best part was Mutation Testing 101.

Xavier uses the library Pitest, which is a mutation testing system, providing gold standard test coverage for Java and the JVM. It’s fast, scalable and integrates with modern test and build tooling. They had summarized it perfectly:

Mutation testing is conceptually quite simple.

Faults (or mutations) are automatically seeded into your code, then your tests are run. If your tests fail then the mutation is killed. If your tests pass then the mutation lived.

The quality of your tests can be gauged from the percentage of mutations killed.

Really it is quite simple

To put it another way — PIT runs your unit tests against automatically modified versions of your application code. When the application code changes, it should produce different results and cause the unit tests to fail. If a unit test does not fail in this situation, it may indicate an issue with the test suite.

Here are the slides and the video footage from the conference. It contains a lot of details and I hope it may help some other testing fellows.

Think, Build, Ship and Tweak

Your Android Open Source Library
by Sangsoo Nam

“Your code is valuable for other developers. Open your code.”

Sangsoo is passionate about learning, discussing and solving interesting problems. In the past, he worked as a full stack developer in the start-up industry. These days, Sangsoo is focusing on the Android development at Spotify. From what I have seen he is resourceful and sharing.

I have been struggling to create a library for a while. This talk made me feel more confident and gave me the courage to do it right now. Sangsoo showed us the whole process of creating and releasing both Java and Android libraries and mentioned some things to have in mind while doing it.

Key takeaways:

  • Don’t forget the license
  • Document, document, document
  • Continuous Integration: building and unit testing
  • Release your library: jcenter and Maven central
  • Don’t release it manually!
  • Tweak if you have requests or pull request

Here are the slides and the presentation.

The Power of Kotlin for Your Tests

by Danny Preussler

Danny is a Google Developer Expert for Android. Currently he is in charge of Android development at Groupon in Berlin. Before that he has worked for companies like eBay and Alcatel. He dreams in clean code and could speak about unit testing all night.

His presentation was a lot different from the others because it was all live coding. He basically showed us some Java tests, then transformed them to Kotlin using code transformation and then tried to take advantage of how Kotlin works in order to make them more readable. Here are the GitHub repo and the presentation.

Some of the things I liked the most were:

  • Function naming with spaces so the output is more beautiful
    fun `handles null arguments`() {…}
  • He introduced us the Kluent library
  • How extension functions make the code simpler to read
  • Text formatting in a readable way using triple quotes
  • Adding infix functions in order to write our tests as sentences
  • Mocking Android classes with Kotlin

May I add that not only is he an inspiring programmer, but he is also a very helpful and kind person.

After the sessions ended we headed to the city center once again since there were so much to see. This time we walked around the Alexander Platz. We saw the big Tower and we tried the famous Döner kebab which is not the same as the one we have in Bulgaria but also tastes really good.

And that was the end of this day. We were tired again, but also happy that we learned so many things, met so many people and saw another part of Berlin, which is very beautiful at night by the way.

05.09 — Day 2

This was the last day of the conference and we were full of excitement for today’s sessions. So let’s jump right into them. The keynote this day was by Ame Elliott. She is Design Director at non-profit Simply Secure, which empowers practitioners to build trustworthy technology through professional education and research. Her talk described ways designers and developers can partner to create User Experiences people trust. And to be fair this talk overcome my expectations.

Designing for Trust: User Experience + Privacy

by Ame Elliott

She suggested to UX designers that instead of threatening their users with what they must not do they should think of how to build trust and how to create products and services that people feel good about using because they understand what they are doing.

The presentation was full of interesting examples and I highly recommend it as it may make you realize some current problems with privacy. It also made me think as a developer if I am doing all I can to guarantee the needed security to the users of my apps. It was just an eye opening experience.

The key points were:

  • Understanding risk
  • Care for others
  • Lead through design

Here are the presentation and the slides.

This is an illustration from the presentation

How to Cache and Load Data Without Even Trying

by Brian Plummer

Brian is a passionate product focused developer that has been writing Android applications for 7 years. He started working on Android for TouchLab and currently works for The New York Times.

He pointed out something that is missing in Android — a library to help with data loading from multiple sources, particularly 2 levels of caching + network. So the NY Times team has recently open sourced such a library which dramatically simplifies the common task of “get from mem cache, if not there get from disk, if not there hit the network, parse and update cache“. It is called Store.

Stores dramatically simplify data loading and caching while being exposed through reactive interfaces. By using them as the foundation of the NY Times app their app has both fast startup time and offline regime. In his talk, he introduced the library and then went through the open source tools they used to build it. He also said that they use two alarms — one in the morning and one in the evening to update the data silently which is a very interesting approach.

Topics included:

  • Streaming data from OKHTTP using BufferedSource/Sink
  • Creation a blazing fast file system
  • Using Guava for intelligent caching
  • Leveraging RxJava for combining and transforming multiple data sources
  • Using Alarm Manager for silent database updates in the background

Here is the presentation.

picture by Mobilization

Brave New World? Exploring App Design

with Architecture Components and Kotlin
by Hendrik Kokocinski

Remember this guy? He talked about Live Templates on the Barcamp, but here is yet again another brilliant presentation. He talked about ViewModel, Lifecycle and Livedata and showed how they can be integrated into a Kotlin based app.

He covered all of the concepts that are in the new architecture, how lifecycles work. The presentation was very nice with a lot of graphics.

Key takeaways:

  • The high-quality code is determined by the count of WTF’s per minute
  • By using Architecture Components we can lower that index
  • Lifecycle handling improves separation of concept
  • KodeIn is a DI library for Kotlin
Thanks to @TeresaHolfeld for her sketch notes on this talk. :)

Tales from the Dark Side: Developing SDKs at Scale

by Kenneth Geisshirt

Kenneth joined Realm in 2012, and he has been working on all facets of a start-up: prototyping language bindings, benchmarking, writing documentation, and providing support. For the last three years, he has primarily been hacking on Realm’s Android products/projects. We have met him in person and he told us a lot about Realm. It was obvious that he loves the company very much. An interesting fact is that some of their C++ programmers are working remotely from Sofia. :)

Key takeaways:

  • We tend to forget that some users use old devices
  • Realm uses ReLinker to make sure .so files are loaded.
  • Encryption failing — because they were using signals. Why the bug appeared and how they fixed it.
  • Can’t find app’s directory — one dirty fix which works

The presentation was funny and I think everyone will enjoy it. Here are the slides.

The Realm team is truly loyal to the community and when it comes to Kenneth I think he is one of the most honest and helpful people I met at the conference. When we were saying goodbye he said that if we have any trouble or any questions we can contact him. :)

picture by @vladans92
А picture of us with Kenneth and Christian Melchior

And that was the end of my long list. I couldn’t include every presentation I attended because the article is as you can see already too long. To sum up, we were surprised how big the Android community in real life is. Seeing so many people doing what we do was impressing. Hearing all these stories and pieces of advice was helpful, inspiring and motivating for us.

06.09 — Heading home

It was time to say goodbye to our Airbnb home. We liked it very much since it has everything we needed and was close to the S-Bahn and the Messe Berlin. I add some pictures of the inner garden which apparently is a common thing here and is really cool.

And after another 12 hours, we were back in our homes with our loved ones bringing so many chocolate candies, Lakritz and also some specially requested pretzels. That’s how our exhausting, funny and motivating journey finished. We are now looking forward to the next one! I am so happy that I shared this with you and am waiting for another recap articles.

Thanks to the entire Droidcon Berlin team for organizing such a great conference, to all the speakers for the quality presentations and to all sponsors for their support.

Thanks to DevLabs for making this trip possible and for helping us with the organization. You are the best. ❤

Special thanks to Slavi Petrov and Radoslav Yankov for being my travel companions and for helping me with this article.

--

--