Profile avatar
jorgecastillo.dev
Android at Disney+. Author of Jetpack Compose internals. 📖 Compose book jorgecastillo.dev/book 👨‍🏫 Compose course jorgecastillo.dev/course
119 posts 1,528 followers 245 following
Prolific Poster
Conversation Starter

Slot table in Jetpack Compose uses a doubling strategy to grow 🌱 It starts as empty. When 1st group is added, it grows its capacity to 32 slots, all the new free space goes to the “gap” 🧵

Someone asked about the difference between running an effect using SideEffect vs writing it directly in the Composable. It’s well explained here in the official docs. If a composition throws, effects related to it should not run either. developer.android.com/develop/ui/c...

You’re never too old for something. Don’t let people make you believe that. There is not an age deadline to achieve things in life. Many people succeeded on their 60s, some even later. You’re right where you need to be.

First alpha for Compose hot reload is out. Give it a try! 🥳

Please don’t call composable functions “view” or “views”, it’s so confusing. You can say composables, or just call it UI.

The Compose strong skipping mode does not fix the stability issue with Kotlin collections. Here’s a post on the main things to watch out for when using them 👇 open.substack.com/pub/effectiv...

Visualising yourself overcoming any complicated task before doing it is the actual game changer. That is literally what makes things happen. That’s how I landed all my jobs in tech, and also how I achieved other non work related goals in my life.

I decided to write the Jetpack Compose internals book because going deeper made me deeply understand the View system back then, which helped me so much in my professional work. I knew same would apply to Compose.

InlineTextContent is an interesting way to inline Composables into text. Can be useful for things like adding small icons next to text. developer.android.com/reference/ko...

Some people asked recently about how to enable Compose strong skipping mode. It is enabled by default.

Nobody remembers much about the work you do, your merits. This is the hard truth, so always write down everything. You’ll need it especially during eval season, or whenever you want to ask for a role change / raise.

LocalActivity CompositionLocal made the cut in androidx.activity👏👏 developer.android.com/jetpack/andr...

Composable functions must be as dumb as possible, like UI state renderers. Pass them only the state they need to render. Don’t inject dependencies on them, do that on ViewModels, resolve all the state before collecting. Make them easier to reuse, configure for previews, and to test.

There is no better way to learn how to explain code in simple and understandable words than having to teach someone. Many devs are amazing engineers but they are not good when speaking about code, which is especially important.

✨ New Delightful Compose video is out! ✨ @vanyo.dev has some great tips on how to keep your UI delightful long term by testing it! Previews, screenshot testing, DeviceConfigurationOverride and other helpful tools are covered here: www.youtube.com/watch?v=Y9GW...

I officially dropped from the GDE program yesterday, but I’ve been kinda out of it since long ago. I’m thankful for my time as GDE, but the ways I contribute today are more business related and it’s not fair to keep the role. This does not mean I’ll not be around though!

✨ First video out now! Learn how to create delightful mesh gradients in #JetpackCompose Works on Android and #KotlinMultiplatform If you like the video, you can check out the code that made it, fully open source on GitHub (aka tell me how bad my code is, 😅). youtu.be/C7iq8m2dQOo

I’m closing registrations for the Compose course in a few days. It starts in less than a week, can’t really keep it open much longer. You are still in time. All the details here. See you in the course 🙌 jorgecastillo.dev/course

Found this gem from that lying sack of shit Musk buried in my bookmarks. He absolutely did NOT give 3 months severance (also not 50% more than "legally required"). He paid out the bare minimum required by federal law and he's being litigated for the rest. I know this for a fact because I lived it.

✌️weeks.

Absolutely 0 value for the users.

Macrobenchmarks can be the most efficient tool to measure Compose migrations to move forward confidently. We use them heavily at Disney for several things, including to ensure frame times stay good when migrating isolated components. Measuring scoped migrations under realistic context is priceless 🎄

Just deleted the Mastodon app. It was nice interacting with some Android people there for some time, but I just don’t feel in the need of posting there anymore.

It’s really great to see this progress on Compose hot reload. If the team is able to overcome the challenges of incremental builds and keep build times low, it’ll be a total game changer. Wondering how it will behave in real life big projects.

Apple decided to destroy their own Photos app with a single update.

Up to 31 people already registered to the final cohort of the Jetpack Compose and internals course, including the complete teams of a couple companies. It’ll likely run out of seats this month ❤️ jorgecastillo.dev/course

How engaged is your community with the content you post? That’s the only important thing. Number of followers is not.

This post by @zachklipp.com on how to centre things in Compose is a master lesson on the compose layout system. Really recommended 💯 blog.zachklipp.com/centering-in...

I love Kotlin but please don't abuse its features. I regularly see code like in the first function when you can instead write a simple if statement: it's shorter, easier to read, and doesn't allocate an object! Thankfully both functions compile to the same assembly when R8 is turned on.

LinkedIn keeps me surprised and confused. Engagement numbers are just crazy on that platform compared to others. Wonder if they’re fake to some extent.

One of the hardest things to explain from Compose is class stability. Hopefully we can become fully agnostic of it eventually. Strong skipping is definitely helping us to get there, but I still find myself having to think about class stability every now and then.

Completely agree, and it should be part of the design specs too. UX is UX.

Just this. Don’t let imposter syndrome make you think you need to do any of those things. I’ve worked with so many great engineers in incredible teams from great companies that didn’t do any of that.

Android 15 enables edge to edge by default for all apps. If you’ve not been taking care of insets properly you’ll need to do it now. developer.android.com/develop/ui/v...

KotlinPoet 2.0 landed 👇