Domain Model’s StateFlow Sharing

A lot of applications have an app-wide state defined in its domain model. Making it correctly reactive may not be so trivial. Let’s explore. Apps have state all over the source code. ViewModels have their screen’s state. Storage has the app’s state, and sometimes we need to keep an app-wide state in our domain model … Read more

Exposing ktlint report as GitHub PR annotations

GitHub is awesome! One of the great features is PR annotations – your tool may simply not only check your code, but also post an annotation that is shown in the diff. ktlint is awesome! No more bikesheedding about coding style. Simply run ktlint, ideally let ktlint format your code and don’t let reviewers to … Read more

Windows’ window usability protip

Having opened multiple windows of the same app usually gorups them together as one button on the taskbar. Clicking it opens a preview of them and you may choose what window you would like to open. But there is a better option. The alternative UX is to open the last opened window on the first … Read more

New headphones

After living years with wires, I realized that I needed to switch to wireless mode. Having wired headphones makes me less moving in the office – either less going to the bathroom or less going for water to drink. I want to change this. Next, there are too many wires on my desk. Years ago … Read more

Retrieving reified generic arguments

Kotlin has a great feature that will allow you to preserve generic type T for further work, not only type resolution. So how much we can utilize it? This simple code does not take any “normal” argument, but it takes one generic argument – the T. Usually, we can just pass the T around to … Read more

Success & logic error propagation in Kotlin

In Kotlin, the expected code-flow should not use exceptions. The non-success code flow should be propagated through return type to be well-documented, strictly & statically typed. This post should be a practical guide after you have read Elizarov’s great post on Kotlin and Exceptions. Be aware that this post talks about domain errors, as described … Read more

PHP wish-list

A random list of missing language features in PHP. I do mostly Kotlin nowadays, so this is quite inspired by that language. I think these features could be (somehow) “easily” added into PHP. No new keyword It removes unnecessary keywords and allows to easily chain method calls. This cool feature also allows a nice trick … Read more

Variance Elsewhere

The last post was mainly about the variance explanation and it was using Kotlin. But what about other languages? Let’s explore together. TL;DR Language Generics dec. out dec. in use out use in type erasure break out rules Variance available on Kotlin ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ classes, interfaces Java ✔️ ❌ ❌ … Read more

Variance

A lot was written about variance and its application in generics. This is another trial to explain variance and its practical usage. Let’s explore this using Kotlin. This article expects basic knowledge about generics. Variance is a powerful way to allow your code to do more. It is most obvious when you consider generics with … Read more