Ioannis Anifantakis
Software Engineer
Articles
2025
Android
📌 Android Context — Part 2: The Android Internals Deep Dive
Discover how Android Context underpins process creation, lifecycle, and system interactions for robust, efficient apps
2025
Android
📌 Using the Android Context and Manifest to Unveil the Android System Mechanics (2025 Edition)
How the Context and the Manifest connect your App with the Android Operating System, allowing for Inter-Process Communication and Resource Management/span>
2025
Android
Compose-Native CameraX Is Now Stable: End-to-End Guide for Jetpack Compose
2025
Android
Stop Event-Drilling in Jetpack Compose with Composition Locals
Escape Prop-Drilling and Event-Drilling without Losing Your Architecture.
2025
Dev Ops
Coordinated Polyrepo Pattern: Managing Multiple Git Repositories with Submodules
Learn how to coordinate multiple independent Git repositories using submodules under a centralized binder repository.
2025
Android
Android’s New 16 KB Page Size: What It Is, Why It Matters, and What You Should Do
Android moves to a 16 KB page size. See why it matters for performance and how to prepare your app for the Nov. 1, 2025 deadline.
2025
Android
Side-Effects in Jetpack Compose Made Simple
Jetpack Compose side-effects guide: lifecycle timing, keys, coroutines, best practices, ViewModel-first patterns.
2025
Kotlin
Kotlin Flows Explained
A guide to understanding Kotlin Flows. Learn Hot vs. Cold Flows, StateFlow, coroutines, and how to write clean, modern, async code.
2025
Kotlin
The Holder Pattern in Kotlin for Android Developers
Master the Holder pattern in Android/Kotlin: flexible alternative to Kotlin object singletons, cleaner DI, shared StateFlow & token control.
2025
Kotlin Multiplatform
“Expect Actual” Mechanism in Kotlin Multiplatform Explained
In this article, I demystify the expect/actual mechanism, compare it to interfaces, and provide clear, practical examples to help you make the most of it. Whether you're new to KMP or refining your skills, this guide will give you a solid understanding of one of its core concepts.
2025
Kotlin
Decorator Pattern in Kotlin — Embracing Open/Closed Principle
Write cleaner, reusable Kotlin code by mastering the Decorator Pattern and embracing the Open/Closed Principle.
2025
Kotlin
Builder & Factory patterns in Kotlin
Builder Pattern and Factory Pattern in Kotlin, Android. Learn how Builder and Factory work for Kotlin, but also for Java and other OO Languages.
2025
Android
Imperative vs Declarative in Android — The Real Difference
The concise guide to "active" and "passive" UI mindset. The evolution of mobile UI for both iOS and Android (with focus on Android)
2025
Android & KMP
How to Locally Test Your Android or KMP Library Using Maven Local
Boost Android/KMP library testing! Learn Maven Local & Composite Builds for fast local iteration & validation before publishing.
2025
Android & KMP
Process Death Handling via Automatic State Persistence (Android & KMP)
Reanimator: Automatic StateFlow saving for Android & KMP ViewModels. Simplifies process death & MVI transient state handling.
2025
Kotlin
runCatching vs. try-catch in Kotlin: A Comprehensive Error Handling Comparison
Discover how Kotlin's runCatching transforms error handling with cleaner code, chaining capabilities, and functional programming principles.
2025
Kotlin Multiplatform
Integrating Native Swift Code in a Kotlin Compose Multiplatform App
Learn how to seamlessly integrate native Swift code into your Kotlin Compose Multiplatform apps with a clear, step-by-step guide!
2025
Kotlin/Android
Kotlin inline reified to Solve Type Erasure, and a Practical Guide on noinline, crossinline, and More
Master how Kotlin inline reified deals with Type Erasure, and explore noinline and crossinline modifiers.
2025
Kotlin/Android
Kotlin Guards Explained: Boost Code Clarity with when Statements in Kotlin 2.1
Master Kotlin Guards in when statements for cleaner, expressive code. Kotlin 2.1.0 features, Kotlin Guard conditions, and fail-fast logic.
2025
Programming
Interfaces vs Abstract Classes in Java and Kotlin
Learn the key differences between Interfaces and Abstract Classes in Java and Kotlin with practical examples and clear explanations.
2025
Android
Android Clean Architecture: Implementing Use Cases, Managers, and Multi-Provider Systems
SOLID...ify and transform your Android codebase! Master Clean Architecture with practical Use Cases, smart Managers & bulletproof multi-provider systems.
2025
Android
Safeguarding Critical Operations: Block Accidental Navigation in Jetpack Compose
Learn how to block accidental navigation during critical tasks with a custom loading indicator in Jetpack Compose for robust Android apps.
2025
Programming
SOLID Principles — Deep Dive
A Deep Dive on SOLID Principles published in ITNEXT. The only SOLID read you will ever need:
2025
Android & iOS
Garbage Collection (GC) vs Automatic Reference Counting (ARC): Memory Management Showdown
Compare Android's Garbage Collection vs. iOS's ARC for optimal memory management in mobile app development. Discover key differences.
2025
Android
Faking Network Responses with MockK (Featuring Ktor)
A practical guide to mocking network responses in Kotlin. Make your tests faster and more reliable using MockK, with real-world examples
2025
Android
Coroutine Suspension Mechanics: The Finite State Machine within
Let’s gaze inside a Kotlin Coroutine structure and see the Finite State Machine (FSM) inside it. Suspension mechanics revealed.
2025
Android
Composition Locals in Jetpack Compose: A Beginner-to-Advanced Guide
Did you ever need to pass irrelevant parameters through multiple composable functions just to forward a parameter down the composable tree somewhere? CompositionLocals provide the solution to that problem.
2025
Android
Mastering Kotlin Coroutine Channels in Android: From Basics to Advanced Patterns
Learn coroutine communication patterns, from basic producer-consumer to advanced fan-in/fan-out scenarios, to ui events in Android development.
2025
Android
The One Script to Rule Them All: Android Project Cleanup Made Easy
A comprehensive script that automates project cleanup, handling both single and multi-module projects with support for macOS, Linux, and Windows.
2024
Android
The Evolution of Android Architecture Patterns: From UI-Centric to MVC to MVP to MVVM to MVI
From God Activities to MVI: A journey through Android's architectural evolution, showing how each pattern solved its predecessor's limitations.
2024
Android
Surviving Process Death Without Permanent Storage: Ephemeral Persistence for Both StateHolders and ViewModels
If the system kills your app in the background and later re-creates it, you often need to restore some temporary data (ephemeral state) without storing it permanently on disk. In this article, we’ll show two approaches:
2024
Android
Mastering Global State Management in Android with Jetpack Compose
As Android developers, we often face the challenge of managing state across our applications. Whether it’s user authentication, theme preferences, or app-wide settings, having a reliable way to handle global state is crucial.
2024
Android
How to Locally Test Your Android or KMM Library Using Maven Local
You build a library and want to test it locally with an actual project before publishing online? Check out my new guide to learn how to publish your Android/Kotlin/Java library to a local Maven repository on your own machine for instant testing with sample apps.
2024
Android
Handling One-Time Events in Jetpack Compose: Channels vs. SharedFlow
Struggling to handle one-time events in Jetpack Compose? Discover why Channels beat SharedFlow for ephemeral triggers, and how to ensure your UI reacts just once, every time.Â
2024
Android
Bridging the Gap Between Jetpack Compose State and StateFlow for Reactive UI
Check out my short guide on how to seamlessly bring StateFlow’s thread-safe updates into Compose’s classic State handling. Learn how a simple extension function can give you the best of both worlds—powerful concurrency features and the elegance of delegated state in your Compose UI!
2024
AndroidSecureAndroidPersist — Android Persistence and Encryption Library
The Android Secure Persist Library is a powerful Kotlin library designed to provide secure and efficient storage of preferences and raw data encryption for Android applications, all with zero configuration.
2024
AndroidJetpack Compose Navigation: Embracing Type Safety and Simplifying Parcelable Handling with NavHelper library
NavHelper library to streamline type-safe Parcelable data passing in Jetpack Compose's new Navigation, showcasing the power and flexibility of the type safety introduced at Google I/O '24.Â
2021
AndroidJetpack Compose — Building a RecyclerView with StickyHeader
Create full-featured RecyclerView using LazyColumn with minimal code and effort thanks to Jetpack Compose!
2021
AndroidThe Android Context, Manifest, and the Android System
What is Android Context? What is the Android Manifest? How do they relate to the Android System?
2020
Deep LearningDeep RL: DQN — Regression or Classification?
Providing basic understanding behind a regression approach to a classification problem in DQNs action values.
2019
Reinforcement Learning
Reinforcement Learning — Basic Understanding
Understanding the basic concepts behind Reinforcement Learning using value-based methods.
2019
Deep LearningIntroduction to Deep Learning Theory (video-tutorial)
An easy to absorb introduction to Machine Learning and Neural Networks with YouTube video content
2019
AndroidAndroid webview scroll and facebook comments problem when Admob loads advert
There is bizarre behavior in Android when you combine a “WebView” together with “AdMob”. Read my solution...
2019
WebWhat is AMP — Accelerated Mobile Pages
So what is AMP? How will it change our website? Is it any useful? What is the architecture behind it? How can I build an AMP website?
2019
JavaWhat is a static variable in Java
All Java newbies at some point looked for some clear and direct explanation over Static variables. Here it is!
* Several articles are included in certain publications:
Droidcon’s publications ProAndroidDev for Android Specific articles.
ITNEXT for various software engineering content
Level-Up Coding for various software engineering content
Analytics Vidhya for Deep Learning articles
