Compose & kotlinx.html – Jake Wharton
Jake Wharton·26 Aug 2026
26 August 2026 Let's render a simple page with Ktor server and kotlinx.html: get("/users.html") { call.respondHtml { myLayout(title = "Users") { userList( users = db.users.value, ) } } } A reusable...
Live coding with dir stepper – Jake Wharton
Jake Wharton·16 Jul 2026
16 July 2026 Two months ago I gave my first ever live programming talk at KotlinConf. It was called "Talking to terminals (and how they talk back)", and you can watch it here.
Let's defuse the Compose BOM – Jake Wharton
Jake Wharton·3 Dec 2025
03 December 2025 Many people rely on the Compose bill of materials (BOM) artifact to provide the complete set of Compose dependency versions.
You should use AndroidX betas – Jake Wharton
Jake Wharton·19 Nov 2025
19 November 2025 Did you know the versioning of AndroidX libraries and their stability guarantees are different from most libraries?
Custom short-link redirector – Jake Wharton
Jake Wharton·14 Oct 2025
14 October 2025 I used to use Bit.ly to put links into my presentations. Their service allowed you to customize the path portion of the link, so I was able to create links like bit.ly/ok-libs.
Fan-in to a single required GitHub Action – Jake Wharton
Jake Wharton·7 May 2025
07 May 2025 It doesn't take long for a project to spawn multiple jobs in their GitHub Actions. Parallelization can lead to huge speedups for PRs.
Compile-time validation of JNI signatures – Jake Wharton
Jake Wharton·12 Mar 2025
12 March 2025 JNI allows managed code inside the JVM or ART to call into native code. Java methods can be declared as native, and then a corresponding C function1 can be written and automatically...
Deprecating idling resource libraries – Jake Wharton
Jake Wharton·19 Feb 2025
19 February 2025 When Espresso was made public a decade ago, one of its banner features was the "idling resource" concept.
Using Renovate to update build JDK – Jake Wharton
Jake Wharton·8 Jan 2025
08 January 2025 You want to be using the latest JDK for development. Don't use Gradle toolchains, they'll needlessly force you to use old JDKs.
Nonsensical Maven is still a Gradle problem – Jake Wharton
Jake Wharton·28 Mar 2024
28 March 2024 There was a time when I used Maven heavily, but today all the libraries I work on build with Gradle.
Gradle toolchains are rarely a good idea – Jake Wharton
Jake Wharton·21 Mar 2024
21 March 2024 The last post featured some Kotlin code inadvertently targeting a new Java API when the build JDK was bumped to 21.
Kotlin's JDK release compatibility flag – Jake Wharton
Jake Wharton·13 Mar 2024
13 March 2024 Yesterday, our Android app crashed with a weird NoSuchMethodError. java.lang.NoSuchMethodError: No interface method removeFirst()Ljava/lang/Object; in class Ljava/util/List; or its...
Intermediate collection avoidance – Jake Wharton
Jake Wharton·7 Feb 2024
07 February 2024 Given a list of users, extract their names and join them into a comma-separated list. Kotlin's extension functions on collections make this trivial.
A stable, multiplatform Molecule 1.0
Jake Whartonby Jake Wharton·19 Jul 2023
A stable, multiplatform Molecule 1.0 Molecule is a Compose-based library which we announced two years ago for managing application state.
Native UI and multiplatform Compose with Redwood
Jake Whartonby Jake Wharton·5 Jul 2023
Native UI and multiplatform Compose with Redwood Redwood is Cash App’s take on multiplatform mobile client UI.
Using jlink to cross-compile minimal JREs – Jake Wharton
Jake Wharton·16 Jan 2023
16 January 2023 jlink is a JDK tool to create bespoke, minimal JREs for your applications. Let's try it with a "Hello, world!" program: class Main { public static void main(String...
Build on latest Java, test through lowest Java – Jake Wharton
Jake Wharton·17 May 2022
17 May 2022 In the past, when a new version of Java was released, I would add that version to our open source project's CI builds.
Slope-intercept library design – Jake Wharton
Jake Wharton·5 Apr 2022
05 April 2022 The equation y=mx+b defines a line in slope-intercept form. The line will intercept the y-axis at the value b and for each change in x its slope (the amount the line goes up or down)...
The state of managing state (with Compose)
Jake Whartonby Jake Wharton·11 Nov 2021
The state of managing state (with Compose) Five years ago the Cash App Android client started splitting our UI rendering and UI presenter responsibilities into distinct types.
Gradle dependency license validation
Jake Whartonby Jake Wharton·8 Jun 2021
Gradle dependency license validation Six years ago we added a screen to the Android Cash App to display the open source libraries we use and their licenses.
Your filters hide everything on this page. Adjust them in preferences.