Topics
Click a topic to filter the posts below.
Steve Jobs: Product Taste and a Genuinely Contested Management Style
Steve Jobs: Product Taste and a Genuinely Contested Management Style Steve Jobs's influence on how technology products are designed and marketed is hard to
Ginni Rometty: Leading a Legacy Company Through Reinvention
Ginni Rometty: Leading a Legacy Company Through Reinvention Ginni Rometty became IBM's CEO in 2012 and spent much of her tenure steering the company
Lisa Su: Technical Credibility as a Leadership Foundation
Lisa Su: Technical Credibility as a Leadership Foundation When Lisa Su became AMD's CEO in 2014, the company was in genuinely dire financial condition,
Marc Benioff: Leadership Built Around Stakeholder Obligation
Marc Benioff: Leadership Built Around Stakeholder Obligation Marc Benioff has framed Salesforce's culture around a specific, formalized commitment since the company's earliest
Tim Cook: Succeeding a Visionary by Not Imitating Him
Tim Cook: Succeeding a Visionary by Not Imitating Him When Tim Cook became Apple's CEO in 2011, following Steve Jobs, the widely voiced concern
Sheryl Sandberg: Operational Rigor Meets Candid Mentorship
Sheryl Sandberg: Operational Rigor Meets Candid Mentorship Before Lean In made Sheryl Sandberg a widely recognized name beyond tech, she'd already built a reputation
Sundar Pichai: Leading Through Consensus, Not Charisma
Sundar Pichai: Leading Through Consensus, Not Charisma Sundar Pichai's rise through Google — from leading Chrome and Android to becoming CEO of Google and later
Jeff Bezos: Staying in "Day 1" on Purpose
Jeff Bezos: Staying in "Day 1" on Purpose Jeff Bezos's annual shareholder letters, written every year of his time as Amazon'
Lesson 30: Publishing Your App to the Google Play Store
Publishing Your App to the Google Play Store This is it — the last step. You've built a complete app across 29 lessons; let'
Lesson 29: Signing Your App and Creating a Release Build
Signing Your App and Creating a Release Build Every app installed on a real device must be cryptographically signed. Here's how to generate your
Lesson 28: App Icons, Themes, and Preparing for Release
App Icons, Themes, and Preparing for Release Your app works. Before publishing it, let's make it look like a finished product rather than a
Lesson 27: Testing Your App: Basics of Unit Testing
Testing Your App: Basics of Unit Testing You've built a real app across the last 26 lessons. Now let's make sure it
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
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.
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
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
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
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,
Lesson 20: Working with JSON and Data Models
Working with JSON and Data Models Our TaskApi from lesson 19 returns a list of TaskDto — let's define that properly and understand why it&
Lesson 19: Making Network Requests: Introduction to Retrofit
Making Network Requests: Introduction to Retrofit Time to fetch real data from an actual API instead of hardcoded lists. We'll use Retrofit, the standard
Lesson 18: Understanding App Architecture: MVVM for Beginners
Understanding App Architecture: MVVM for Beginners The pattern we've been building toward has a name: MVVM (Model-View-ViewModel). You don't need
Lesson 17: Introduction to ViewModel
Introduction to ViewModel A ViewModel holds UI-related data and survives configuration changes (like screen rotation) that would otherwise destroy and recreate your Activity, along with
Lesson 16: Passing Data Between Screens
Passing Data Between Screens In lesson 15 we passed a simple taskId: Int between screens. That's actually the correct pattern — here's why,
Lesson 15: Navigating Between Screens
Navigating Between Screens So far we've only had one screen. Real apps need several. Let's add Navigation Compose so tapping a task
Lesson 14: Lists in Compose: LazyColumn and LazyRow
Lists in Compose: LazyColumn and LazyRow Our task list app needs to show a list of tasks. A plain Column would technically work, but it renders
Lesson 13: Building a Simple Interactive Screen (Counter App)
Building a Simple Interactive Screen (Counter App) Let's combine everything from lessons 6–12 into one complete, working screen. @Composable fun CounterScreen() { var count
Lesson 12: State in Compose: remember and mutableStateOf
State in Compose: remember and mutableStateOf This is the most important lesson in the entire course. Everything from here forward depends on understanding this properly. The
Lesson 11: Buttons and Handling User Input
Buttons and Handling User Input Time to make something interactive. Compose gives you several built-in input components — let's cover the two you'
Lesson 10: Displaying Text and Images
Displaying Text and Images We've used Text a lot already. Let's cover it properly, then add images. Styling text Text( text = "
Lesson 9: Modifiers: Styling and Spacing in Compose
Modifiers: Styling and Spacing in Compose Every composable accepts a modifier parameter — it's how you control padding, size, background color, click behavior, and much
Lesson 8: Layouts in Compose: Column, Row, and Box
Layouts in Compose: Column, Row, and Box Almost every screen you'll ever build is some combination of three layout composables. Learn these well — they&
Lesson 7: Understanding Activities and the App Lifecycle
Understanding Activities and the App Lifecycle MainActivity extends ComponentActivity — but what actually is an Activity, and why does onCreate exist? What an Activity is An Activity
Lesson 6: Your First Composable Function
Your First Composable Function Time to write real code. Open MainActivity.kt and replace its contents with this: package com.example.tasklist import android.os.Bundle
Lesson 5: What Is Jetpack Compose, and Why Are We Using It?
What Is Jetpack Compose, and Why Are We Using It? Before we write code, it's worth understanding what Compose actually is and why this
Lesson 4: The Kotlin You Need Before Writing Compose
The Kotlin You Need Before Writing Compose Before we write our first real screen in the next lesson, let's make sure the Kotlin fundamentals
Lesson 3: Understanding the Anatomy of an Android Project
Understanding the Anatomy of an Android Project Your new project has a lot of generated files. You don't need to understand all of it
Lesson 2: Setting Up Android Studio and Your First Project
Setting Up Android Studio and Your First Project Everything in Android development happens inside Android Studio, Google's official IDE. Let's get it
Lesson 1: Welcome to Android Development
Welcome to Android Development This is lesson 1 of a 30-part course that takes you from a completely empty Android Studio project to a real
Reed Hastings: Freedom, Responsibility, and the "Keeper Test"
Reed Hastings: Freedom, Responsibility, and the "Keeper Test" Netflix's internal culture deck — later expanded into Reed Hastings's book No Rules
Andy Grove: Management as a Rigorous, Learnable Discipline
Andy Grove: Management as a Rigorous, Learnable Discipline Andy Grove led Intel through some of the most consequential decisions in the company's history, including
Satya Nadella: Rebuilding a Culture Around Growth Mindset
Satya Nadella: Rebuilding a Culture Around Growth Mindset When Satya Nadella became Microsoft's CEO in 2014, he inherited a company widely seen as internally
How Lean Startup Applies to Mobile Apps
Lean Startup Was Written for the Web. Mobile Breaks Some of Its Assumptions. Eric Ries's Lean Startup methodology is built around one core loop:
How to Structure Your Android App to Work With AI Agents
Building for Agents Is an Architecture Decision, Not a Feature Bolt-On If your app's business logic already lives buried inside ViewModels or, worse,
Implementing Micro Frontends in Android with Compose and Multi-Module Libraries
Translating Micro Frontends to Android Cam Jackson's Micro Frontends article on martinfowler.com defines the pattern as independently deliverable frontend applications composed into a
AI Agents and Android: The 2026 Landscape
Android Is Becoming an Intelligence System, Not Just an Operating System Google's own framing for 2026 is blunt about it: Android is shifting from
How to Be the Best Lead Mobile Developer
Lead Mobile Developer Is Its Own Discipline, Not "Senior Plus Meetings" Mobile leadership has a specific texture that generic engineering leadership advice misses: you&
Agile vs. Waterfall: A Full Guide to Scrum, Kanban, and XP
Agile vs. Waterfall — and What "Agile" Actually Means in Practice "We're Agile" is one of the most overused and under-
How to Go From Senior to Lead: A Practical Roadmap
The Jump Nobody Explains Well Most engineers get told, at some point, that going from Senior to Lead is "about more than just code."
Book Review: Cracking the Tech Career by Gayle Laakmann McDowell
Book Review: Cracking the Tech Career If you've prepped for a coding interview in the last decade, you've probably run into Gayle
Designing an Offline-First Android App: A System Design Case Study
Offline-First Isn't a Feature — It's an Architecture "Add offline support" is one of the most commonly underestimated asks in
Android System Design Interview Questions & Answers
Android System Design Interview: Questions & Answers Android system design interviews reward structured thinking more than a "correct" answer. The questions below are the
System Design Fundamentals for Android Engineers
System Design Isn't Just a Backend Discipline "System design" usually conjures load balancers and database sharding. But a production Android app is
Clean Architecture for Android: Structuring a Kotlin Codebase That Scales
Clean Architecture, Minus the Dogma "Clean Architecture" gets a bad reputation for producing 40 files to fetch a list of users. Used pragmatically, though,
Migrating Android Navigation: XML to Navigation Compose, Then Navigation 2 to Navigation 3
Two Migrations, One Destination Android navigation has gone through three real eras: XML + Fragments, Navigation Compose ("Nav 2"), and now Navigation 3 — a ground-
Animations in Jetpack Compose: From Basics to Shared Element Transitions
Compose Makes Good Animation the Path of Least Resistance Animation in the old View system usually meant ObjectAnimator, XML animator resources, or reaching for a library.
Kotlin Coroutines vs Dart's async/await: A Practical Comparison
Same Problem, Different Concurrency Models If you split your time between a Kotlin/KMM codebase and a Flutter one, it's easy to assume suspend
Building a Shared Networking Layer in KMM with Ktor
One Networking Layer, Both Platforms The single highest-leverage module to share in a KMM app is networking. It's pure logic, has no UI
State Management in Flutter: Provider vs Riverpod vs Bloc
There's No Single "Right" Answer — Only the Right Fit for Your Team Flutter deliberately doesn't ship an opinionated state management
Flutter Widget Lifecycle Explained: From Build to Dispose
Every Flutter Bug Report Traces Back to the Lifecycle Memory leaks, stale data, controllers that crash on hot reload — almost all of them come from misunderstanding
Flutter Performance Optimization: Finding and Fixing Jank
Jank Has Specific, Diagnosable Causes — Stop Guessing "The app feels laggy" is not a starting point for optimization — it's a symptom. Flutter
From Senior Engineer to Tech Lead: Skills Every Mobile Developer Needs
The Job Changes More Than the Title Suggests Being the best Kotlin or Dart developer on the team doesn't automatically make someone a good
Compose Multiplatform: Sharing UI Across Android, iOS, and Desktop
From Sharing Logic to Sharing UI Kotlin Multiplatform started as a way to share business logic while keeping native UIs. Compose Multiplatform (from JetBrains) pushes further:
Understanding State in Jetpack Compose: Remember, State Hoisting, and Beyond
State in Compose Isn't Magic — It's Just a Recomposition Trigger The hardest mental shift moving into Jetpack Compose isn't the
KMP vs Flutter: Choosing the Right Cross-Platform Strategy in 2026
KMP vs Flutter: Choosing the Right Cross-Platform Strategy Every mobile team eventually asks the same question: do we build twice, or do we share code?