Jetpack Compose is a upcoming declarative UI framework for Android with many new features provided by its compiler plugin and smart runtime. As a long-time Kotlin enthusiast, I was amazed when it was announced a year ago and still discover something new in there every now and then.
However, the Compose story doesn’t end on “just” building UI. Even during the first talks describing magic behind the curtain, the library goal was defined as “to efficiently build and maintain tree-like data structures”. …
Some time ago, I read an article describing a problem experienced with Kotlin objects and serialization using built-in Java methods. The author suggests an amazing solution involving adding the
readResolve method to each object implementing
java.io.Serializable rather than using instance checks.
Despite this approach seemingly being the most correct one to go with, supporting it might be quite a nightmare. Given that here, at Bumble and Badoo, we don’t use
Serializable anywhere except for
Bundle, we decided to keep
is for each clause of
when expression, and forget about that problem altogether. However, in the back of my mind, I just could not understand why Kotlin compiler does not generate readResolve by itself for JVM targets. …
MagicLab is developing several applications (i.e: Badoo, Bumble, Chappy and Lumen) and each one of them is a separate product with its own features, management, product and engineering teams. However, we all work together in the same office and solve similar problems.
Nevertheless, projects have diverged greatly during development. The codebase was influenced not just by different time frames and product decisions, but by the vision of the developers as well. In the end, we noticed that projects have the same functionality, which substantially differs in implementation.
We then decided to move towards a structure which would give us the opportunity to reuse features in different applications. Now, instead of developing functionality for individual projects, we create common components that can be integrated into all of the products. If you’re wondering how we got there, welcome to the rest of the article! …