Celebrating 5 years of Kotlin on AndroidFive years ago, at the 2017 Google I/O Keynote, Kotlin became an officially supported language for Android development. With this post, let's celebrate by revisiting that initial story, some important steps along the way, and by looking at the ongoing efforts by Google to support Kotlin.
Migrating to the new coroutines 1.6 test APIsSee the steps we took to migrate our samples to the new APIs, and then get started on migrating your own project!
Wrap-up 2021Another year over, a new one's almost begun. Here's a brief summary of what I've done in this one.
Adventures in Tracking Upload Progress With OkHttp and RetrofitTracking file upload progress can have some unexpected complexities. This article tells the story of how we refined our implementation of this feature in the Stream Chat Android SDK.
All About Opt-In AnnotationsHave you ever encountered APIs that show warnings or errors when you use them, saying that they're internal or experimental? In this guide, you'll learn everything you need to know about opt-in APIs in Kotlin: how to create and use them, and all their nuances.
A Bit of Gradle HousekeepingWhile cleaning is traditionally a spring activity, let me invite you to do it at the end of summer this time around. In this article, we'll take a look at some Gradle configuration that you can probably clean up in your Android project.
Keeping public API in check with the Kotlin binary validator pluginAs your library code is evolving over time, you have to be mindful of changes in your public API. Here’s how you can keep it in check.
Announcing requireKTXIntroducing a new library to conveniently require values from common Android types.
Clean Chat Example App with Jetpack ComposeJetpack Compose makes it easy to build beautiful UI. Check out this Chat UI sample, and learn some exciting bits of Compose along the way!
Pi Practice App in ComposeIn another detailed Jetpack Compose walkthrough, we'll look at implementing a simple app for practicing the digits of pi!
Prime Table Generator in Jetpack ComposeI've dusted off one of my oldest (and favourite) coding projects, and rewrote it in Jetpack Compose as a nice little practice exercise.
Build an Android Chat app with Jetpack ComposeIn this tutorial, you'll learn how to build a real, functional chat app using Jetpack Compose and the Stream Chat Android SDK.
Jetpack Compose: First Impressions and Learning ResourcesJetpack Compose is finally in beta. Here are my first impressions using its beta, and some recommended resources for getting started with it.
Compose O'ClockI started learning Jetpack Compose this week. Two days into that adventure, here's a quick look at how a neat clock design can be built up in Compose, step-by-step.
Publishing Android libraries to MavenCentral in 2021MavenCentral is the place to be for Android libraries, but publishing there is no easy task. With JCenter going away soon, this problem is more timely than ever. Here's the step-by-step guide on how to do it.
Sealed goodies coming in Kotlin 1.5Kotlin 1.5 will bring exciting new features, among them improvements to sealed classes and an introduction of sealed interfaces. Let's take a look at what that will look like!
Wrap-up 2020Let's send this one off so that we can get started on a better one. The "usual" recap of what I've done this year.
Mastering API Visibility in KotlinWhen designing a library, minimizing your API surface - the types, methods, properties, and functions you expose to the outside world - is a great idea. This doesn't apply to just libraries: it's a consideration you should make for every module in a multi-module project.
Effective Class DelegationOne of the most significant items of the Effective Java book is Item 18: Favor composition over inheritance. Let's see how Kotlin promotes this with class delegation.
Krate, a better SharedPreferences experienceAccessing SharedPreferences using its API directly can be somewhat inconvenient. Krate is a library built on Kotlin delegates to simplify the use of SharedPreferences.