Jake Wharton
Fan-in to a single required GitHub Action
Compile-time validation of JNI signatures
Deprecating idling resource libraries
Using Renovate to update build JDK
Nonsensical Maven is still a Gradle problem
Gradle toolchains are rarely a good idea
Kotlin's JDK release compatibility flag
Perils of duplicate finding
Intermediate collection avoidance
A stable, multiplatform Molecule 1.0
Native UI and multiplatform Compose with Redwood
Flow testing with Turbine
Using jlink to cross-compile minimal JREs
Report card: Java 19 and the end of Kotlin
Build on latest Java, test through lowest Java
Slope-intercept library design
The state of managing state (with Compose)
Multiplatform Compose and Gradle module metadata abuse
Gradle dependency license validation
Case-insensitive filesystems considered harmful (to me)
Cross-compiling static Rust binaries in Docker for Raspberry Pi
Migrating from Burst to TestParameterInjector
Integration verbosity and good layering
AssistedInject is dead, long live AssistedInject!
A Jetpack Compose by any other name
Treating Dockerfiles as shell scripts
Peeking at command-line ANSI escape sequences
Smaller APKs with resource optimization
Shrinking a Kotlin binary by 99.2%
Wire Support For Swift, Part 1
Sixteen corners
R8 Optimization: Lambda Groups
Which is better on Android: divide by 2 or shift by 1?
Simple Multiplatform RPC with Kotlin Serialization
Litmus-Testing Kotlin's Many Memory Models
D8 Optimization: Assertions
Removing Google as a Single Point of Failure Part 2: Gmail
Removing Google as a Single Point of Failure
Extracting 100% of Data From a Stubborn, Dying ZFS Pool
D8 Library Desugaring
Public API challenges in Kotlin
D8 Optimizations
R8 Optimization: Enum Switch Maps
R8 Optimization: Enum Ordinals and Names
R8 Optimization: Class Reflection and Forced Inlining
Calculating the true impact of zip file entries
Exceptions and proxies and coroutines, oh my!
R8 Optimization: Method Outlining
Optimizing Bytecode by Manipulating Source Code
The Economics of Generated Code
R8 Optimization: Class Constant Operations
R8 Optimization: String Constant Operations
R8 Optimization: Value Assumption
R8 Optimization: Null Data Flow Analysis (Part 2)
Inline Classes Make Great Database IDs
R8 Optimization: Null Data Flow Analysis (Part 1)
R8 Optimization: Staticization
Avoiding Vendor- and Version-Specific VM Bugs
Android's Java 9, 10, 11, and 12 Support
Android's Java 8 Support
Increased accuracy of aapt2 "keep" rules
Tracing Gradle task execution
Introducing Android KTX: Even Sweeter Kotlin Development for Android
Surfacing Hidden Change to Pull Requests
Generating Kotlin code with KotinPoet
An Optional's place in Kotlin
Square Open Source ♥s Kotlin
Web Sockets now shipping in OkHttp 3.5!
Forcing bytes downward in Okio
Just Say mNo to Hungarian Notation
Java Interoperability Policy for Major Version Updates
SQLBrite: A reactive Database Foundation
Better Parameterized Tests with Burst
The Conference Speaker Investment
Coercing Picasso To Play With Palette
Play Services 5.0 Is A Monolith Abomination
Android Needs A Simulator, Not An Emulator
Hello Picasso 2.3
Dynamic Images with Thumbor
Enhance Your Application Using Picasso
Easy HTTP Requests with Retrofit
MimeCraft, JavaWriter, and ProtoParser
Seven Days of Open Source
The Resurrection of Testing for Android
Deprecated From Inception
The Android Build System Is Broken
Decoupling Android App Communication with Otto
Using ActionBarSherlock As A Base
Announcing ActionBarSherlock Version 4.0
Advanced Pre-Honeycomb Animation with NineOldAndroids
Something Beta This Way Comes!
ActionBarSherlock - A Love Story (Part 3)
ActionBarSherlock - A Love Story (Part 2)
ActionBarSherlock - A Love Story (Part 1)