Sign in

In Kotlin we have a great extension functions functionality which enables us to write more expressive and concise code. Under the hood, they are simple static methods that risk damaging our codebases if we use them incorrectly. In this article, I describe how to deal with extension functions that have transformed over time from lightweight additions to code into monsters with domain-coupled logic.

Starting point

Let’s imagine we have the following function:

Whatever way it is implemented it makes no difference: either we can use top level functions or methods of a singleton. …

Kotlin has numerous excellent features: null safety, smart casts, string interpolation and more. However, one of its features developers love the most, I have observed, are data classes. They are so well-loved that they are often used where no data class functionality is required.

In this article, with the help of an experiment, I will try to understand the real cost of using a high number of data classes in an application. I am going to delete all the data classes without breaking the compilation. Then I will share the experiment’s results and outcomes. …

Gradle buildSrc approach has become standard for implementing custom plugins, tasks and specifying common configurations (like dependencies list and versions) but has one major flaw — it invalidates a build cache when it is changed. On the other hand, Gradle also provides an alternative composite build approach that lacks this flaw. In this article, I describe how to use composite build instead of buildSrc and the challenges to expect from migration.

My experience of Gradle configurations

Gradle build system was introduced for Android Development together with Android Studio. Android Studio has not always been used. If you have been developing applications for Android for more…

In part 1 of my series of articles, I have already explained to you what Dynamic Delivery is and what API it has. In this article, I describe in detail exactly how I used Dynamic Delivery in our application Bumble and why, in particular, integration was so easy. As a result, I was able to reduce the size of the application by half a megabyte for 99% of our users, turning a function which was available only in a given geolocation into a downloadable module.

I hope this will be as useful as it was for me :)

Bumble Brew

Recently we…

Dynamic Delivery is a technology which allows you to install and delete parts of an application while the application is working, in order to reduce the space it occupied. If there are functions not being used, what is the point of a user having them on their device?

In part 1 of this article, I explore Dynamic Delivery and its API in more detail, specifically how to download and remove modules.

As part of the Bumble family — the parent company operating Badoo and Bumble apps — one of my main projects was involved in the team that created Reaktive library — reactive extensions on pure Kotlin.

Whenever possible, any library must maintain binary compatibility. Whenever various versions of a library are not compatible in terms of their dependencies, there are going to be crashes in runtime. We may encounter this problem when adding Reaktive support to MVICore.

In this article I am going to briefly explain you what binary compatibility: its peculiarities in the case of Kotlin; how it has…

As part of the Bumble family— the parent company operating Badoo and Bumble apps — one of my main projects was involved in the team that created Reaktive library — Reaktive Extensions on pure Kotlin.

In the case of Kotlin Multiplatform I discovered that continuous integration and continuous delivery require additional configuration. You need to have multiple virtual machines with different operating systems in order to build a library. In this article, I’ll be showing you how to configure continuous delivery for your Kotlin Multiplatform library.

Continuous integration and continuous delivery for open-source libraries

Continuous integration and continuous delivery have been part of the open-source communities for a…


Android Developer @BadooTech

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