Skip to content

Basics

MTU 1500: Why the internet has a 'max speed'

I used to think that when I downloaded a 1 GB file, it was sent as one giant chunk of data.

But it's actually sent as millions of tiny "envelopes" called packets. And almost every single one of those envelopes is exactly 1500 bytes long.

This is the MTU (Maximum Transmission Unit), and it’s one of the weirdest relics of the early internet.

Base64 is Not Encryption: Stop Hiding Secrets in Plain Sight

I see this all the time in configuration files or old code: a password or an API key that looks like a bunch of gibberish, like SGVsbG8gV29ybGQ=.

"Oh, it's encrypted," someone might say.

But it’s not! It’s just Base64 encoded. Anyone with a terminal or a web browser can turn that gibberish back into plain text in about two seconds.

Public Key vs Private Key: The Locked Box Analogy

I remember the first time I set up an SSH key. I had to generate a "public" one and a "private" one. I knew I was supposed to keep the private one secret and share the public one, but I didn't really understand why it worked.

If someone has my public key, can't they just reverse-engineer it to get my private key?

The answer is asymmetric encryption, and it's a bit like a magic padlock.

I used to think that the web was one continuous conversation. I log in, and the website "remembers" me while I browse.

But the truth is, the web is stateless. Every time you click a link, it's like meeting the server for the first time. It has no idea who you are or what you did five seconds ago.

Cookies are the sticky notes that solve this problem.

ASCII vs UTF-8: Why Emojis Break Things

I used to think that a "character" was just a "byte." If I had a string of 10 characters, it should be 10 bytes long.

That works fine if you only use the English alphabet. But the moment someone adds an emoji (like ⚡) or a character from another language, the math breaks.

Let's look at why character encoding is so confusing.

Concurrency vs Parallelism: A Coffee Shop Guide

I used to use the words "concurrent" and "parallel" interchangeably. I thought they both just meant "doing more than one thing at the same time."

But in computer science, they have very specific meanings. As Rob Pike (one of the creators of Go) says: "Concurrency is about dealing with lots of things at once. Parallelism is about doing lots of things at once."

Let's look at how that works at my favorite coffee shop.

Latency vs Throughput: The Plumbing Analogy

I used to think that "Internet Speed" was just one number. If I had 100 Mbps, everything should be fast, right?

But sometimes, even with a great connection, websites take forever to start loading, or my video calls stutter.

It turns out "speed" is actually two different things: Latency and Throughput.