Bringing everything together.

Photo by Dominic Hampton on Unsplash

In the first two parts (part 1 and part 2), we outlined the process we would be following for migrating to Room from our previous ORM, Cupboard, and we identified 4 main phases for doing so. We also explored in detail what Phase 1 and Phase 2 were all about.

In this final part, we will at the last two phases:

  • Phase 3: make the existing migrations work with Room and handle the seed database
  • Phase 4: flip the switch

Phase 3: make the existing migrations work with Room and handle the seed database

Since its creation, the Blinkist app has seen 12 explicit database migrations. Why explicit, you might be…

Preparing the ground and getting our hands dirty.

Photo by Scott Blake on Unsplash

In the first part, David and I outlined the process we would be following for migrating to Room from our previous ORM, Cupboard, and we identified 4 main phases for doing so.

In this second part, we will look at the first two phases:

  • Phase 1: review existing tests and add the missing ones
  • Phase 2: extract interfaces and add a Room-based implementation for each repository

Phase 1: review existing tests and add the missing ones

Because each entity model came with its own repository, it was fairly easy to split the task between two people: every time one of us finished…

Analysis and planning.

Photo by Sven Mieke on Unsplash


In this series of articles, we will walk you through our process of migrating to Room at Blinkist. Even though we will refer specifically to our previous ORM, we strongly believe that the steps we took, and the processes we followed, are applicable regardless and should be beneficial to anyone considering to do the same thing.

This article was written by two hands, mine and David Lázaro’s. We worked on this project together, and together decided that we wanted to describe the approach we took.


The Android team at Blinkist is currently growing at a rapid pace…

Photo by Micah Williams on Unsplash

On why default Proguard rules are important

A few days ago, while I was working on introducing AndroidX to the Blinkist app, I stumbled upon an unexpected crash. After a solid amount of hours spent on trying to understand whether it was a regression or a jolly good bug, I realized that it had to do with Proguard, and that the solution was apparently not as well known as one might think.

TL;DR: using default Proguard rules can save you time and pain, especially (but not limited to) when migrating to AndroidX.

At I/O ’18, Google announced AndroidX. Put it…

A small story around how Ripples are somewhat broken on Pie, and how to f̵i̵x̵ temporarily patch them.

Photo by Linus Nylund on Unsplash


Like any other regular day at the Blinkist office, I open the production version of the app, just to check something. As I move through the various screen, I notice something. It’s sudden, only for a fraction of second, but it is there and my brain registers it.

A quick reflection

Snippet of Gson’s FieldNamingPolicy file.

I recently started working on a completely new codebase for me, one that is almost 6 years old but that has aged very well, luckily. Many early bets have proven to be right and have definitely paid off over time: the wide adoption of MVP, RxJava, Dagger… the whole gang.

The interaction with the backend is also very traditional, with JSON payloads passed back and forth. The tool used to de-serialize JSON into POJOs and vice-versa is Gson, which has been the de facto standard for quite some time now.

I was very familiar with Gson, having…

A quick and easy way to check the third-party licenses for your Android app

This image, for instance, does not require any attribution. Source

A primer to software licenses

Licences are a tricky beast, but more often than not we tend to ignore them even though we really should not. The fact that a third-party library is open-source easily deceives us into thinking that we can do whatever we want with it, because why not? The code is there for everyone to see, we can copy or modify it, and there is no physical limitation that prevents us from doing so. But, as it turns out, licenses are extremely important from a legal perspective.


A closer look at the I/O 2018 announcements

Google I/O 2018 is just behind us, but it brought a lot of news when it comes to in-app purchases, both already available and coming soon. In this article, I will try to summarize all the new announcements (spoiler: there’s a ton of stuff!) and explain what they are and how can you benefit from them.

Let’s begin!

Play Billing Library 1.1


The Play Billing Library (PBL, in short) was announced in September 2017 and has since started gaining traction, due to its immensely simpler integration process and guarantee of support. …

An addendum to the official documentation

Illustration by Marta Pucci


Monetization is one of the most important aspects of distributing your product to the rest of the world. It can make or break a small freelance developer or an established startup.

Android, being so widespread, provides ways for users to purchase products from within your app: this is referred to as In-app Billing. Through this set of APIs, developers can offer two types of products:

  • Managed in-app products
    As the name suggests, these products are managed by the developer, and they branch into consumable and non-consumable. …

So Long, and Thanks for All the Fish!

The tweet I made for the website’s launch.

A month ago we celebrated 3 years anniversary, and it seems almost appropriate to communicate that the service will be taken down in the coming weeks.

This post was written collaboratively by me and my dear friend Nicola, who I thank again for having helped me creating this tool.

A brief history

For those of you that don’t know us or have never used it, MethodsCount is (was?) a service that allows to compute the number of methods of a given library for Android. …

Sebastiano Gottardo

Engineering Manager + Android Engineer, GDE

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store