A Client Guide from Our President/COO Heath Clinton If you or your organization is considering custom software as a solution to further your business, you may not know where to start. You may not know exactly what you need. That’s okay. In my role as Phase 2’s president and COO, I’ve seen what works and what doesn’t from both the client-side and the developer-side. I want to share what the client or organization might want to know - and quite frankly,...

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”...