Silent Speech Interfaces: Why RF Beat the Electrodes
You're in the library, dictation app running, and you've just mouthed the same email four times into your laptop like a lunatic because speaking out loud would...

James is a language nerd and systems thinker who believes most "new" ideas in computing are old ideas meeting new hardware. He covers programming languages, compilers, runtimes and emerging technology.
He likes to trace a feature back to the paper or mailing-list thread it came from, and to ask what the original designers would make of how it is used today.
You're in the library, dictation app running, and you've just mouthed the same email four times into your laptop like a lunatic because speaking out loud would...
Here's a claim that will annoy at least two language communities: the borrow checker was a detour. Not a mistake — Rust's ownership model solved real problems...
Here's a claim that will annoy both camps: skeuomorphism never died because users hated it. It died because it was expensive — in pixels, in GPU cycles, and in...
Rust's type system is supposed to make a hard promise: if your safe code compiles, it can't have dangling pointers, data races, or use-after-free. So when a...
Here's a cheap trick that's quietly useful: if you only care about the first token an LLM would emit, you can ask it a multiple-choice question and get the...
Spatial computing has a marketing problem: every "vision of the future" the industry ships involves strapping a screen to your face. Glasses, goggles, headsets...
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...
There's a claim that surfaces periodically in programming language theory circles: 'a sufficiently detailed specification is indistinguishable from code.' The...
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...
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 is the Rodney Dangerfield of programming languages: it gets no respect. Mention Java to most developers under 30 and they'll picture XML configuration...
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...
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...
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....
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...
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 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...
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 —...
Before VisiCalc, personal computers were toys for hobbyists. After VisiCalc, they were business tools. That's not an exaggeration — it's the documented sales...
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 —...
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...