Boot.dev Blog
Git Worktrees: Work on Multiple Branches at Once
by ThePrimeagen - Ex-Netflix engineer, NeoVim ricer, and Git rebaser
Git normally only lets you have one branch checked out at a time. Want to review a coworker's PR while you're halfway through a refactor? You're either stashing, committing WIP garbage, or cloning the whole repo again. Git worktrees fix this: they let you check out multiple branches at once, each in its own directory, all connected to the same repository.
Git Squash Commits: How to Combine Commits Into One
by ThePrimeagen - Ex-Netflix engineer, NeoVim ricer, and Git rebaser
Every dev team will have different standards and opinions on how to use Git. Some teams require all pull requests to contain a single commit, while others prefer to see a series of small, focused commits. If you join a team that prefers a single commit, you will need to know how to "squash" your commits together. To be fair, even if you don't need a single commit, squashing is useful to keep your commit history clean.
Git Fork: How to Fork a Repo and Open Your First PR
by ThePrimeagen - Ex-Netflix engineer, NeoVim ricer, and Git rebaser
A fork is a copy of a repository. Forking a repository allows you to freely experiment with changes without affecting the original project. It's also the standard way to contribute to open source: you don't need write access to someone's repo to fork it, change it, and offer your changes back.
Git Cherry-Pick: Copy One Commit to Another Branch
by ThePrimeagen - Ex-Netflix engineer, NeoVim ricer, and Git rebaser
There comes a time in every developer's life when you want to yoink a commit from a branch, but you don't want to merge or rebase because you don't want all the commits. git cherry-pick solves this: it takes a single commit from anywhere in your repo and applies it to your current branch, no full merge required.
Git Revert: Undo Commits Without Rewriting History
by ThePrimeagen - Ex-Netflix engineer, NeoVim ricer, and Git rebaser
Sometimes you need to undo a commit that's already on a shared branch. You could reach for git reset, but resetting rewrites history, and rewriting shared history is a great way to ruin your coworkers' day. git revert undoes a commit the polite way: by adding a new commit that reverses the old one. Nothing gets deleted, history stays intact, and nobody wants you dead.
Git Reflog: Recover Deleted Branches and Lost Commits
by ThePrimeagen - Ex-Netflix engineer, NeoVim ricer, and Git rebaser
Deleted a branch with commits on it? Botched a rebase? Reset something you shouldn't have? The git reflog command is Git's last resort: it records every move your references make, which means "lost" commits are almost never actually lost. In this article you'll learn how to read the reflog, and then use it to recover a deleted branch, first the hard way with plumbing commands, then the easy way with a single merge.
Git Tags: How to Version and Release Your Code Properly
by ThePrimeagen - Ex-Netflix engineer, NeoVim ricer, and Git rebaser
Branches move. Every time you commit, your branch pointer slides forward to the newest commit. But sometimes you want the opposite: a name that's permanently stuck to one specific commit, usually because that commit is a release you'll want to find again later. That's what git tags are for. In this post you'll learn how to create, list, and push tags, and how semantic versioning gives your tags names that actually mean something.
Git Rebase Conflicts: How to Resolve Them Without Fear
by ThePrimeagen - Ex-Netflix engineer, NeoVim ricer, and Git rebaser
Full disclosure: a lot of git rebase's bad rep comes from conflicts! Fear not. It's nothing you can't handle with just a smidge of practice.
Git Merge Conflicts: What They Are and How to Fix Them
by ThePrimeagen - Ex-Netflix engineer, NeoVim ricer, and Git rebaser
Working with Git is a dream when all of the developers on a project are committing changes to different lines of code. Things get a little hairy when changes to the same lines are made at the same time. That's when Git throws up its hands, declares a merge conflict, and makes you sort it out. In this post you'll learn what merge conflicts actually are, how to read those nasty <<<<<<< conflict markers, and how to resolve conflicts both by hand and with Git's built-in tools.
What Is Functional Programming in Python? A Complete Guide
by Boot.dev Team - Programming course authors and video producers
Functional programming is a style of programming where we compose functions instead of mutating state (updating the values of variables). While Python is best known for object-oriented programming, it also fully supports functional concepts like first-class functions, immutability, and pure functions. Learning to think functionally is one of the fastest ways to write cleaner, more maintainable code, no matter which language you end up working in.
Closures in Python: How They Capture State
by Boot.dev Team - Programming course authors and video producers
A [closure]() is a function that references variables from outside its own function body. The function definition and its environment are bundled together into a single entity, so it keeps track of some values from the place where it was defined, no matter where it's executed later on.
Recursion in Python: A Beginner's Guide
by Boot.dev Team - Programming course authors and video producers
[Recursion]() is a famously tricky concept to grasp, but it's honestly quite simple, so don't let it intimidate you. A recursive function is just a function that calls itself.
Higher-Order Functions in Python
by Boot.dev Team - Programming course authors and video producers
In Python, functions are just values, like strings, integers, or objects. A programming language "supports first-class functions" when functions are treated like any other variable. That means functions can be passed as arguments to other functions, can be returned by other functions, and can be assigned to variables. Functions that accept other functions as arguments or return functions are called higher-order functions, and they power built-ins like map(), filter(), and reduce().
Currying in Python: Transform Multi-Arg Functions
by Boot.dev Team - Programming course authors and video producers
Function currying is a specific kind of function transformation, where we translate a single function that accepts multiple arguments into multiple functions that each accept a single argument. It relies on higher-order functions.
Pure Functions in Python: A Complete Beginner Guide
by Boot.dev Team - Programming course authors and video producers
If you take nothing else away from this article, please take this: pure functions are fantastic. A pure function has exactly two properties: it always returns the same value given the same arguments (it's deterministic), and running it causes no [side effects](). In short: pure functions don't do anything with anything that exists outside of their scope.
Sum Types in Python: Using Enums, Unions, and Match
by Boot.dev Team - Programming course authors and video producers
Sum types are a staple of functional programming, but Python doesn't really support them. We have to use a workaround and invent our own little system and enforce it ourselves.
Python Decorators: A Complete Guide With Code Examples
by Boot.dev Team - Programming course authors and video producers
Remember function transformations, where a higher-order function takes a function and returns a function with new behavior? Python decorators offer a kind of syntactic sugar around that. ("Syntactic sugar" just means "a more convenient syntax.") In this guide you'll learn what decorators are, how args and kwargs let them wrap any function, how to write decorators that take arguments, and how to use functools.lrucache for memoization.
Deep Blue Was Not ChatGPT
by Boot.dev Team - Programming course authors and video producers
It's May 11th, 1997, and Garry Kasparov sits in front of a chessboard on the 35th floor of a Manhattan skyscraper.
SHA-1 Was Shattered
by Boot.dev Team - Programming course authors and video producers
A couple of weeks ago I downloaded a copy of OBS, and my operating system yelled at me. Told me I shouldn't trust it. And it was right, I shouldn't have been trying to download from fastandrealobsfree.ru.
The Boot.dev Beat. June 2026
by Lane Wagner - Boot.dev co-founder and backend engineer
May was a fun month. Interactive widgets (the ones we teased last month) are now live in select lesson content, sound effects rolled out to everyone, and every Python project course got type hints.
WannaCry: The Ransomware Attack That Shut Down Hospitals
by Boot.dev Team - Programming course authors and video producers
It was 3 PM on a Friday. A doctor at an NHS hospital in the UK tries to check his email. Instead, one of the PCs in the room reboots into a scary red screen demanding $300 in Bitcoin.
12 Best Ways to Learn JavaScript
by Maya Chen - Computer science and programming educator at Boot.dev
JavaScript is one of the best languages to learn, powering 98% of websites. Build in-demand skills whether you're a beginner or an experienced developer.
13 Best Web Development Courses
by Maya Chen - Computer science and programming educator at Boot.dev
Compare the best web development courses for 2026. Explore platforms, skills, pricing, and paths to become a frontend or backend developer.
Open Source Maintainers Are Crashing Out
by Boot.dev Team - Programming course authors and video producers
Open source is a safe, sustainable development model. Right?
GitHub Keeps Going Down
by Boot.dev Team - Programming course authors and video producers
On February 9th, 2026, GitHub went down.
