44 Followers
24 Following
16 Posts
Android at Cash App
GitHubgithub.com/drewhamilton
Yesterday I released AndroidDateTimeFormatters 3.0.0 and wrote a blog post about it. https://drewhamilton.dev/posts/android-date-time-formatters-3/
AndroidDateTimeFormatters 3.0 – Drew Hamilton

AndroidDateTimeFormatters went a long time without needing an update. It formats times in either a 12- or 24-hour style, depending on the system preference—what could change? But it built up a pile of unmerged dependency update PRs that was starting to make me anxious, so I decided to revisit the project to see whether it needed anything new, or whether I could shut off Renovate for good. The Android API already provides a way to format clock times in the preferred style: android.text.format.DateFormat.getTimeFormat returns a java.text.DateFormat instance that does this. But there was no way to do it in modern date/time libraries like java.time or ThreeTenBP. AndroidDateTimeFormatters was created to fill that gap. ThreeTenBP’s utility on Android faded over time as core library desugaring took over, so the java.time version of AndroidDateTimeFormatters was the main remaining use case.

Released Poko 0.18.1 with support for skipping individual properties and a fix for error highlighting in K2-based IDEs https://github.com/drewhamilton/Poko
GitHub - drewhamilton/Poko: A Kotlin compiler plugin that generates equals, hashCode, and toString for plain old Kotlin objects in public APIs.

A Kotlin compiler plugin that generates equals, hashCode, and toString for plain old Kotlin objects in public APIs. - drewhamilton/Poko

GitHub
Released 0.16.0 with Kotlin 2.0.0 yesterday!
Poko 0.16.0-beta01 is compiled with Kotlin 2.0.0-RC3. https://github.com/drewhamilton/Poko
GitHub - drewhamilton/Poko: A Kotlin compiler plugin that generates equals, hashCode, and toString for plain old Kotlin objects in public APIs.

A Kotlin compiler plugin that generates equals, hashCode, and toString for plain old Kotlin objects in public APIs. - drewhamilton/Poko

GitHub
"Vibes" is one of the great terms of our era. Not sure how we got by without it.

Cash App's Summer of Kotlin Multiplatform series has now concluded: https://code.cash.app/kotlin-multiplatform-summer

Revisit any posts you might have missed:
- Kotlin Multiplatform Money Formatter
- Dynamic Kotlin with Zipline
- Flow testing with Turbine
- Paraphrase: Type-Safe String Resource Formatting
- Native UI and multiplatform Compose with Redwood
- Multiplatform image loading: Coil 3.0
- A stable, multiplatform Molecule 1.0
- Announcing SQLDelight 2.0
- Okio 3.5 has WASM
- Poko goes multiplatform

Cash App’s Summer of Kotlin Multiplatform

We’re doing a series of blog posts and open source releases.

Cash App Code Blog
Poko 0.15.0 supports Kotlin Multiplatform! It now does the same thing for JS and native that it's always done for the JVM. Huge thanks to @jw for implementing this. https://code.cash.app/poko-multiplatform
Poko goes multiplatform

Poko is a Kotlin compiler plugin that generates equals, hashCode, and toString functions for annotated classes based on their properties. Inspired by Jake Wharton’s blog post on maintaining compatibility in public APIs, it partially mimics the behavior of Kotlin data classes while leaving out the copy and componentN functions, which are difficult to maintain without breaking API compatibility. Our Paraphrase and Redwood runtimes use Poko.

Cash App Code Blog

Just released Molecule 1.0, Compose without Compose UI for Kotlin multiplatform.

What's changed since the initial 0.1 almost two years ago? Today's Summer of Kotlin Multiplatform blog post summarizes the changes: https://code.cash.app/molecule-1-0

A stable, multiplatform Molecule 1.0

Molecule is a Compose-based library which we announced two years ago for managing application state. I’m excited to announce that today we are releasing version 1.0, its first stable version!

Cash App Code Blog
Up next: multiplatform and K2!
I've also recently added a neat/weird feature to Poko: Array content support. With the opt-in ArrayContentBased annotation, Poko classes will respect the content of array properties. Data classes can't do this! Most library authors shouldn't either, because mutable data bad, but sometimes performance outweighs safety.