James Whitfield
Systems thinker and language nerd. Writes about programming languages and emerging tech with historical context.
15 Articles
Rob Pike's Programming Rules Are Still Right
In 1989, Rob Pike — who would later co-create Go, UTF-8, and Plan 9 — wrote down five rules of programming. They're short enough to fit on an index card and...
The Specification-Implementation Gap Is Where Bugs Live
There's a claim that surfaces periodically in programming language theory circles: 'a sufficiently detailed specification is indistinguishable from code.' The...
Embeddable Graph Databases Beyond SQLite
SQLite is everywhere. It's in your phone, your browser, your smart TV, probably your car. It solved a fundamental problem — giving applications a full SQL...
How JIT Compilers Make Dynamic Languages Fast
Ruby has a reputation for being slow. So does Python. So does JavaScript — or at least, it did, until V8 made it fast enough to run server-side workloads. The...
Java Keeps Getting Better and Nobody Notices
Java is the Rodney Dangerfield of programming languages: it gets no respect. Mention Java to most developers under 30 and they'll picture XML configuration...
CPU Branch Prediction: Your Code's Hidden Bottleneck
There's a famous Stack Overflow answer that's been viewed over 3 million times. The question: why is processing a sorted array faster than processing an...
What Building a Shell Teaches You About Unix
Every developer uses a shell daily. Few understand what it actually does. The shell looks like an application — you type commands, it runs them — but it's...
GPU-Accelerated Terminals: TTYs to Glyph Atlases
In 1978, Digital Equipment Corporation shipped the VT100. It was a piece of furniture — a CRT in a beige enclosure, wired to a minicomputer via serial cable....
Why Lisp Still Matters After Six Decades
Every few years, someone writes a 'Lisp is dead' essay, and every few years, someone else points out that half the features in their favorite modern language...
The Linux System APIs Every Developer Should Know
In 1969, Ken Thompson and Dennis Ritchie sat in a Bell Labs office and made a series of design decisions that would outlast nearly every other piece of...
Python's JIT Compiler Is Finally Happening
Python has been 'too slow' for as long as Python has existed. The standard response from the Python community — 'use C extensions for the hot loops' — has...
Why jemalloc Matters: Memory Allocation at Scale
Every time your program calls malloc(), something has to decide which chunk of virtual memory to hand back. This decision — trivial for a small program —...
VisiCalc and the Software That Made Hardware Worth Buying
Before VisiCalc, personal computers were toys for hobbyists. After VisiCalc, they were business tools. That's not an exaggeration — it's the documented sales...
How JPEG Compression Actually Works
JPEG is the cockroach of file formats. It was standardized in 1992, predates the web browser, and has survived every attempt to replace it. WebP, AVIF, HEIC —...
Why Great Software Takes Time and Can't Be Rushed
Flask took eight years to reach version 1.0. SQLite has been in active development since 2000 and still gets meaningful improvements. The Linux kernel is over...