Skip to main content

Conventional Commits Cheat Sheet 2026

· 6 min read
Serhii Hrekov
software engineer, creator, artist, programmer, projects founder

Conventional Commits is a lightweight convention on top of commit messages. It provides an easy set of rules for creating an explicit commit history, which makes it easier for automated tools to parse and for humans to understand (1).

How to enforce type hinting in Python: Static vs Runtime Strategies

· 5 min read
Serhii Hrekov
software engineer, creator, artist, programmer, projects founder

Python is famous for being a "consenting adults" language. By default, type hints (like name: str) are just polite suggestions. If you pass an integer into a function expecting a string, Python will happily execute it-and probably crash three lines later.

In 2026, relying on "polite suggestions" isn't enough for production-grade code. To actually enforce type hinting, you have to move beyond the built-in typing module and use external guardians.

How to Fix the 'ModuleNotFoundError: No module named pre_commit' Error

· 5 min read
Serhii Hrekov
software engineer, creator, artist, programmer, projects founder

Getting the ModuleNotFoundError: No module named 'pre_commit' error is a classic "Lost in Translation" moment between your terminal and your Python environment. You know you want to commit code, and Git knows it needs to run a hook, but the Python interpreter looking for the pre_commit package is coming up empty-handed.

Here is the straightforward guide to finding that missing module and getting your hooks back on track.

How to read and resolve Git merge conflicts without losing your mind?

· 6 min read
Serhii Hrekov
software engineer, creator, artist, programmer, projects founder

The dreaded CONFLICT (content): Merge conflict in file.txt. For many developers, seeing this message triggers an immediate spike in heart rate. It feels like you broke something.

Take a deep breath. You didn't break anything. A merge conflict is simply Git throwing its hands up and saying, "Hey, two people changed the exact same line of code, and I am not smart enough to guess which one is right. I need a human."

Here is how to read the Matrix, resolve the conflict, and get on with your day without losing your mind.

How to use `git worktree list` to see all your linked branches and folders

· 5 min read
Serhii Hrekov
software engineer, creator, artist, programmer, projects founder

If you've started using Git Worktrees to juggle multiple branches at once, your file system can quickly become a bit of a maze. You might forget which folder is tracking which feature, or worse, why Git won't let you delete a branch because it's "in use" somewhere you can't find.

git worktree list is your GPS. It tells you exactly how your main repository is linked to various folders on your machine.

How to write RLS Policies to ensure users can only edit their own profile data?

· 5 min read
Serhii Hrekov
software engineer, creator, artist, programmer, projects founder

In a traditional setup, you'd write a bunch of backend code to check if session.user.id === profile.id. In Supabase, you just tell the database the rules and let it act as the bouncer.

Row Level Security (RLS) is the engine that ensures your users can see a thousand profiles but can only click "Edit" on their own. Here is how to configure it correctly in 2026.

How to Use Check Constraints in Supabase for Data Integrity

· 5 min read
Serhii Hrekov
software engineer, creator, artist, programmer, projects founder

Data types are great, but they are often too "blunt" for real-world business logic. You might know a column is an integer, but you also need to ensure that it's never a negative number, or that a discount_price is always lower than the original_price.

In Supabase (which runs on PostgreSQL), the Check Constraint is your first line of defense for data integrity. It sits directly in the database engine, meaning no matter how a user tries to insert data (API, Dashboard, or CLI), the rule is impossible to bypass.

How to Merge Branches in Git (Without Creating "Spaghetti" History)

· 6 min read
Serhii Hrekov
software engineer, creator, artist, programmer, projects founder

Merging code used to be the most terrifying part of a developer's week. You would type git merge, hold your breath, and pray you didn't accidentally delete your coworker's entire feature.

Today, modern Git workflows (and platforms like GitHub and GitLab) have completely changed the game. The goal in 2026 isn't just to combine code; it's to maintain a clean, readable, and linear history so that when something breaks 6 months from now, you can actually figure out why.

Here is the modern playbook on how to merge your branches without creating a chaotic "spaghetti" history.

Git fetch vs git fetch origin: whats the difference?

· 5 min read
Serhii Hrekov
software engineer, creator, artist, programmer, projects founder

When you are typing away in your terminal, git fetch and git fetch origin probably feel exactly the same. In fact, if you only ever work on standard, single-team projects, you might go your entire career without realizing there is a difference at all.

However, Git is highly configurable. The moment you step into open-source development or complex team architectures, that little missing word (origin) suddenly completely changes how Git behaves.

Here is the candid truth about what Git is actually doing behind the scenes.

How to delete origin and local branch in Git

· 5 min read
Serhii Hrekov
software engineer, creator, artist, programmer, projects founder

Deleting a branch is a bit like taking out the trash: if you only do it in the kitchen (locally), the bin outside (remotely) stays full. To truly clean up your project, you need to perform a two-step operation.

Here is how to safely and effectively wipe a branch from existence both on your machine and on the server.

Looking for more content?
Hrekov Blog contains 271 articles. Browse the blog archive or Explore the full timeline.