Loading...
Loading...
Loading...

Journal

A screen that survives rotation is not necessarily safe from process death. A ViewModel keeps state through configuration changes, but Android can kill a background process to reclaim memory. When the user returns, a new ViewModel is created, and any form values or edits stored only in the old one are gone. Testing rotation alone can therefore hide an important state-restoration failure. Use the storage that matches the data: rememberSaveable for small UI state, SavedStateHandle for small values needed to rebuild a screen, and a database, DataStore, or backend for important or lasting data. For an edit screen, saving an orderId and loading the latest order is often better than saving the full object in SavedStateHandle. Test the real scenario by backgrounding the app, killing its process, and reopening it from Recent Apps to confirm that the screen can rebuild itself.

View all journal entries
A developer compares a small code change with a test checklist at a bright, calm workspace.
5 days ago 87

How to Review AI-Generated Code Without Slowing Down

A practical workflow for reviewing AI-generated code: smaller diffs, explicit assumptions,...

mohamad-abuzaid
Mohamad Abuzaid
0
Four equal software architecture paths organizing UI input, state, and side effects without implying that one pattern replaces another
2 weeks ago 113

MVC, MVP, MVVM, and MVI: They Didn’t Replace Each Other. They Evolved...

Compare MVC, MVP, MVVM, and MVI by the problems they solve, the costs they add, and the UI...

mohamad-abuzaid
Mohamad Abuzaid
0
AI agent connected to a live browser with separate paths for console, network, screenshot, and performance evidence
2 weeks ago 153

Let Your AI Agent Debug the Browser Instead of Guessing: Chrome DevToo...

Give your AI agent controlled Chrome access to inspect console errors, network requests, r...

mohamad-abuzaid
Mohamad Abuzaid
0
Developer examining a software change through a loop of planning, challenge, implementation, verification, and reflection
4 weeks ago 202

Use AI to Become a Better Software Developer, Not Just a Faster One

Use a Think, Challenge, Build, Verify, Reflect loop to strengthen engineering judgment wit...

mohamad-abuzaid
Mohamad Abuzaid
0
Small illuminated software changes forming a stable bridge across database, API, service, and interface layers
1 month ago 170

Small Pull Requests Are a Technical Strategy, Not a Team Preference

Learn how small pull requests improve review, feedback, rollback safety, and architecture—...

mohamad-abuzaid
Mohamad Abuzaid
0
Layered engineering artifacts and branching decision paths representing constraints, trade-offs, implementation, and evidence in a developer portfolio
1 month ago 231

Your Portfolio Should Explain Decisions, Not Display Screenshots

Build a developer portfolio that proves engineering judgment through constraints, trade-of...

mohamad-abuzaid
Mohamad Abuzaid
0
Android and iOS task apps reading from a shared local database while Kotlin Multiplatform synchronizes changes with a remote server
1 month ago 253

Offline-First Kotlin Multiplatform with Room, Ktor, and Shared ViewMod...

Build an offline-first Android and iOS task feature with Room, Ktor, queued sync, a shared...

mohamad-abuzaid
Mohamad Abuzaid
0
Stateless MCP request routed through a load balancer to interchangeable server instances
1 month ago 340

MCP Went Stateless: What Changes for Agent Tooling

What MCP 2026's stateless core, explicit state handles, MRTR, caching, Tasks, and OAuth ch...

mohamad-abuzaid
Mohamad Abuzaid
0
Claude Code and Android CLI build-test workflow
1 month ago 469

Claude Code Meets Android CLI: Build, Run, and Test

Use Claude Code with Android CLI to create, build, run, inspect, and test a Jetpack Compos...

mohamad-abuzaid
Mohamad Abuzaid
0
Claude Code
5 months ago 994

Claude Code is not a Chatbot… It is an Execution Engine

Many people use Claude Code as a chatbot… they write a prompt, wait for the reply, modify...

mohamad-abuzaid
Mohamad Abuzaid
0
Jetpack Compose Animation
2 years ago 7.1K

Jetpack Compose Animation

Jetpack Compose simplifies animation by integrating it directly into the component lifecyc...

mohamad-abuzaid
Mohamad Abuzaid
0
Test Driven Development
2 years ago 2.1K

Test Driven Development

An overview of TDD, its philosophy and core principles. How it reverses the traditional de...

mohamad-abuzaid
Mohamad Abuzaid
0
Annotations in Kotlin
2 years ago 3.7K

How to create custom annotations in Kotlin

Annotations in Kotlin can significantly enhance the readability, structure, and maintainab...

mohamad-abuzaid
Mohamad Abuzaid
0
Effective UI/UX Design in Android Apps (3/3)
2 years ago 3.1K

Effective UI/UX Design in Android Apps (3/3)

Explore the importance of user interface and user experience design in Android app develop...

mohamad-abuzaid
Mohamad Abuzaid
0
Effective UI/UX Design in Android Apps (2/3)
2 years ago 3.3K

Effective UI/UX Design in Android Apps (2/3)

Explore the importance of user interface and user experience design in Android app develop...

mohamad-abuzaid
Mohamad Abuzaid
1
Effective UI/UX Design in Android Apps (1/3)
2 years ago 3.0K

Effective UI/UX Design in Android Apps (1/3)

Explore the importance of user interface and user experience design in Android app develop...

mohamad-abuzaid
Mohamad Abuzaid
0
Kotlin's Interoperability with Java (3/3)
2 years ago 1.9K

Kotlin's Interoperability with Java (3/3)

Explore how Kotlin works seamlessly with Java. For Java developers looking to transition t...

mohamad-abuzaid
Mohamad Abuzaid
0
Kotlin's Interoperability with Java (2/3)
2 years ago 2.0K

Kotlin's Interoperability with Java (2/3)

Explore how Kotlin works seamlessly with Java. For Java developers looking to transition t...

mohamad-abuzaid
Mohamad Abuzaid
0
Kotlin's Interoperability with Java (1/3)
2 years ago 2.0K

Kotlin's Interoperability with Java (1/3)

Explore how Kotlin works seamlessly with Java. For Java developers looking to transition t...

mohamad-abuzaid
Mohamad Abuzaid
0
Security in Android App Development (3/3)
2 years ago 2.1K

Security in Android App Development (3/3)

Various security challenges in Android development and how to mitigate them.

mohamad-abuzaid
Mohamad Abuzaid
0
Security in Android App Development (2/3)
2 years ago 1.9K

Security in Android App Development (2/3)

Various security challenges in Android development and how to mitigate them.

mohamad-abuzaid
Mohamad Abuzaid
0
Security in Android App Development (1/3)
2 years ago 2.0K

Security in Android App Development (1/3)

Various security challenges in Android development and how to mitigate them.

mohamad-abuzaid
Mohamad Abuzaid
0
Functional Programming 3
2 years ago 2.0K

Introduction to Kotlin Functional Programming (3/3)

Continue with the third and final part of our talk about Functional programming in Kotlin

mohamad-abuzaid
Mohamad Abuzaid
0
Functional Programming 2
2 years ago 2.3K

Introduction to Kotlin Functional Programming (2/3)

Continue with the second part of our talk about Functional programming in Kotlin

mohamad-abuzaid
Mohamad Abuzaid
0
Functional Programming 1
2 years ago 2.4K

Introduction to Kotlin Functional Programming (1/3)

Functional programming in Kotlin is all about treating functions as first-class citizens a...

mohamad-abuzaid
Mohamad Abuzaid
0
OkHttp Interceptors
3 years ago 2.5K

OkHttp Interceptors

Interceptors in Retrofit's OkHttp Client. When and How to use them.

mohamad-abuzaid
Mohamad Abuzaid
0
3 years ago 2.4K

Kotlin Delegated Properties

What are delegated properties? What are their benefits? How do we use them?

mohamad-abuzaid
Mohamad Abuzaid
1
3 years ago 3.1K

Android Memory Leaks

What is memory leak? What causes it? How to avoid it?

mohamad-abuzaid
Mohamad Abuzaid
1
3 years ago 2.6K

Kotlin Coroutines (3/3)

Our final article in our series. More Coroutines components.

mohamad-abuzaid
Mohamad Abuzaid
1
3 years ago 2.7K

Kotlin Coroutines (2/3)

Continue our Coroutines talk. Let's discuss Coroutines Context.

mohamad-abuzaid
Mohamad Abuzaid
1