August 7, 2023
I am being a bit unfair dragging Kotlin and Jetpack into this, but you find yourself dealing with unexpected complication when you want to have some state (such as clicking a button and setting some kind of flag). In the case of Jetpack, it is about making the infrastructure aware that you changed something and that it might need to redraw things on the screen. It ends up smelling a bit like Monads in Haskell -- just keep that thought on the back burner.
This 7 part series talks about all of this and looks pretty good:
Adventures in Computing / [email protected]