Latency percentiles are not additiveWhen we are estimating the latency spanning multiple requests on the backend, we tend to use napkin math to add 90th percentile (p90) of…Oct 7, 202313Oct 7, 202313
Reduce, Reuse & Recycle your thread pools ♻️This story covers how to manage thread pools efficiently for real-world Android applications.Dec 20, 20211383Dec 20, 20211383
Published inMicrosoft Mobile EngineeringReducing Android app size in practice at LinkedInApp size is a key metric impacting user acquisition and retention. This story covers how LinkedIn optimizes the app size.Nov 23, 20211442Nov 23, 20211442
Fairly evaluating the impact of different Android UI libraries on Gradle buildFor an Android application maintained by a large group of developers, build time is one of the most critical developer ergonomic metrics…Nov 9, 20211411Nov 9, 20211411
Safely collecting hot flows from Android native UIAlong with the coroutine adoption, StateFlowbecomes an alternative observable data holder for LiveDatasince StateFlowhas almost all the…Sep 2, 202131Sep 2, 202131
Converting LiveData to Flow: More lessons learnedAndroid KTX provides opinionated methods facilitating using Kotlin Coroutines in Android Architecture Components. For instance…Jun 23, 202131Jun 23, 202131
Debugging LiveData changes made easyHave you ever got frustrated to debug LiveData changes by adding numerous log statements or breakpoints? As the core data structure of…Apr 8, 202127Apr 8, 202127
Converting LiveData to Flow: Lessons learnedAndroid KTX provides opinionated methods, such asFlow<T>.asLiveData(), facilitating using Kotlin Coroutines in Android Architecture…Apr 3, 20211382Apr 3, 20211382
JvmSuppressWildcards: The secret sauce to your sandwich-style genericsIf generic types are exposed in Kotlin API, consider @JvmSuppressWildcards so that your Java consumer can compile successfully.Feb 23, 2021134Feb 23, 2021134
Presenting data efficiently in emailsA simple trick to write an email report for your readersJan 29, 20211Jan 29, 20211