Every time someone in Madrid opens a video hosted in a Virginia data centre, the bits of that video cross the Atlantic. They do not travel by satellite or over any wireless link: they ride a cable abo...
When a server decides whether a network packet gets in or is dropped, that packet normally walks through a series of rules in user space or in the kernel firewall: the data is copied back and forth, c...
There is a figure the industry has been repeating for years and that rarely makes the headlines: around 70% of the serious vulnerabilities Microsoft patches every month share the same origin. They are...
A one-megabyte text file is about 8.4 million bits. That same text, dropped into a ZIP, shrinks to a quarter of its size without losing a single comma. The interesting question is not how it shrinks, ...
A 4K frame at 8 bits per colour channel is 3840 × 2160 pixels, roughly 8.3 million points. If we stored each one with its three colour components, that single frame would weigh almost 25 MB; at 60 fra...
A normal home now holds more IP addresses than people. Every phone, every laptop, the television, the console, the speaker and even the light bulb has one. And yet, seen from the outside, the whole ho...
Every time your program reaches an if, the processor faces a problem it should not have: the answer to that question does not exist yet. The value that decides the branch may come from a memory read t...
It is half past three in the afternoon in Madrid and your laptop has just asked a server in Virginia what time it is. Twenty minutes have passed between the reply and the next one; by the time it fini...
One thread per connection does not scale The most common mental model of a server is simple: a connection arrives, a thread opens, it is served, it closes. That works with a hundred clients. With ten ...
Malloc does not call the kernel for every byte When a C or C++ program asks for memory with malloc(), most people picture the operating system handing out fresh pages every time. The truth is duller a...
Your text file is 10 MB. You compress it and it is 2.5 MB. You decompress it and it is exactly the same file, bit for bit, without a single different letter. Nothing has been lost, and yet 7...
There is a line of code almost all of us have written at some point that looks completely harmless: preg_match('/^(\w+\s?)*$/', $text), or its JavaScript cousin /^([a-z]+\s?)+$/. With a ten-character ...












