Most experienced developers are familiar with using dynamic proxies. They enable us to implement an interface at runtime and decide how to execute methods dynamically as they are invoked. This is very useful to add additional functionality around existing implementations (especially from third-party libraries) as described by the Decorator Pattern. However, Kotlin coroutines introduce a new set of problems when creating dynamic proxies. We'll explore how to properly detect and dynamically invoke suspend functions declared on an interface. The Setup First, create...

Scrum teams thrive on innovation and trying out new things, that’s not news to anyone in the industry. What might be understood, but not often talked about, is how enthusiastic our end users will be with our changes. However, they aren't going to be enthusiastic if the changes are complex and take more thought than they are willing to give (which is usually not a lot). Steve Krug, usability consultant and author of the timeless book, “Don’t Make Me Think”...

With all of the resources Google and Apple have poured into their ecosystems, creating cross-platform mobile applications is easier than ever. However, you still can’t get around the fact that building a native application means developing it twice - once for iOS and once for Android. Well, now thanks to a framework called Flutter, developers can create for both platforms at the same time. ...