I talk about productivity, engineering management, software engineering, life advice, and other random things that I find interesting. Subscribe to my newsletter to get my latest writing delivered straight to your inbox.
Long-form pieces on engineering, leadership, and life.
I recently joined my friend Kaushik on the Fragmented Podcast to discuss the future of Android Development.
Most decisions at work and in life are made under a temporary set of constraints. We accept the world as it is, optimizing within limits that may not even be real. What if we approached decisions like a toddler—ignoring the rules, focusing on what’s possible, and bending reality to fit our goals?
The internet has democratized role models and success stories, enabling "pocket revolutions" where individuals can find inspiration from real people doing extraordinary things
🤔 The padding Modifier and the Spacer composable are both valid ways of adding space to a component. Surely, this must be a mistake. Why else would Jetpack Compose expose two ways of doing the same thing?
🧶 Have you wondered which lint rules ship by default with Compose? Do you even know where you can find this list? Learn this and more in this article!
⏳ Learn about a simple trick that will save you many engineering hours when working with Jetpack Compose!
♻️ Learn how you can debug recompositions of your Composable functions in Jetpack Compose
🍩 Learn how Jetpack Compose is able to be smart during recompositions!
Learn how you can use Jetpack Compose to build Android apps. Jetpack Compose is a rewrite of the Android UI toolkit
A Library to Organize, Discover, and Visualize Your Jetpack Compose Elements
An Android & Jetpack Compose newsletter read by engineers at all the top companies. Learn more
💌 In today's Context: Understanding when to use IDE agents vs CLI tools vs background agents — and why you'll probably use all three today
💌 In today's Dispatch: 👻 Snapchat has a surprise open-source hit 🔒 Bulletproof @Preview stripping 📖 Instagram's Compose playbook
Announcing Dispatch: Context, a new AI-focused series for Android engineers who refuse to be left behind
💌 In today's Dispatch: What I'm up to after Airbnb? 🤖 Sora Android in 28 days ⚡ More useful Compose stack traces 🧩 Bengaluru Meetup 🍻
💌 In today’s Dispatch: 🧾 Stop GPL surprises with Licensee ⚖️ ⚡ Gradle config speed rule 🤯 Compose effects order puzzle 🧠 AI vs git bisect
💌 In today’s Dispatch: Closing my Airbnb chapter ✨ Swift on Android 🤯 Timezones are complicated ⌛️ Touch me not Composables 👉
💌 In today’s Dispatch: 🔥 We meet the team behind Firebender 🏋🏻 Easiest one-line win of the year 🤏 Composable scoped View Model's and 🌈 performant way to modify background color
💌 In today’s Dispatch: 🛼 2D Scrolling 🎣 Prefetching Lists 🔎 Better Compose Debugging & 🏗️ Architecting Persistent UI Elements
💌 In today’s Dispatch: 💰 Selling Android apps 🛠️ Metro DI takes the crown, 🚨 AndroidView anti‐pattern exposed & 🔐 Telegram’s hash‐coded file bans
💌 In today’s Dispatch: 📸 Screenshot testing pro-tips ✨ Native shadows in Compose, 🤖 Kotlin powering AI SDKs, 📱 Android 16 adaptivity shift & ⚡️ 6× faster transforms
💌 In today's Dispatch: 🗑️ Google Play's 47 % app-purge drama, 🛠️ Amazon's shiny new KMP 'App Platform', 🎞️ ADB slow-mo frame-timing captures, 🎨 the theme bug that steals your Column's color, 🤣 'Soft Earnings' and 📊 @Preview-free code-coverage magic.
In today's issue, we talk about the 💸 strange hiring market and salaries, 💣 latest BOM drop, 📈 sorting UUIDs and obviously...AI 👂
In today's issue, we talk about 🧐 cheating during interviews, 💸 fully transparent salaries, 🪄 Google's big agentic bet, 🕵🏻♂️ committing a Kotlin crime and 🫨 jittery text animations
In today's issue, we talk about 🥶 chilly mobile hiring trends, the best Kotlin speaking LLMs 🗣️, another project in the Google graveyard 🪦, shadcn/ui for Android ✨ and learn how to trust time ⏰
In today's issue, we talk about 🐦🔥 Swift on Android, learn some mind-boggling facts about naming variables, discuss my recent chat with Kaushik Gopal, and explore how to provide the entire codebase to an LLM.
In today's issue, we talk to some Android experts about their hot-takes, predictions, wishes, and advice on how they expect the Android ecosystem to change—and how developers should prepare for that future.
🤯 some mind bending facts about SQLite, "Monotone Cubic Hermite Spline" and buttery smooth animations, a game to improve our Compose knowledge and why return types in Kotlin can be interesting 🤨
🔥 JetBrains' project to bring true hot reload to Compose, share a tip to improve screenshot test reliability using a new CompositionLocal, explore situations when onDispose doesn't get called, and bid farewell to Picasso 👨🏻🎨
💰 New & creative vesting schedules in tech, an amazing 10 year old engineer, a public service announcement and why onGloballyPositioned is feared
🦃 The Turkey that broke your code, advice from Saket Narayan, some personal wins, and strategy for safeguarding composables
😞 The decline of mobile dev, Storybook like tool from JetBrains, the badass developer of SQLite and meeting Annyce Davis
🔤 Learn about Zach Klippenstein, the Android connection to Wordle, creating presentations using Compose, running Android Studio on Android and @ComposableTarget
💪🏻 Power Asserts, XML in Compose, Compose UI previews on web & Airbnb's new screen architecture
🛜 "Server" Composabes, new graphicsLayer API, first-party visibility tracking, and debouncing state updates
🍨 Inside scoop from Google I/O, interesting updates from the event & a tip to using Gemini in Android Studio without compromising sensitive IP
🚀 Code structure optimizations, Android memes, New Shared Element Transition APIs, Debugging Compose State & More!