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

Journal

In Kotlin Multiplatform, a high percentage of shared code is not a success metric by itself. Moving every similar Android and iOS implementation into commonMain can introduce interfaces, expect/actual declarations, and extra layers that make the project harder to change. Before sharing code, the important questions are whether the business rule is genuinely the same, whether it can be tested independently of the platform, and whether the abstraction is actually simpler than two small platform implementations. Domain logic, networking, and data transformations are often strong candidates for sharing. Permissions, navigation, lifecycle behavior, and UI details can be clearer and easier to maintain when they stay platform-specific. The goal of KMP is not to maximize shared code; it is to reduce real duplication without making platform-specific changes more difficult.

View all journal entries
A developer compares a small code change with a test checklist at a bright, calm workspace.
1 day ago 59

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
1 week ago 93

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 143

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
3 weeks ago 184

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 161

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 197

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 218

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 304

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 403

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 973

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