Emacs: The Editor That Contains Multitudes (Including a Therapist)
Richard Stallman wrote the first Emacs in 1976 as a set of editing macros for the TECO editor, then rewrote it as GNU Emacs in 1984. In the decades since, Emacs has accumulated a mail client, a news reader, a calendar, an IRC client, a file manager, a spreadsheet, a...
Read MoreThe Unix Epoch: Why Your Computer Thinks Time Began in 1970
Unix timestamps count seconds elapsed since midnight UTC on January 1, 1970 — a date chosen with minimal ceremony when Bell Labs developers needed a fixed reference point and picked something conveniently recent. January 1, 1970 is not the birth of computing, nor Unix, nor anything in particular; it was...
Read Morestrace: The Tool That Lets You Watch System Calls in Embarrassing Detail
strace attaches to a running Linux process and prints every system call it makes, in real time: every file it opens, every network connection it attempts, every byte it reads, every signal it receives. It is invaluable for debugging programs that refuse to explain why they're failing, and mildly alarming...
Read Moremake: The Build Tool That Treats Tabs and Spaces as Mortal Enemies
Stuart Feldman wrote make at Bell Labs in 1976 to automate the compilation of large C programs, inventing the concept of dependency-driven builds in the process. Its Makefile syntax uses tabs — not spaces, tabs — to denote recipe lines, and will fail silently and mysteriously if you use spaces...
Read MoreThe .rhosts File: Authentication So Trusting It’s Essentially a Welcome Mat
Before SSH existed, Unix systems shared trust via .rhosts files: a plaintext list of hostnames and usernames that would be granted login access without a password, on the theory that if a machine said it was trusted-host it probably was. DNS spoofing, IP spoofing, and the general untrustworthiness of networks...
Read Moretraceroute: Van Jacobson’s Clever Abuse of TTL Fields
traceroute was written by Van Jacobson in 1987, and works by deliberately exploiting a feature of IP packets — the Time To Live field, which decrements at each router hop and triggers an ICMP "time exceeded" error when it hits zero. By sending packets with incrementing TTL values, traceroute tricks...
Read More



























