Community Keeping Android and Kotlin Healthy in a Post-Twitter World As the developer communities scatter from Twitter, let's learn from mistakes.
Kotlin Improving Your Gradle Workflow by Not Auto-reloading Build Files IntelliJ and Android Studio try to constantly reload Gradle projects by default, disabling that behavior can improve your workflow.
AndroidDev Android Studio's "I'm Feeling Lucky" Button Android Studio has a misleading "Make project" button that you shouldn't click.
AndroidDev Network Calls in Lint: Best Practices Android Lint has an API to make network calls, this post covers best practices of when and where to use it.
You Are Not Blocked A common complaint I see in the Kotlin/Java/Android community is that someone is "blocked" waiting for an open source library release. This is a bit of a red flag from a developer standpoint and a nuisance as an OSS maintainer. It leads to folks making noise in the
Kotlin Optimizing Your Kotlin Build Kotlin build times are often slow, this is a laundry list of common issues and what you can or can't do about them.
Personal Growth How I Work A high level overview of my work style and how it helps improve my productivity.
RxJava Disposables Can Cause Memory Leaks Every Disposable holds a strong reference to the observer it binds. This can lead to surprising memory leaks.
Kotlin Kapt's Hidden Test Costs TL;DR Kapt will run on your test builds even if you didn't ask it to.
time Time in UI Programming I've been digging around in time APIs a bunch lately. One thing I've found over time is that it helps to think of parts of time APIs as contextual in UI. This is similar to Locale or Android's resource system. You wouldn't usually pass around a localized string in your
Annotation Processing Kotlin Symbol Processing: Early Thoughts Google announced Kotlin Symbol Processing [https://github.com/android/kotlin/tree/ksp/libraries/tools/kotlin-symbol-processing-api] (KSP) today, a new compiler-plugin-based API for annotation processing in Kotlin. It's designed to be a faster alternative to Kapt, Kotlin's current first party tool for this. Rather than re-explain some of its excellent [https:
Dagger Party Tricks Dagger Party Tricks: Extension Functions Extension functions in Dagger for fun and profit.
Making My WFH Life Bearable With the ongoing pandemic, I've found myself struggling to feel comfortable with being home ~23hrs/day. In case it helps anyone, I wanted to jot down and share some things that I've found helpful for me.
AndroidDev Android's Built-in ProGuard Rules: The Missing Guide Android's build tools come with a few ProGuard facets to squeeze the most juice out of your release builds. In this post we'll cover what they all are, what's inside 'em, and what you can do with this knowledge!
Kotlin It's Nothing Nothing is a special type in Kotlin often used for errors. Is that all it's useful for though?
Open Source Butterfly Effects I like learning new things. That's a sufficiently vague claim, but it's intentionally broad. There's different conduits for learning: open source libraries, side projects, any sort of learning pursuit outside of your day-to-day work. I'm a big believer that these pursuits, however trivial, usually pay off in the long run.
Life How to Take a Six Month Sabbatical There's a saying someone told me this summer - there's three pillars in life: health, time, and money. At any given moment, most people have at most two. If you're fortunate enough to have all three, you make the most of it while you can. I took 6 months off
Dagger Party Tricks Dagger Party Tricks: Refactoring Techniques for refactoring Dagger code with ease.
Dagger Party Tricks Dagger Party Tricks: Private Dependencies Leveraging Dagger qualifiers to hide intermediate dependencies.
Dagger Party Tricks Dagger Party Tricks: Deferred OkHttp Initialization Leveraging Dagger to defer OkHttp's initialization to a background thread and buy back precious startup time.
Moshi A Closer Look At Moshi 1.9 Moshi 1.9 is here! It's been in the oven for a year and excited to have it out there. This post takes a closer look at its changes.
Kotlin @JvmDefault: More Useful Than You Think @JvmDefault is an annotation + compiler flag in Kotlin to enable using Java 8 default interface methods. It does more than it leads on though! This post explores some other bytecode optimizations you can gain with it as well as some hidden behaviors you should be aware of.