WorkManager in 2026: unique work, chaining, and testing background jobs on Android
A practical guide to WorkManager on Android — unique work policies, chaining, expedited work, and how to actually test a background job before it ships.
Android App Links in 2026: why your https:// links still open in the browser
Digital Asset Links verification, the assetlinks.json gotchas, and the adb commands that tell you why Android won't hand a link to your app.
The Android In-App Review API: asking for a rating without being annoying
A practical guide to Google's In-App Review API — how it actually works, where to trigger it, and why the usual 'rate us' popup is quietly hurting your Play Store rating.
Android app shortcuts and Quick Settings Tiles: logging water without opening the app
A practical guide to Android's dynamic ShortcutManager API and TileService — how to let a one-tap action skip the app entirely, with the pitfalls that trip most implementations.
Foreground service types on Android in 2026: picking the one your feature actually qualifies for
A practical guide to Android's foreground service type restrictions — dataSync, mediaPlayback, specialUse, shortService — and how to pick the right one without getting killed or rejected.
StateFlow vs SharedFlow in Jetpack Compose: modeling UI state without the replay bug
When to use StateFlow and when to use SharedFlow in a Compose ViewModel — and the one-time-event bug that shows up when you mix them up.
Type-Safe Navigation in Jetpack Compose: Routes as Data, Not Strings
How to replace string-based Compose Navigation routes with serializable Kotlin objects — type-safe arguments, nested graphs, and deep links that survive a refactor.
Budgeting with irregular income: a system that doesn't assume a steady paycheck
Most budgeting advice assumes the same amount lands every month. Here's a system built for freelance, commission, or seasonal income that actually holds up.
Setting Up Medication Reminders for a Family Member: A Caregiver's Guide
A practical guide to helping a parent or partner stay on top of their medications — what to set up, what to avoid, and how to check in without hovering.
How Long Should a Focus Session Be? A Framework Beyond the 25-Minute Default
The 25-minute Pomodoro is a starting point, not a rule. A practical framework for finding your real focus session length, by task type and energy.
The Android 16 KB page size migration: what actually breaks and how to check your APK
Google now requires Android apps to support 16 KB memory pages. Here's what that means in practice, why native libraries are the ones that break, and how to verify yours are safe.
Structured concurrency on Android in 2026: scopes, cancellation, and the leaks they prevent
A practical guide to Kotlin structured concurrency on Android — viewModelScope vs lifecycleScope, why cancellation propagates, and the coroutine leaks it quietly rules out.
Recomposition in Jetpack Compose: what actually triggers it and how I stopped guessing
A practical guide to Jetpack Compose recomposition in 2026 — type stability, unstable lambdas, LazyColumn keys, and reading the compiler's own metrics report.
No Accounts, No Passwords: Why My Apps Don't Have a Login Screen
Six apps, zero sign-up forms. Here's the actual reasoning behind skipping accounts entirely — what it costs, what it removes, and where the line is.
Testing a local-first Android app in 2026: Room, Flow, and Compose UI tests that catch real bugs
A practical testing strategy for local-first Android apps in 2026 — in-memory Room DAO tests, Turbine for Flow, and the few Compose UI tests actually worth writing.
Biometric authentication on Android in 2026: BiometricPrompt, the Keystore, and locking a local-first app
A practical guide to androidx.biometric on Android — BiometricPrompt, CryptoObject-backed keys, device credential fallback, and the mistakes that let a fingerprint check protect nothing.
Accessibility on Android in 2026: a TalkBack and Compose semantics checklist that ships
A practical Android accessibility checklist for 2026 — TalkBack, Compose semantics, touch targets, and the testing pass I run on every screen before release.
Health Connect on Android in 2026: reading and writing data without giving up local-first
A practical guide to Android's Health Connect API in 2026 — permissions, background reads, and why local-first apps should treat it as optional, not truth.
Edge-to-edge and predictive back on Android in 2026: what's mandatory now, and how not to break your UI
Edge-to-edge is now enforced on API 35+ and predictive back is the default gesture. A practical guide to Compose insets, WindowInsets, and PredictiveBackHandler.
How much water should you actually drink? A formula that beats '8 glasses a day'
The 8-glasses rule ignores your body weight, activity, and climate. Here's the body-weight formula clinicians actually use, with a worked example.
A calm phone setup: a beginner's roadmap
A practical, step-by-step roadmap to a calmer phone — notification triage, a smaller home screen, and batched check-ins that actually stick long-term.
Jetpack DataStore in 2026: migrating off SharedPreferences without losing a setting
A practical guide to moving from SharedPreferences to Jetpack DataStore on Android — the async pitfalls, the migration path that preserves existing values, and how to test it.
How to audit your subscriptions in 20 minutes (and actually cancel the ones you don't use)
A step-by-step subscription audit you can finish in one sitting — find every recurring charge, decide keep-or-cancel with one rule, and set a habit that keeps the list honest.
Baseline Profiles on Android: what actually moves your cold-start time in 2026
A practical guide to Android Baseline Profiles — generating one with Macrobenchmark, wiring it into Gradle, measuring the real gain, and the three other things that move cold start more.
A pantry inventory system that actually stops food from going to waste
Most food waste isn't bad planning — it's forgetting what's already there. A simple inventory and expiration-triage system that catches it before the bin does.
Building Mintly: keeping a focus timer accurate when Android kills the process
A running Pomodoro timer has a harder reliability problem than a one-shot reminder. Here's how Mintly survives Doze, process death, and screen-off drift with a foreground service and a wall-clock end time.
A hydration routine that doesn't rely on willpower
Most hydration advice boils down to 'drink more water' and hopes willpower fills the gap. Here's a routine built around cues and gentle nudges instead.
Android notification actions done right: marking a dose taken without opening the app
A practical guide to Android notification action buttons — PendingIntents, the trampoline restriction, goAsync(), and updating Room state safely.
The Pomodoro Technique that survives a bad day
The 25/5 timer is easy to start and easy to abandon. Here's a version of the Pomodoro Technique built around rituals, not streaks, so a rough day doesn't end the habit.
A budgeting system for people who've never stuck with one
Most budgets die in the first two weeks. A three-category system and a five-minute weekly check-in that survives a messy month, not just a perfect one.
Building a medication routine you'll actually stick to
A practical guide to medication adherence — why people miss doses, how reminder timing actually works, and how to build a routine that survives a bad week.
Subscription overload: why I'm done linking my bank to apps
Subscription-tracker apps usually solve the problem by asking for your bank login. In 2026 there's a calmer way — on-device bill scanning, no Plaid, no aggregator.
Reliable Android reminders in 2026: WorkManager, exact alarms, and the new battery rules
How to ship reminders on Android in 2026 that actually fire — WorkManager vs AlarmManager, SCHEDULE_EXACT_ALARM, POST_NOTIFICATIONS, and the OEM quirks that still bite.
How I ship Android apps as a solo developer in 2026
An actual end-to-end launch playbook for shipping a Kotlin + Compose Android app alone in 2026 — scope, build, Play Store listing, and the boring bits that decide whether you ever launch.