Go Tutorial #2: Installing Go and Your First Program

In the previous tutorial, you learned what Go is and why it is a great language to learn. Now it is time to install Go and write your first program. This tutorial covers installation on all three major platforms. You will also set up VS Code and learn the basic Go commands. Try Go Online First Before installing anything, you can try Go in your browser. The Go Playground lets you write and run Go code online: ...

April 8, 2026 · 8 min

Go Tutorial #1: What is Go? Why Learn It in 2026?

Go is a programming language created by Google. It is simple, fast, and built for modern software. If you want to build web servers, CLI tools, or cloud infrastructure, Go is one of the best choices in 2026. In this tutorial, you will learn what Go is, where it is used, and why so many companies choose it. You will also see how Go compares to other popular languages. What is Go? Go (also called Golang) is an open-source programming language. Google created it in 2009. Robert Griesemer, Rob Pike, and Ken Thompson designed it. These are some of the most experienced engineers in the history of computing. ...

April 8, 2026 · 7 min

KMP Tutorial #20: Migrating an Existing Android App to KMP — Step-by-Step Guide

You have an existing Android app. It works. Users like it. Now the team wants an iOS version. Rewriting from scratch in Swift takes months. Kotlin Multiplatform lets you share the business logic and add iOS on top, without rewriting everything. In this final tutorial, we cover how to migrate an existing Android app to KMP. This is not a “rewrite from scratch” approach. It is a gradual migration — move one layer at a time, keep the Android app working at every step, and add iOS when the shared module is ready. ...

April 7, 2026 · 11 min

KMP Tutorial #19: KMP for Desktop and Web — Compose Multiplatform Beyond Mobile

So far, our notes app runs on Android and iOS. The shared module handles business logic, networking, and database. The UI is platform-specific: Compose on Android, SwiftUI on iOS. But KMP can go further. With Compose Multiplatform, you can build desktop apps for Windows, macOS, and Linux. With Kotlin/Wasm, you can run Kotlin in the browser. In this tutorial, we explore both options — what they look like, how to configure them, and when they make sense. ...

April 7, 2026 · 8 min

KMP Tutorial #18: Publishing Your KMP App — Android APK, iOS IPA, and CI/CD

Your notes app works on both Android and iOS. The data layer syncs, the UI layer has navigation and editing, and the shared ViewModel handles all business logic. Now it is time to publish. In this tutorial, you will learn how to build a release APK for Android, archive an IPA for iOS, set up GitHub Actions CI/CD, and prepare for the Play Store and App Store. What We Are Covering Android release build — signing, APK, AAB iOS release build — Xcode archive, IPA export GitHub Actions CI/CD — automated builds on every push Signing basics — keystores and provisioning profiles Store submission overview — Play Store and App Store requirements Android: Building a Release APK Debug vs Release So far, we have been building debug APKs with ./gradlew :composeApp:assembleDebug. Debug builds are not optimized and include debugging tools. For publishing, you need a release build. ...

April 6, 2026 · 9 min

KMP Tutorial #17: Building the UI Layer — Compose + SwiftUI with Shared ViewModel

In the previous tutorial, we built the shared data layer with Ktor, SQLDelight, and offline-first sync. The data layer works, but the UI is basic. You can only see a list of notes with a “+” button that creates placeholder notes. In this tutorial, we build a proper UI layer. You will add navigation between screens, a note editing screen with a color picker, pull-to-refresh sync, and loading and error states. All of this works on both Android (Compose) and iOS (SwiftUI). ...

April 6, 2026 · 14 min

KMP Tutorial #16: Building the Shared Data Layer — Offline-First with Ktor and SQLDelight

In the previous tutorial, we set up the Notes app architecture with a local database and shared ViewModels. Everything works offline. But real apps need to sync with a server. In this tutorial, we build the shared data layer — adding a Ktor API client, Data Transfer Objects (DTOs), an offline-first sync pattern, and a database migration. All of this code lives in commonMain and runs on both Android and iOS. ...

April 6, 2026 · 8 min

KMP Tutorial #15: Planning the Notes App — Architecture and Project Setup

Welcome to Part 4 of our KMP series — Build a Real App. In the next four tutorials, we build a complete cross-platform Notes app from scratch. This article covers the planning phase: architecture decisions, tech stack, project structure, and the initial setup that makes everything work on both Android and iOS. By the end of this tutorial, you will have a working project skeleton with shared business logic, a SQLDelight database, Koin dependency injection, and basic UI on both platforms. ...

April 5, 2026 · 11 min

KMP Tutorial #14: Error Handling and Logging in Kotlin Multiplatform

Your app will crash. The network will fail. The server will return unexpected data. The database will be empty when it should not be. The question is not if errors happen — it is how you handle them. Good error handling makes the difference between an app that shows a helpful message and an app that shows a blank screen. In KMP, you need error handling that works on every platform. No Android-specific exceptions, no iOS-specific patterns. Shared error handling for shared code. ...

April 5, 2026 · 8 min

KMP Tutorial #13: Testing in Kotlin Multiplatform

You have shared code running on Android and iOS. But how do you know it works correctly on both platforms? You test it. KMP has built-in support for testing. Tests written in commonTest run on every platform automatically. Write once, verify everywhere. Test Source Sets KMP projects have test source sets that mirror the main source sets: shared/src/ ├── commonMain/ → shared code ├── commonTest/ → tests for shared code (runs on all platforms) ├── androidMain/ → Android-specific code ├── androidTest/ → Android-specific tests ├── iosMain/ → iOS-specific code └── iosTest/ → iOS-specific tests Tests in commonTest are the most valuable — they verify your shared logic on every target platform with a single test file. ...

April 5, 2026 · 7 min