![New blog site!](/content/images/size/w600/2024/06/8v8ede-wide.png)
New blog site!
Welcome, you've successfully found the new home of my blog! It used to be on dev.to, but I was not comfortable with my posts living under a domain name I didn't control. I've moved all my old posts over here, but I'
Welcome, you've successfully found the new home of my blog! It used to be on dev.to, but I was not comfortable with my posts living under a domain name I didn't control. I've moved all my old posts over here, but I'
Talks
Slides: Reimagining text fields in Compose (dcNYC 23)The Compose Text team is completely rethinking the text field APIs from scratch. Come learn why, how we’re approaching the process, and get a sneak peak…Speaker Deck droidcon sources: Reimagining text fields in Compose - droidconThe Compose Text
Talks
I was very excited to get to chat more with Seb and Ivan, this time about something I’ve been working on at Google: the new BasicTextField!
Talks
Code with the Italians invited Halil and me on the show to talk about Compose Text. This was my first time here and we had so much fun! Seb and Ivan are excellent hosts.
Talks
I had so much fun writing about Compose's state system that I decided to give a talk about how the snapshot system's algorithm works. I gave this talk initially at droidcon NYC in 2022, then again the next year at droidcon SF. Slides: Opening the shutter
Talks
Slides: The Workflow Pattern, Composed (droidconSF 2022)Speaker Deck sources: The Workflow Pattern, Composed - droidconSquare, as we’ve told you over the last 4 Droidcons, has adopted the Workflow pattern - it’s now running about nearly two thirds of Square’s flagship Android codebase! This year, Workflows meet
Compose State Series
Up to this point in this blog series, I've discussed how to use Compose's snapshot state system, some advantages of how it's designed, and the occasional best practice. But I haven't talked about where the rubber meets the road: how does something
Spring 2022 Compose Hackathon
I meant to write this on Friday, but got caught up trying to gather some last bits of data after my dev environment fell over and decided to stop running benchmarks altogether. Since Wednesday… In the last post, I left off having built the piece table I initially meant to.
Spring 2022 Compose Hackathon
Well, so much for blogging every day. Better late than never, right? Anyway, I have a good excuse: I’ve been super busy writing code and tests, and it’s not going terribly. I'm calling this day 2.5 since I was up a large part of the
Spring 2022 Compose Hackathon
Introduction This week the Jetpack Compose team is doing a hackweek. I am using it as an excuse to try building something I've been thinking about basically since I joined the team. I'm not sure if it will work, or if it will be fast enough
Compose State Series
We’ve all done it: put some data in a list, changed the data around a little, and rendered the list in some UI. Unfortunately, sometimes the UI doesn’t update when you change the data. This post isn’t going to try to cover all the reasons why that
Android
Jetpack Compose has powerful features for managing mutable state and observing state changes implicitly. The snapshot state system allows framework code to specify how to observe state changes. It makes it easy to declare state that will automatically be observed, no matter how it’s accessed. This post occasionally uses
Compose State Series
Jetpack Compose introduces a novel way to handle observable state. For an introduction that adds some historical context about reactive programming on Android, see the prequel to this post, A historical introduction to the Compose reactive state model. This post explores the lower level snapshot APIs. A lot of the
Compose State Series
Jetpack Compose offers a completely new way to write, and to think about, UI code. One of its key features is that Compose code is reactive, which is to say it automatically updates in response to state changes. What really makes this feature magic, however, is that there is no
Compose State Series
If you've ever read any Compose code, you've probably seen this at least a million times: var text by remember { mutableStateOf("") } What the heck is that? There's a lot going on. The goal of this post is to pull the pieces apart,
Compose State Series
Yesterday I posted a code snippet on Twitter with a poll asking how Compose would choose to re-execute it when the state changes. Given this code, which functions will be called on the next composition? @Composable fun Foo() { var text by remember { mutableStateOf("") } Button(onClick = { text = "$text\