Delivering Mobile apps

Notes from a lead mobile engineer.

I write about Kotlin, Jetpack Compose, Kotlin Multiplatform, and the occasional Flutter detour — plus what it actually takes to lead a mobile team without losing the plot. No marketing copy, just what worked (and what didn't).

@Composable
fun YoudroidCard(post: Post) {
ElevatedCard(
  shape = RoundedCornerShape(20.dp),
  // ship it, then write it up
) { PostContent(post) }
}
Recent posts

From the field

1 min read

Lesson 26: Background Work: Introduction to WorkManager

Background Work: Introduction to WorkManager Say we want to sync tasks with a server periodically, even when the app isn't open. That's

Android Beginners
Jul 28, 2026 Read →
1 min read

Lesson 25: Images and Media: Loading Images with Coil

Images and Media: Loading Images with Coil Back in lesson 10, we noted Compose's core library can't load images from a URL.

Android Beginners
Jul 28, 2026 Read →
1 min read

Lesson 24: Handling Permissions in Android

Handling Permissions in Android Some features — camera, precise location, notifications — require the user's explicit permission, requested at runtime rather than just declared upfront. Step

Android Beginners
Jul 28, 2026 Read →
1 min read

Lesson 23: Combining Room and ViewModel

Combining Room and ViewModel Let's make tasks genuinely persistent by connecting the Room database from lesson 22 to a ViewModel. The ViewModel, observing the

Android Beginners
Jul 28, 2026 Read →
1 min read

Lesson 22: Local Storage: Introduction to Room Database

Local Storage: Introduction to Room Database Right now, close the app and your tasks vanish — everything lives only in memory. Room gives you a real local

Android Beginners
Jul 28, 2026 Read →
1 min read

Lesson 21: Displaying Network Data in a List

Displaying Network Data in a List Let's finish the networking flow properly, with the three states every network-backed screen actually needs: loading, error,

Android Beginners
Jul 28, 2026 Read →
Youdroid
11+ yrs Mobile Developer
About the author

Hey, I'm Ahmad Najar, the person behind this blog.

I lead a mobile engineering team by day and write here by night (well — mostly on weekends, coffee in hand). This blog is where I dump the stuff that doesn't fit in a Slack thread: Compose patterns I keep reaching for, what actually happened when we moved shared logic to Kotlin Multiplatform, and the messier parts of managing engineers instead of just being one.

No sponsored posts, no growth-hacking. Just notes from someone who's still writing Kotlin most days and occasionally still gets paged at 2am.

Kotlin Jetpack Compose KMP Team Leadership