Writing

Join the

Newsletter

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.

Articles

Long-form pieces on engineering, leadership, and life.

2026

Practical techniques for controlling AI coding costs at scale through efficient models, dynamic routing, developer visibility, budgets, and reduced token overhead.

Aug 7
AIDeveloper ProductivityEngineering Leadership

How we built an internal benchmark from real engineering tasks to compare coding-agent quality, cost, models, and harnesses on the Databricks codebase.

Jul 8
AIDeveloper ProductivityEngineering

2025

I recently joined my friend Kaushik on the Fragmented Podcast to discuss the future of Android Development.

Mar 7
Life UpdateAndroid

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?

Feb 18
ThoughtsMental ModelsEngineering Systems

The internet has democratized role models and success stories, enabling "pocket revolutions" where individuals can find inspiration from real people doing extraordinary things

Feb 12
Thoughts

2023

πŸ€” 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?

Feb 6
UI

2022

🧢 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!

Jun 24
LintingTooling

⏳ Learn about a simple trick that will save you many engineering hours when working with Jetpack Compose!

May 2
ProductivityAndroid StudioCode Complete

♻️ Learn how you can debug recompositions of your Composable functions in Jetpack Compose

Apr 16
DebuggingRecompositions

2021

🍩 Learn how Jetpack Compose is able to be smart during recompositions!

Sep 8
OptimizationsState Management

Learn how you can use Jetpack Compose to build Android apps. Jetpack Compose is a rewrite of the Android UI toolkit

Jun 8
IntroJetpack Compose

2020

A Library to Organize, Discover, and Visualize Your Jetpack Compose Elements

Dec 21
UI InfrastructureToolingDesign Systems

Dispatch

An Android & Jetpack Compose newsletter read by engineers at all the top companies. Learn more

2026

πŸ’Œ In today's Dispatch: Android agents arrive πŸ› οΈ Compose 1.11 stacks up 🎨 KMP gets cleaner 🧱 Pulsar brings the buzz πŸͺ„

May 16

πŸ’Œ In today's Context: The ceiling of AI delegation isn't your prompting skill. It's your tests, linters, and CI pipeline.

Apr 11

πŸ’Œ In today's Dispatch: πŸ’£ Compose BOM Drama πŸš€ Android Bench 🎭 Maestro Flaky Tests 🧰 Kotlin LSP Breakout

Mar 28

πŸ’Œ 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

Feb 1

πŸ’Œ In today's Dispatch: πŸ‘» Snapchat has a surprise open-source hit πŸ”’ Bulletproof @Preview stripping πŸ“– Instagram's Compose playbook

Jan 27

Announcing Dispatch: Context, a new AI-focused series for Android engineers who refuse to be left behind

Jan 14

2025

πŸ’Œ In today's Dispatch: What I'm up to after Airbnb? πŸ€– Sora Android in 28 days ⚑ More useful Compose stack traces 🧩 Bengaluru Meetup 🍻

Dec 24

πŸ’Œ In today’s Dispatch: 🧾 Stop GPL surprises with Licensee βš–οΈ ⚑ Gradle config speed rule 🀯 Compose effects order puzzle 🧠 AI vs git bisect

Nov 14

πŸ’Œ In today’s Dispatch: Closing my Airbnb chapter ✨ Swift on Android 🀯 Timezones are complicated βŒ›οΈ Touch me not Composables πŸ‘‰

Oct 30

πŸ’Œ 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

Sep 12

πŸ’Œ In today’s Dispatch: πŸ›Ό 2D Scrolling 🎣 Prefetching Lists πŸ”Ž Better Compose Debugging & πŸ—οΈ Architecting Persistent UI Elements

Aug 24

πŸ’Œ In today’s Dispatch: πŸ’° Selling Android apps πŸ› οΈ Metro DI takes the crown, 🚨 AndroidView anti‐pattern exposed & πŸ” Telegram’s hash‐coded file bans

Jul 22

πŸ’Œ In today’s Dispatch: πŸ“Έ Screenshot testing pro-tips ✨ Native shadows in Compose, πŸ€– Kotlin powering AI SDKs, πŸ“± Android 16 adaptivity shift & ⚑️ 6Γ— faster transforms

Jun 22

πŸ’Œ 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.

May 18

In today's issue, we talk about the πŸ’Έ strange hiring market and salaries, πŸ’£ latest BOM drop, πŸ“ˆ sorting UUIDs and obviously...AI πŸ‘‚

May 6

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

Apr 19

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 ⏰

Apr 3

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.

Mar 12

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.

Feb 6

🀯 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 🀨

Jan 18

2024

πŸ”₯ 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 πŸ‘¨πŸ»β€πŸŽ¨

Nov 30

πŸ’° New & creative vesting schedules in tech, an amazing 10 year old engineer, a public service announcement and why onGloballyPositioned is feared

Oct 30

πŸ¦ƒ The Turkey that broke your code, advice from Saket Narayan, some personal wins, and strategy for safeguarding composables

Sep 9

😞 The decline of mobile dev, Storybook like tool from JetBrains, the badass developer of SQLite and meeting Annyce Davis

Aug 6

πŸ”€ Learn about Zach Klippenstein, the Android connection to Wordle, creating presentations using Compose, running Android Studio on Android and @ComposableTarget

Jul 20

πŸ’ͺ🏻 Power Asserts, XML in Compose, Compose UI previews on web & Airbnb's new screen architecture

Jun 26

πŸ›œ "Server" Composabes, new graphicsLayer API, first-party visibility tracking, and debouncing state updates

Jun 3

🍨 Inside scoop from Google I/O, interesting updates from the event & a tip to using Gemini in Android Studio without compromising sensitive IP

May 20

πŸš€ Code structure optimizations, Android memes, New Shared Element Transition APIs, Debugging Compose State & More!

May 9