Andrew taught himself Android development in 2013 when he started working on Auracle Music Player. Since then he's shared his passion for teaching and sharing Android knowledge through teaching a class at Carnegie Mellon University, appearing as a guest on popular podcasts such as Fragmented, writing articles, and speaking at Android conferences across the country. Currently, he works as an Android Engineer at SmartThings on the Audio Video Platform. When he’s not working on Auracle or writing a blog post, you can find Andrew on the dance floor busting a move or at a karaoke bar singing to his heart’s content.
Kotlin is a language that is designed to improve productivity immediately upon its adoption. However, there exists a sea of language features and third party libraries that can further supercharge your workflow. This talk will discuss the use of language features and libraries to do things like improve type safety with sealed classes or reduce boilerplate with domain specific languages and infix functions. We’ll also cover some functional programming concepts that either build upon the language, like the Option type does with nullability, or supplement the language, like the Try type does with Kotlin’s lack of checked exceptions.
Composing an Android app out of many modules allows for faster build times, and is also required for Instant App features. However, tearing apart a single monolithic app module isn’t easy. It’s hard to know what module to make first or how to avoid circular dependencies. In this talk, Andrew and Yousuf cover potential problems and pitfalls, then propose pragmatic solutions for breaking an Android app down into many modules. From this talk you’ll learn some pros and cons of different approaches to modularizing an app and how to create your first module. We’ll also cover general multi module topics such as build file best practices, dependency injection, and app navigation between screens that live in different modules.