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, 2023Oct 7, 2023
Reduce, Reuse & Recycle your thread pools ♻️This story covers how to manage thread pools efficiently for real-world Android applications.Dec 20, 20213Dec 20, 20213
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, 20212Nov 23, 20212
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, 20211Nov 9, 20211
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, 2021Sep 2, 2021
Converting LiveData to Flow: More lessons learnedAndroid KTX provides opinionated methods facilitating using Kotlin Coroutines in Android Architecture Components. For instance…Jun 23, 2021Jun 23, 2021
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, 2021Apr 8, 2021
Converting LiveData to Flow: Lessons learnedAndroid KTX provides opinionated methods, such asFlow<T>.asLiveData(), facilitating using Kotlin Coroutines in Android Architecture…Apr 3, 20212Apr 3, 20212
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, 2021Feb 23, 2021
Presenting data efficiently in emailsA simple trick to write an email report for your readersJan 29, 2021Jan 29, 2021