SQL Tutorial #7: PostgreSQL Setup — A Real Database for Real Projects

You have been practicing with SQLite. It is great for learning. But for real projects, you need a real database. PostgreSQL (often called “Postgres”) is the most popular open-source relational database. It is used by companies of all sizes, from startups to enterprises. In this article, you will set it up, connect to it, and learn its unique features. In the previous article, you learned about indexes and performance. Now you will put everything together with a production-ready database. ...

June 16, 2026 · 12 min

SQL Tutorial #6: Indexes and Performance — Making Queries Fast

Your queries work. But they are slow. A simple SELECT takes seconds instead of milliseconds. On a table with millions of rows, it could take minutes. The fix is almost always the same: add an index. In the previous article, you learned about window functions. Now you will learn how to make all your queries run fast. What Is an Index? Think of a book’s index at the back. If you want to find “window functions” in a 500-page book, you have two options: ...

June 16, 2026 · 10 min

SQL Tutorial #5: Window Functions — Analytics Without GROUP BY

GROUP BY is great for summaries. But it collapses your rows. You get one row per group. What if you want the summary and the individual rows at the same time? That is what window functions do. They calculate across rows without removing any of them. In the previous article, you learned about aggregation and subqueries. Window functions are the next level. What Are Window Functions? A window function performs a calculation across a set of rows that are related to the current row. This set of rows is called a window. ...

June 15, 2026 · 11 min

SQL Tutorial #4: Aggregation and Subqueries — Summarizing Data

You know how to get individual rows. But what if you need answers like “How many books did we sell?” or “What is the average book price?” That is where aggregation comes in. In the previous article, you learned how to combine tables with JOINs. Now you will learn how to summarize data across many rows into a single answer. Aggregate Functions Aggregate functions take many rows and return a single value. ...

June 15, 2026 · 10 min

Docker Tutorial #5: Deploying with Docker — From Local to Production

In the previous tutorials, we learned how to build images, run containers, use Compose, and manage volumes and networks. Everything so far happened on your local computer. Now it is time to deploy. In this tutorial, you will learn how to move your application from your laptop to a production server. The Deployment Workflow Deploying with Docker follows a simple pattern: Build the image on your computer (or in CI/CD) Push the image to a registry Pull the image on the server Run the container on the server Your Computer Registry Server ┌──────────┐ ┌──────────────┐ ┌──────────┐ │ Build │────►│ Docker Hub │────►│ Pull │ │ Image │push │ or ghcr.io │pull │ & Run │ └──────────┘ └──────────────┘ └──────────┘ Docker Hub — The Default Registry Docker Hub is the default place to store and share images. It is free for public images and offers one private repository on the free plan. ...

June 14, 2026 · 9 min

Docker Tutorial #4: Docker Volumes and Networking

In the previous tutorial, we used Docker Compose to run an app with a database. We briefly mentioned volumes and networking. Now let’s understand them properly. These two topics answer two important questions: Volumes: How do I keep data when a container is removed? Networking: How do containers talk to each other? Why Containers Lose Data Containers are designed to be temporary. You can create them, destroy them, and replace them. This is a feature, not a bug — it makes containers predictable and easy to deploy. ...

June 13, 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

Python Tutorial #17: Testing with pytest — Write Tests That Matter

In the previous tutorial, we learned about type hints. Now let’s learn about testing — how to write tests that catch bugs and give you confidence to change your code. Testing is one of the most valuable skills you can learn as a developer. It saves time in the long run, makes refactoring safe, and serves as living documentation. When you have tests, you can change code confidently — if the tests pass, you know nothing is broken. By the end of this tutorial, you will know how to write tests with pytest, use fixtures, parametrize tests, and mock external dependencies. ...

April 29, 2026 · 11 min

Python Tutorial #16: Type Hints Deep Dive — Writing Safer Python

In the previous tutorial, we learned about context managers. Now let’s take a deep dive into type hints — annotations that make your code safer, more readable, and easier to refactor. We have been using basic type hints since Tutorial #3. Now it is time to learn the advanced types: Optional, Union, Literal, Annotated, TypeAlias, Callable, and more. By the end of this tutorial, you will know how to annotate any Python code and use tools like mypy to catch bugs before runtime. ...

April 28, 2026 · 10 min