Looking to configure multiple SSH keys on the same computer? For instance to use a different SSH key for your public and enterprise Github contributions.
Removing all trackers from my website
29 Jan 2023
These past years I’ve grown to be more privacy-aware. And while this post isn’t about how I’m increasing my personal privacy, I’d like to talk about how I’m increasing yours.
Android emulator access to local server
25 Jan 2023
How can you connect your app on an Android emulator to a development server running on the localhost of your computer?
Transfer many large files from Android
17 Dec 2022
Trying to get a large number of files from your Android phone, but Android File Transfer freezing up?
Verify Github profile link on Mastodon
26 Nov 2022
Looking to get a fancy verified checkmark on Mastodon for your Github account?
Test React app on mobile without Wi-Fi
19 Nov 2022
Traveling by train or plane and want to test your react app on your mobile phone? This quick post explains how to access your react development server from your phone without a Wi-Fi connection.
The curious case of crashing Workers
27 Apr 2022
WorkManager is great to schedule background work on Android. However, since scheduled work lives outside of the app lifecycle, you might run into unexpected crashes.
No, your pull request does not need a review
23 Feb 2022
In the past years, my thoughts on pull request reviews have evolved considerably. Given that creating and reviewing pull requests are a core part of our work, let’s talk about those.
With JCenter shutting down, many are migrating to Maven Central. And while there are many posts on how to publish new artifacts, also all existing artifacts should be migrated away from JCenter.
While Android supports most Java language features, it doesn’t support every API that Java provides. On the other hand, Kotlin multiplatform only allows sharing code across all targets (commonMain), not a subset of targets (commonJvm).
Migrating away from JCenter
04 Feb 2021
This week JFrog - out of nowhere - announced to completely remove their Maven repository. Since they’ll pull it offline already by May 2021 (!!!) it’s time to urgently migrate away. This blogpost will guide how to get started.
Year in review 2020
05 Jan 2021
Well… I don’t really know where to start this time. 2020 was quite the rollercoaster, with many downs… but fortunately also a few amazing ups. Let’s focus on the good stuff.
Short, powerful post on how to test the release version of libraries directly within a project without having to deploy them to Maven first.
Android library development - Dependencies
11 Nov 2020
Ever had a build failure while integrating an SDK? Wonder how you can avoid your SDK customers having dependency conflicts? How many transitive dependencies should your SDK have?
Android library development - Modularization
04 Nov 2020
With modularization being all the hype, should you also modularize an SDK? Are fat aar files really needed? And how do you prevent internal APIs from being exposed on your public interface?
Android library development - Getting started
28 Oct 2020
Having switched to Android SDK development over the past year, I’ve run into quite a few interesting and unexpected challenges. So how does library development differ from app development?
Kdoc for Android libraries using Dokka
19 Feb 2020
A great way to make your library easier to use it to generate code documentation for its public interface. The default way to do this in Kotlin is to generate KDoc using the official Dokka plugin.
Year in review 2019
09 Jan 2020
Getting up without being rushed, cycling my kids to school, cooking healthy salads for lunch, kids running into my arms when they get home… I’m quite happy with my new daily routine!
Feature flags - A successful architecture
12 Sep 2019
Now that we know how feature flags can help us release faster, it’s time to dive into the actual implementation details. How can we easily define feature flags? How to configure them both locally as remotely? And use them in...
Feature Flags - How to use
20 Aug 2019
Empowered with what feature flags are and why they are useful, let’s see how we can actually integrate them into an app. And how can we roll them out to our users?
Feature Flags - Why you should care
13 Aug 2019
A key ingredient to speed up modern software development is feature flags. But what is a feature flag precisely? Why should you care about them? How do you integrate them into your codebase? And how can we make them easy...
Lessons learned being a lead developer
06 Aug 2019
Three years ago, we decided ramp up internal app development at Philips Hue. After interviewing candidates (78!) for six months, I became the lead Android developer of the freshly hired Android team.
Supporting Android Q gestural navigation
17 Jul 2019
From Android Q onwards devices can now operate in a fully gestural system navigation mode. In that mode, there is no longer an on-screen back button, instead users can swipe from both edges to navigate back.
Philips Hue adaptive icon
03 Jul 2019
Your icon is one of the most important assets in your app. With a bit of luck, users might even put it on their main launcher screen!
Modularization - Lessons learned
12 Jun 2019
Wrapping up this series on modularization I’d like to share some of the things we’ve learned at Philips Hue while going through this process the past year.
Modularization - How to approach
24 Apr 2019
Now that we have a clear idea of how a modularized app could look like how can this be applied to an existing app?
Modularization - Real-life example
02 Apr 2019
With a clear view on how multi-module apps should be architected, let’s dive into a real-life practical example.
Modularization - A successful architecture
18 Mar 2019
Now that we’ve established that modularization is a really good thing to strive for, how should a modularized app look like? How are the different modules connected? And how does this look for a real app?
Modularization - Why you should care
06 Mar 2019
Modularizing your app seems to be all the hype these days. But why should you actually care? What are the benefits for you and your team? How should a modularized app look like? And how do you start splitting your...
Five tips to get your code base in shape
20 Feb 2019
Are you living the dream? Is your code so clean it makes your eyes just tear a little? Can’t think of anything you would still like to refactor? Never have any bugs? Using all the latest technologies?
Testing LiveData in JUnit 4 and JUnit 5
17 Jan 2019
Architecture components are one of the most exciting things that happened to Android in the past years. But how do you effectively go about and testing this?
Year in review 2018
01 Jan 2019
Sitting in our own couch, in our own house, kids safely asleep upstairs,… The road here was brutal, but the result is extraordinary.
Can you fix the test?
06 Dec 2018
Learning from analyzing code is one of the greatest ways to improve your skills. Can you spot the mistakes in the tests below?
Kotlin Stackoverflow error
01 Nov 2018
Java interop is one of the best features of the Kotlin language, yet sometimes this also can cause unforeseen issues…
Kotlinconf 2018 slides
05 Oct 2018
Was really great visiting Kotlinconf this year and I wanted to do a quick post to link to all of it’s wonderful content.
A little Kotlin puzzler
25 Sep 2018
Kotlin is an incredibly enjoyable, concise and powerful programming language. Yet sometimes also a bit confusing…
How dangerous permissions sneak into apps
02 Aug 2018
This is a post-mortem where the very dangerous permission, READ_PHONE_STATE, unintentionally sneaked into our app. Here’s how this could happen, how we debugged and finally how we solved it.
Pro Android Studio - Taming the interface
16 Jul 2018
Not only can anything in Android Studio be controlled with a keyboard shortcut, it offers many more simple tricks to make you more productive.
Pro Android Studio - Refactoring
26 Apr 2018
Refactoring can be tedious and easily introduce bugs. The main reason for this is the number of manual steps involved: rename, move, copy-paste,… So wouldn’t it make sense to automate this and have Android Studio do all the work for...
Pro Android Studio - Code navigation
22 Feb 2018
Struggling to navigate your code? Getting lost in deep inheritance hierarchies? Hard time figuring out relations between classes? Let’s learn how to navigate code in Android Studio like a pro.
Year in review 2017
01 Jan 2018
For the first time ever I have my year in review ready in time.
MacOS update could not be installed
26 Dec 2017
Tonight after a routine MacOS update (10.13.2) disaster struck and my Mac got stuck in an update boot loop. After a few hours of panic, reading online and trial & error I managed to resolve it. Here’s what I did...
The curious case of haunting fragments
18 Dec 2017
Do Fragment transactions and back navigation have no more secrets for you? Well then you should try to solve the mystery in this post, where a Fragment (literally) came to haunt us…
The 100% code coverage problem
28 Nov 2017
While you may be tempted to strive for 100% code coverage, that would be a horrible idea. Besides some code being hard to test, the concept of coverage is actually fundamentally limited.
Droidcon UK slides
27 Oct 2017
Had a blast visiting Droidcon UK this year and wanted to do a quick post to link to all of it’s wonderful content.
The career opportunity called Kotlin
13 Sep 2017
This isn’t another post about the benefits of using Kotlin. Hell, I’m not even going to cover any of its language features. Nor will I try to convince you to make the switch.
Embracing Java 8 language features
21 Jul 2017
For years Android developers have been limited to Java 6 features. While RetroLambda or the experimental Jack toolchain would help, proper support from Google was notably missing.
Implementation vs API dependency
14 Jun 2017
Upgrading to Android studio 3.0 territory will make building multi-module projects a lot faster, but it also means a breaking Gradle plugin API change unfortunately.
My Google #io17 takeaways
31 May 2017
Being my 2nd year at Google IO, I decided to do things differently: Besides taking notes during sessions, I also created a personal todo list. This contains all new (and even old) technologies I got triggered to look into.
Android Makers FR recap
11 Apr 2017
After organizing Droidcon Paris for several year, the organizers decided to move on and experiment with a new format. This didn’t just result in a well organized conference, but also in a fresh new vibe whilst still feeling familiar.
Why your app should crash
08 Mar 2017
Too many times I’ve seen developers trying to avoid crashes at all cost. But are unhandled exceptions really that bad? And are null checks really the answer?
Write awesome unit tests
16 Feb 2017
If you can code, you can also write unit tests. Writing awesome tests on the other hand is a different story. Don’t fool yourself: Unit testing code is production code that you will need to maintain, refactor and build upon...
Using Mockito 2.x on Android
17 Jan 2017
The Mockito team is on fire lately! Not only did they add support to mock final classes and methods, but now they allow running Mockito directly onto an actual Android device.
Year in review 2016
09 Jan 2017
It’s that time of the year again to do a little personal retrospective.
31 Oct 2016
Due to its clean simple api, Mockito has become world’s most popular Java mocking framework. After having covered all of its basics, it’s time to spice things up and start extending Mockito.
The hidden cost of code coverage
01 Sep 2016
Code coverage is an awesome way to motivate you and your team to write more tests. But did you know that simply enabling it slows down your build significantly?
Why you should care about copyright
03 Aug 2016
As die hard Android developers, copyright notices are usually not on top of our priority list. Yet large corporations always insist to add a copyright header. Why do they do that? Should you do that for your open source libraries?...
Turn Android into an awesome cycling GPS
21 Jul 2016
Cycling is all about exploring: visiting new places and making existing routes more fun with better streets. So there must be an app that allows to plan your route and start cycling right? Think again… there is currently no solution...
Testing made sweet with a Mockito
24 Jun 2016
At Droidcon Berlin 2016 I had a great time talking about testing using the Mockito framework. While the talk wasn’t recorded unfortunately, the great folks at Voice Republic recorded an audio version which you can listen to as a podcast...
Droidcon Berlin recap
18 Jun 2016
Having founded the entire Droidcon franchise in 2009, Droidcon Berlin is a magical conference to be at. Not only do they have an awesome lineup of speakers (including yours truly). But they also organize great after hour events. Further they’re...
Efficiently reducing your method count
06 May 2016
As green field projects are a rare breed, chances are that you’ve inherited a legacy code base. If you’re as lucky as me, that code base has over 65k methods causing the build times to be boringly slow.
Droidcon Italy recap
08 Apr 2016
A conference about our favorite Green little robots? In sunny Italy? With great food and a party? Yeah, I can image how you must feel in case you missed it… I on the other hand was fortunate enough to attend...
A successful XML naming convention
07 Mar 2016
Do you remember the last time you had to dig into strings.xml to find the right String to use? Or that you manually had to go over all drawables to find the one you needed?
Git as a secure private Maven repository
05 Feb 2016
As my previous blogposts already covered how to set up a private Maven repository, you might wonder “Why again a Maven blogpost?”. Well that’s a fair question and the answer is twofold:
Year in review 2015
29 Jan 2016
Finally found the time to write my year in review. #insomnia
Level up GitHub builds with CI and code coverage
13 Nov 2015
Wouldn’t you love to have your open source projects built automatically by a continuous integration server? And to have a detailed code coverage report for all your unit tests? Even when someone generated a pull request? And how about having...
Getting the most out of Artifactory
13 Aug 2015
My previous blog post described how to set up your own private Maven repository with Artifactory in 30 minutes. This second and final part will make things more interesting and take your setup to the next level.
A private Maven repository for Android in 30 min
06 Aug 2015
Setting up your own Maven repository and uploading artifacts to it is quite a daunting task. As I went through this experience myself recently, I want to help others in setting up their own Maven repository via Artifactory and automate...
How I created my blog
25 Apr 2015
For quite some months, I’ve been planning to create a website and start blogging about the things I’m passionate about. Last week, I finally decided to setup a portfolio and blog using GitHub pages and Jekyll.