RSS.Social

Jake Wharton

follow: @[email protected]

Posts

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)