Part 4 of our series on Airbnb’s Page Performance Score. Luping Lin Airbnb’s home grown Page Performance Score (PPS) is designed to capture the rich, complex realities of performance by collecting a multitude of user-centric performance metrics and formulating them into one single 0-100 score. In this post we will deep dive into how we […]
This article tells the story of how Stream’s Android team refined our progress tracking process during file uploads in the Stream Chat Android SDK. Our original implementation to track file upload progress worked, but it had some in-code usability and UX issues that we wanted to clean up. The following account gives an up-close look […]
I found an old screen in Cash App today that wasn’t retaining its scroll position across configuration changes. A peek into git history revealed that the author forgot to assign an ID to its scrollable layout for enabling state restoration. And would you even blame them? Sure, View IDs are necessary, but maintaining them manually […]
Posted by Jake Wharton on November 11, 2021 Five years ago the Cash App Android client started splitting our UI rendering and UI presenter responsibilities into distinct types. We had leaned into RxJava heavily in the years prior, and it became very effective in facilitating this split. I ended up giving a fun talk, “The State […]
Multiplatform Compose and Gradle module metadata abuse 04 November 2021 My primary work project for the better part of a year (named Redwood) is built on top of Compose and runs on every platform that Kotlin supports. This of course means Android, but we also have Compose running on iOS, the web, the JVM, and […]
Trello Android recently converted from using Gson to Moshi for handling JSON. It was a bit tricky so I wanted to document the process. (For context, Trello Android primarily parses JSON. We rarely serialize JSON, and thus most of the focus here is on deserializing.) There were three main reasons for the switch from Gson […]
There are tons of articles online that discuss the articles/talks/books that you must consume to become a true programmer. I dislike this framing; it’s gatekeeping, plus software development is such a varied discipline that one person’s essential reading is entirely unnecessary for another. Instead, I’d like to present to you my programming earworms. An earworm […]
The opt-in mechanism in Kotlin allows you to mark APIs that should be used carefully – or perhaps not at all. If you mark a declaration (a class, a function, a property, anything really) as opt-in required, using it will produce a warning or error in the code, prompting the user to explicitly opt in […]
While cleaning is traditionally a spring activity, let me invite you to do it at the end of summer this time around. Note: Yes, I’m still using Groovy because I never found a compelling reason to upgrade to Kotlin DSL 🤷 Something I’m quite enthusiastic about is having the simplest and most default Gradle configuration […]
23 Jul 2021 • 7 min read Kotlin build times are often slow, this is a laundry list of common issues and what you can or can’t do about them. An actual white whale Kotlin, strictly speaking, is awesome. Kotlin build times, strictly speaking, are not awesome. While many developers have weighed these and […]