Photo by Freebie Photography — Creative Commons Attribution 3.0

An open letter from an Android developer to the Android Community and specially to Purnima Kochikar, director of Google Play, Apps & Games at Google.

(Translations of this Open Letter: Russian, (Spanish coming soon))

TL;DR; Who watches the watchmen at Google Play?

Pamplona during San Fermín celebrations, made universal by Hemingway’s book “Fiesta: The Sun Also Rises”

TL;DR; My personal reflections as a “location independent” Android developer

I don’t use to write about personal stuff, but this time I would like to make an exception, a catharsis of all my feelings and thoughts in a few lines to encourage you to leave the “developer comfort zone”, to do the unconventional.

Currently I’m spending my last days in Madrid (Spain). I came here in 2009, 9 years ago, during the hardest times of the spanish economic crisis. Just graduated as an Industrial Engineer from university I had to leave my hometown, Zaragoza, because there were no jobs there. The only places where I could still find a job…

Usually when developing Android apps I implement an user screen where the user can refresh the screen by means of pressing a button or pulling some view, etc…

This action triggers an internet call that is wrapped by Retrofit returning a Single observable, and while this call is going on we disable the “refresh feature” of the screen to avoid duplicating refresh actions until the previous one is finished. …


Last year at GreenLionSoft we decided to progressively ditch various of the goodies provided by AWS and go “all in” into the Google’s Firebase suite.

In this article I want you to learn some critical tips to avoid the errors we committed while integrating Firebase Realtime Database that resulted in a unexpected monthly bill of more than 1.000€.

Firebase Realtime Database for what?

Source: Android Test by Testdroid

In one of my previous articles I described the basics to build and test an Android app using a Jenkins CI instance running on an Ubuntu 16.04 LTS machine.

As I personally think the Android Emulator is not reliable at all for CI streamlining, I used an actual Android device plug to the CI server to run Android tests which is probably not a realistic or feasible setup for most developer teams that use VPS or cloud CI services.

Furthermore buying and having a dozen of Android devices just used for CI Android testing maybe is not the most budget…

I’m currently working on a commuter app (Madrid Metro|Bus|Cercanias) that allows you to browse among more than 1000 bus line maps (.png files). Obviously instead of shipping 500MB .png files within the apk I’m hosting these files on Amazon Simple Storage Service (aka Amazon S3) and the app just downloads and caches the images on the device upon user request thanks to the Picasso library for Android.

But what happens when any of these maps are replaced in S3 by a new version?

I have recently acquired a new MacBook Pro as my main Android development machine and instead of selling or giving away my old Mac BookPro (13", late 2011, 16GB RAM, 500G SSD, Core i5 2,4GHz, 64Bit) I have wiped it out and turned it into a Continuous Integration Server with dual boot MacOS-Ubuntu.

The goal of this article is to summarize the installation steps for me as future reference and for any developer that may be interested in setting up its own CI server, I will explain how to:

Pablo A. Martínez

Entrepreneur & CEO @GreenLionSoft · Android Lead · Home of @MadridMBC · Android, OpenSource and OpenData promoter · Runner · Traveller

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