Docker Tutorial #1: What is Docker — Containers Explained Simply

You write an app. It works on your computer. You send it to a friend. It does not work on their computer. They have a different operating system, a different version of Python, or missing libraries. This is the classic “it works on my machine” problem. Docker solves it. What Is Docker? Docker is a tool that packages your application and everything it needs into a container. A container includes your code, libraries, system tools, and settings. It runs the same way everywhere — on your laptop, your colleague’s laptop, or a server in the cloud. ...

June 12, 2026 · 9 min

Git Tutorial #5: Advanced Git — Undo Mistakes and Power Features

In the previous tutorial, we learned to work with GitHub and set up CI/CD. Now it is time for the advanced tools. Every developer makes mistakes. You commit the wrong file. You break something and need to find out which commit caused it. You need to grab a single commit from another branch. Git has tools for all of this. In this tutorial, you will learn to undo mistakes, recover lost work, and use power features that save hours of debugging. ...

June 12, 2026 · 9 min

Git Tutorial #4: GitHub Workflow — Collaborating with Others

In the previous tutorial, we learned to merge and rebase branches. But everything happened on your local computer. Real projects involve multiple people working together. This is where GitHub comes in. GitHub is a platform that hosts Git repositories online. It lets you share code, review changes, and automate testing. In this tutorial, you will learn to push code to GitHub, create pull requests, and set up basic CI/CD with GitHub Actions. ...

June 12, 2026 · 9 min

Git Tutorial #3: Merging and Rebasing — Combining Work

In the previous tutorial, we learned to create branches and work on them. But branches are only useful if you can bring the work back together. Git gives you two ways to combine branches: merge and rebase. In this tutorial, you will learn both, understand the difference, and know when to use each one. We will also cover merge conflicts and git stash. What Is Merging? Merging takes two branches and combines them. You switch to the branch you want to update, then merge the other branch into it. ...

June 11, 2026 · 8 min

Git Tutorial #2: Branching — Work on Multiple Things at Once

In the previous tutorial, we learned to create a repository, stage files, and make commits. All our work happened on one branch — main. But what if you want to add a new feature without breaking your working code? What if two people need to work on different things at the same time? This is why branches exist. A branch is a separate line of development. You can make changes on a branch without affecting other branches. When you are done, you merge the changes back. ...

June 11, 2026 · 9 min

Git Tutorial #1: Git Basics — Your First Repository

Every developer uses Git. It does not matter if you write Python, JavaScript, Rust, or Kotlin. Git tracks your code changes, lets you go back to any previous version, and helps you work with other developers. In this tutorial, you will install Git, create your first repository, and make your first commit. By the end, you will understand how Git tracks changes. What Is Git? Git is a version control system. It saves snapshots of your project over time. Each snapshot is called a commit. ...

June 11, 2026 · 9 min

Ktor Tutorial #22: Full-Stack Kotlin — Ktor Backend + KMP Client

You have built a complete Ktor backend with authentication, database, WebSockets, Docker, and CI/CD. Now it is time to connect everything — a Kotlin backend and a Kotlin client sharing the same data models. In this final tutorial, you will create shared data models, build a Ktor Client that consumes your API, and see how a KMP mobile app connects to your backend. The Full-Stack Kotlin Vision Most full-stack projects look like this: ...

June 10, 2026 · 9 min

Ktor Tutorial #21: CI/CD and Deployment with GitHub Actions

You have a tested, Dockerized Ktor application. The next step is automating everything. When you push code, tests should run automatically. When tests pass on the main branch, the application should deploy automatically. In this tutorial, you will set up a GitHub Actions CI/CD pipeline. You will also add Prometheus metrics for production monitoring. What is CI/CD? CI (Continuous Integration) means running tests automatically when you push code. If tests fail, you know immediately — not after deploying to production. ...

June 10, 2026 · 9 min

Ktor Tutorial #20: Dockerizing Your Ktor Application

Your Ktor application runs on your machine. But “it works on my machine” is not a deployment strategy. Docker packages your application with everything it needs — the JVM, dependencies, and configuration — into a single image that runs anywhere. In this tutorial, you will create a Dockerfile for your Ktor application. You will use multi-stage builds for smaller images, configure Docker Compose with PostgreSQL, and tune the JVM for containers. ...

June 10, 2026 · 9 min

Ktor Tutorial #19: Testing Ktor Applications

A REST API without tests is a ticking time bomb. You change one route, and three others break. You add a new feature, and authentication stops working. In this tutorial, you will write tests for your Ktor application. You will test authentication flows, CRUD operations, WebSocket endpoints, and input validation — all using Ktor’s built-in test engine. Test Setup Ktor provides a test engine that runs your application in memory. No real HTTP server starts. This makes tests fast and isolated. ...

June 9, 2026 · 10 min