Predict user behavior and react to it!

Firebase provides a wide variety of tools, something for every developer and something for every problem. But did you know that it has a tool that enables you to see into the future 🔮😮?! Yes, you heard me right, the tool called Firebase Predictions enables you to predict future actions of your users.

A lot of Android developers have never heard of Firebase Predictions or never used it, and this article will serve as a quick introduction. Apart from that, I will also explore some of the retention and monetization strategies that this tool makes possible.

To be able to…


A long time ago somewhere in India empty spaces were creating a lot of problems. Numbers were being written without zeros, and believe me, it’s hard to write numbers when you replace zero with an empty space.
11 and 1 1 looked almost the same. That’s why zero was created.

In its early beginnings, zero meant “intentionally left empty”.

Let’s now travel back to the present, and see if empty spaces are causing trouble in the life of an average software developer. …


What I’ve learned from my previous article is that the best way to gain new knowledge about a certain topic is to write about it. When I first wrote the article, I had no idea that you can create custom sampledata for your Android project. (If you don’t have a clue what sampledata is, please read tools:title=”LayoutPreview”) And then someone sent me this:

It sounded like a really cool feature, so I made the list of my favourite characters from Lord of the Rings, used it as sampledata, and got this glorious layout preview.

Later on, I wanted to include…


As every Android developer, I also started building my layouts by hard-coding values into them. Later on, I have realized that I should probably extract them into resources. Next step was not to have values in layouts if they are going to be changed from the code (always keep the state of your view in code). But at that point, my layout preview got broken. The layouts were full of TextViews without texts, ImageViews without images, etc. And then I discovered the power of tools:. Fast forward one year and I had layouts full of tools:text="Test text", tools:text="Jake Wharton", tools:src="@drawable/ic_random_res"


The hardest thing to give for free is your code. Why?!

About two years ago, I started putting pieces of code on my GitHub page. And soon I have noticed that nobody was looking at it. My profile was dead. At that point, I realized that there is no need for me to pay for private repositories 😄. And also, that people don’t want my code, not even for free.

And why was that?! I was clueless! But now, from this perspective, it’s pretty obvious. I had a horrible README and messy incomprehensible (even for me) code of an application that had very limited applicability. …


After spending a great weekend in Amsterdam and an even better Monday in picturesque towns of Volendam, Zaanse Schans, and Haarlem, on Tuesday I attended the Firebase Summit held at the magnificent concert hall named Muziekgebouw aan ‘t IJ.

At the entrance I was greeted by the Firebase team with a free 👕. Afterwards, together with other Firebasers™, I had delicious breakfast 🥐🧀🍪 and some pitch-black ☕ (there was no milk 😞). While mingling with other people and strolling through the crowd, I was amazed by diversity of this year’s Firebase Summit. …


SWI-Prolog logo

During my university days, when I was studying Mathematics and CS, software development was a refreshment of applied science in a sea of theoretical math. But then in my 4th semester came Prolog. For those who hadn’t heard of Prolog, it’s the most inapplicable programming language in the universe (at least that’s what I thought). Created in the early 1970s, it was one of the first logic programming languages. It’s the most mathematical thing in the world of computer science.

Seven years after my first encounter with Prolog, I found some old .pl files, I opened them and was amazed…


While I was learning basics of programming at my high school, I was being taught how to solve problems: sort an array, reverse a String, convert Roman numerals to Arabic, etc. It was never expected from me to write code that would be altered or checked by another person. Usually, it was enough for the code to work, and to return correct output for a given input.

Some years later my university days started. I studied Mathematics and CS, and on my first CS exam I did all tasks, I tested them, and they worked, so I was expecting my…


When writing about the preservation of data on configuration change, there are two cases to cover. First, if there is a fixed number of small objects that need to survive change, use onSaveInstanceState, and that’s it, end of story, problem solved. However, the real problem comes when you need to preserve big objects whose size is unknown. There are a couple of correct approaches to this problem depending on your requirements. But that isn’t what this text is going to be about. This text is going to be about one pretty popular and rather wrong approach. We all know…


Marc Mueller

Some 5 years ago, I got my first intern job in a small startup. We were building a computer vision prototype in Matlab, and my assignment was to write C/C++ code that was supposed to do different types of transformations on video frames. I wrote a 300-lines-long monstrosity of a method that was doing all kinds of transformations and calculations on a matrix. It worked, and I was happy. Then my boss came to me and said:

Every method that you write should be less than 25 lines long.

And I laughed, I laughed hard, right in his face. …

Vladimir Jovanović

Android Developer @FlixBus | vladimirj.dev

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