Show newer

The Retrofit 2 converter for kotlinx.serialization has shed its experimental annotations and gone 1.0!

github.com/JakeWharton/retrofi

This requires a bump to Kotlin 1.8.10 and kotlinx.serialization 1.5.0 where the APIs we relied upon have now been stabilized. Enjoy!

Next steps: move the converter into the Retrofit repo as a proper first-party offering.

Mosaic 0.6.0 released with Kotlin 1.8.20 support.

This release contains a lot of infrastructure changes which are required to support a forthcoming Compose UI-like modifier feature. Lots of internal optimization and shuffling as well as some public package moves. Otherwise, no real features other than the Kotlin bump.

github.com/JakeWharton/mosaic/

Working on slides in Keynote and getting MacOS crashes... feels good to be back.

Seeing people post positively about Substack now that it's challenging Twitter.

Reminder: Substack is also centralised. Worse, the business model is basically to take what would once have been blogs and paywall them as premium 'newsletters'.

Substack is not a friend of the open web.

So sad to hear about Bob Lee. He was an incredible coworker, leader, and friend. So much of Square and Cash App engineering culture is directly linked to him, and certainly our propensity for using and releasing open source software.

"On 64-bit Apple platforms, the entire 4 GiB 32-bit address space (addresses [0x00000000, 0xFFFFFFFF]) is not accessible by the process, which catches both NULL pointer dereference bugs and 64-bit to 32-bit pointer truncation bugs." alwaysprocessing.blog/2022/02/

I wasn't aware. This is clever! Even with about 4 billion possible values shaved off, that still leaves over 16 million Petabytes of address space.

And now 0.12.3 to restore Java bytecode version targeting to 8.

Show thread

My job search is over. In a few weeks, I’ll be joining the OS team at CashApp, and I can’t wait.

Taking 6 months out has been so good for my mental health. I know I am privileged to be able to do that, but I was feeling burnt out. The time out has helped immensely 🧘‍♂️

ThreeTenABP 1.4.5 released with the 2023b timezone database.

github.com/JakeWharton/ThreeTe

Unfortunately there probably will be an immediate follow-up for 2023c as soon as ThreeTenBP releases with it because part of the changes in 2023b were reverted.

For details on the underlying timezone database changes see data.iana.org/time-zones/tzdb/

Turbine 0.12.2 released with some important correctness fixes.

github.com/cashapp/turbine/rel

- The exception thrown when no events have been received now includes the timeout exception containing the caller file and line information.

- Ensure `expectNoEvents()` fails if a completion or exception event occurred.

- Differentiate timeout exceptions thrown from Turbine's own event timeout (which are thrown) from those which occur within the flow under test (which are available via `awaitError()`).

"Mitigating soft verification issues in R8 and D8" by outlining references to newer APIs into API-specific types.

medium.com/androiddevelopers/m

It's nice to see this supported! Four years or so this was actually rejected by D8/R8 as being not its problem. As a result AndroidX changed rules to do it manually: github.com/androidx/androidx/b

> Calls to new APIs gated on `SDK_INT` *must* be made from version-specific static inner classes to avoid verification errors that negatively affect run-time performance

New Coil release! 2.3.0 includes baseline profiles and a new coil-test artifact, which should help a lot with screenshot testing. Also a few assorted bug fixes. Check it out!

github.com/coil-kt/coil/blob/m

I built my own memory profiler (in #Rust, on #Linux)

And lived to tell the story in video form, apparently:
youtube.com/watch?v=DpnXaNkM9_

If you use github.com/mdogan/homebrew-zul then a `brew update` and `brew install zulu-jdk20` will get you an automatically-updating JDK 20 living alongside all your others.

heyooooooo new article: "A world to win: WebAssembly for the rest of us" wingolog.org/archives/2023/03/

Of interest if you wonder: why does it seem like only rust and C are winning with WebAssembly? what is the deal with garbage collection? how would you compile scheme to wasm? how can I win with my weirdo altlang? also, is WebAssembly haunted? guaranteed success or your money back!

The Effective Interview ⚡️ with @jw is finally out 🚀

Go give it a read! 👇 lots of learnings and advice on this one.

effectiveandroid.substack.com/

Show older
Mastodon

This server is a place for Jake Wharton. Are you Jake Wharton? This is your place. Are you not Jake Wharton? Well, at least you can find him here.