All visual explainers

One idea.
One short video.

Narrated explainers on the things engineers keep confusing — precision vs recall, what mmap really does, why more cores can make a program slower. Every one has a written companion page, so you can read it instead. Free, no sign-up.

Thumbnail for Zero-Copy: How Servers Send Files Without Touching the Data
Systems31 Jul 2026

Zero-Copy: How Servers Send Files Without Touching the Data

Sending a file the naive way copies the same bytes four times and crosses the kernel boundary four times, even though the application never reads them. sendfile() and scatter-gather DMA cut that down to zero CPU copies — the reason nginx, Kafka, and Netty can push huge files without breaking a sweat.

Watch or read →
Thumbnail for The OSI Model: How a Message Crosses the Internet, Layer by Layer
Web & Networking31 Jul 2026

The OSI Model: How a Message Crosses the Internet, Layer by Layer

A message crosses WiFi, copper, fiber, and routers and arrives intact because the network is a stack of layers, each doing one job and talking only to its direct neighbor. Going down the stack, each layer wraps the data in its own header — boxes inside boxes — and the far side unwraps them one by one going back up.

Watch or read →
Thumbnail for NUMA: Why More CPU Cores Can Make Your Program Slower
Systems31 Jul 2026

NUMA: Why More CPU Cores Can Make Your Program Slower

Move a fast multithreaded program to a bigger server with more cores and it can run slower — same code, same data. On a big machine, memory isn't one uniform pool: each CPU socket has its own bank of RAM, and reaching another socket's memory is roughly twice as slow as reaching your own.

Watch or read →
Thumbnail for mmap: How to Read a 50GB File Without 50GB of RAM
Systems31 Jul 2026

mmap: How to Read a 50GB File Without 50GB of RAM

How memory-mapped files let a process address a file directly instead of copying it into a buffer — mapping loads nothing up front, and the OS pulls in only the 4KB page you actually touch, via a page fault and the shared page cache.

Watch or read →
Thumbnail for malloc: Where Does Memory Come From (and Why free() Doesn't Give It Back)?
Systems31 Jul 2026

malloc: Where Does Memory Come From (and Why free() Doesn't Give It Back)?

Your program calls malloc and free millions of times a second with no system call each time, because the allocator sits between you and the OS: it buys memory wholesale in big slabs and hands you small pieces retail, tracking what's free on its own shelf.

Watch or read →
Thumbnail for io_uring: How One System Call Does the Work of Thousands
Systems31 Jul 2026

io_uring: How One System Call Does the Work of Thousands

A server handling 100,000 connections is often slow not because the network is slow, but because of system calls — every read or write crosses the wall between user space and the kernel. io_uring shares two ring buffers with the kernel so a whole batch of requests can be submitted and completed with barely any crossings at all.

Watch or read →
Thumbnail for epoll: How One Server Holds a Million Connections
Systems31 Jul 2026

epoll: How One Server Holds a Million Connections

Why servers used to fall over around ten thousand connections (the C10K problem), and how Linux's epoll flips the cost model from checking every connection to checking only the active ones — the mechanism under nginx, Redis, and Node's event loop.

Watch or read →
Thumbnail for Classification vs Regression: Which Bucket, or How Much?
Machine Learning31 Jul 2026

Classification vs Regression: Which Bucket, or How Much?

Classification sorts input into a fixed set of discrete buckets — cat or dog, spam or not — and is scored by accuracy. Regression predicts a continuous number on a line, like temperature or price, and is scored by how far off the prediction lands.

Watch or read →
Thumbnail for Greedy vs Dynamic Programming: Grab the Best Now, or Plan the Whole?
Algorithms30 Jul 2026

Greedy vs Dynamic Programming: Grab the Best Now, or Plan the Whole?

Making change for 6 with coins {1, 3, 4}: greedy grabs the biggest coin that fits each time and never looks back, landing on 4+1+1. Dynamic programming solves every overlapping subproblem once and remembers the best answer, finding the true optimum of 3+3.

Watch or read →
Thumbnail for Cookies vs Sessions vs Tokens: Who Remembers You're Logged In?
Web & Networking30 Jul 2026

Cookies vs Sessions vs Tokens: Who Remembers You're Logged In?

HTTP is stateless, so the server forgets you between requests. A cookie is just the envelope carrying the real answer — the actual axis is where the login state lives: on the server (a session) or inside the token itself (a JWT).

Watch or read →
Thumbnail for Supervised vs Unsupervised vs Reinforcement: The 3 Ways a Machine Learns
Machine Learning29 Jul 2026

Supervised vs Unsupervised vs Reinforcement: The 3 Ways a Machine Learns

Three classic ways to teach a machine, like teaching a child three different ways: labeled flashcards, an unsorted toy box, or a game with a score. What your problem gives you decides which one applies.

Watch or read →
Thumbnail for Recursion vs Iteration: Two Shapes for the Same Job (and Why One Crashes)
Languages29 Jul 2026

Recursion vs Iteration: Two Shapes for the Same Job (and Why One Crashes)

Recursion solves a problem by having a function call a smaller version of itself down to a base case, then combines the answers back up — a natural fit for self-similar problems. Iteration solves the same problem with a loop and a running total, and never grows the call stack.

Watch or read →
Thumbnail for Pass by Value vs Pass by Reference: The Gotcha That Breaks Brains
Languages29 Jul 2026

Pass by Value vs Pass by Reference: The Gotcha That Breaks Brains

Change a variable inside a function — does the caller see it? Most popular languages pass the reference itself by value: a copy of the address, so you can mutate the shared object but can't reassign the caller's variable. The real split isn't value-vs-reference, it's mutate vs reassign.

Watch or read →
Thumbnail for Latency vs Throughput: The Two 'Faster's People Confuse
Backend29 Jul 2026

Latency vs Throughput: The Two 'Faster's People Confuse

Latency is how long one request takes end to end — what a single user feels. Throughput is how many requests the system handles per second — the fleet's capacity. Below capacity they barely interact; push toward the limit and queues form, and latency spikes even though nothing about a single request changed.

Watch or read →
Thumbnail for Hashing vs Encryption vs Encoding: 3 Things Every Dev Confuses
Backend29 Jul 2026

Hashing vs Encryption vs Encoding: 3 Things Every Dev Confuses

Encoding, encryption, and hashing get used like synonyms but do three different jobs. The tell is whether you need the original back, and for whom: encoding is reversible by anyone (no key), encryption is reversible only with a key, and hashing is not reversible at all.

Watch or read →
Thumbnail for Compiled vs Interpreted: It's Just a Question of When Your Code Gets Translated
Languages29 Jul 2026

Compiled vs Interpreted: It's Just a Question of When Your Code Gets Translated

Your code is text a CPU can't run — something has to translate it, and compiled-vs-interpreted is just a question of when. A compiler translates the whole program up front into a fast executable; an interpreter translates it line by line at runtime.

Watch or read →
Thumbnail for Bias vs Variance: The Two Ways a Model Misses (and Why You Can't Kill Both)
Machine Learning29 Jul 2026

Bias vs Variance: The Two Ways a Model Misses (and Why You Can't Kill Both)

Bias is how far off-target a model sits on average — a too-simple model that underfits. Variance is how inconsistent it is across different training sets — a too-complex model that overfits. You cannot minimize both at once, so the goal is the minimum of their sum.

Watch or read →
Thumbnail for Authentication vs Authorization: Who You Are vs What You Can Do
Web & Networking29 Jul 2026

Authentication vs Authorization: Who You Are vs What You Can Do

Authentication proves who you are, like passport control. Authorization decides what you may do once you're in, like a boarding pass and a lounge door. Even the HTTP status codes are misnamed: 401 Unauthorized really means unauthenticated, and 403 Forbidden is the real not-authorized.

Watch or read →
Thumbnail for Static vs Dynamic Typing: Proofread Now, or Find the Typos Live?
Languages28 Jul 2026

Static vs Dynamic Typing: Proofread Now, or Find the Typos Live?

When are a program's types checked — before it runs, or while it runs? Static typing catches mismatches at compile time; dynamic typing only discovers them when that exact line executes. The difference is when you pay for the mistake, not whether you pay.

Watch or read →
Thumbnail for Stateless vs Stateful: Remember the User, or Hand Them a Ticket?
Backend28 Jul 2026

Stateless vs Stateful: Remember the User, or Hand Them a Ticket?

Two ways to handle client state between requests: a stateful server keeps your session in its own memory so every request must return to the same machine, while a stateless server keeps nothing — each request carries what it needs, so any instance can handle any request.

Watch or read →
Thumbnail for Precision vs Recall: Which Mistake Can You Live With?
Machine Learning28 Jul 2026

Precision vs Recall: Which Mistake Can You Live With?

A classifier is wrong two different ways: flag something real as bad, or miss the bad thing entirely. Precision and recall score those two mistakes separately, and you can't maximize both at once — the threshold trades one off against the other.

Watch or read →
Thumbnail for Normalization vs Denormalization: One Master Copy, or Photocopies Everywhere?
Backend28 Jul 2026

Normalization vs Denormalization: One Master Copy, or Photocopies Everywhere?

Two opposite schema philosophies trading correctness for speed: normalization stores each fact exactly once and joins to read it back; denormalization copies the data into every row that needs it so reads skip the join, at the cost of keeping every copy in sync.

Watch or read →
Thumbnail for Discriminative vs Generative Models: A Critic, or an Artist?
Machine Learning28 Jul 2026

Discriminative vs Generative Models: A Critic, or an Artist?

Two opposite ways a model learns from data: a discriminative model only learns the boundary between classes, while a generative model learns the full distribution of each class well enough to create new samples — which is exactly what makes modern generative AI generative.

Watch or read →
Thumbnail for Cross-Validation: One Exam, or Five?
Machine Learning28 Jul 2026

Cross-Validation: One Exam, or Five?

A single hold-out test set gives a fragile score that swings with which rows you happened to hold out, and wastes data the model never trains on. K-fold cross-validation rotates the test set across k folds and averages the scores for a far more stable estimate — while using every row for both training and testing.

Watch or read →
Thumbnail for Bagging vs Boosting: A Jury, or a Relay?
Machine Learning28 Jul 2026

Bagging vs Boosting: A Jury, or a Relay?

Two opposite ways to combine many weak models into one strong ensemble: bagging trains models independently and averages their votes to cancel out variance, while boosting trains models sequentially, each one fixing the last one's mistakes, to reduce bias.

Watch or read →