RSSAmplifier

Blog

Jonathan Beard

Jonathan Beard's blog about systems, performance, and tech.

jonathanbeard.ioRSS feed ↗22 posts

Latest posts

The 80% Problem: The Last 20% Is Where the Engineer Used to Live

AI gets you to a working draft fast. The trouble is what the missing fifth contains, the edge cases and operational reality that used to teach engineers their judgment, and who builds that muscle now.

AI Is the Ultimate Leaky Abstraction

A generated answer is an abstraction over reasoning you never see. It works until it leaks, and when it leaks it hands you a bill for exactly the understanding it let you skip.

Why More Cores Stopped Saving Us

Adding cores quietly stopped working, and Amdahl told us why forty years early: scaling stalls on the one dependency you can't parallelize away, not the resource you keep buying.

An Abstraction Is Lossless Only If It's Context-Free

When can you abstract something away for free? The condition has two names, context-free and zero mutual information, and almost nothing in a real system meets it.

Every Abstraction Is a Debt You Haven't Been Billed For Yet

Every abstraction is borrowed complexity: a quiet debt that comes due at 3am, in the layer you chose never to learn. On staying ahead of the bill.

I Bought a Camera for a Photo Booth. Now I Photograph Llamas.

How a wedding photo booth led me to a Nikon Zf, a bag of cheap vintage glass, manual focus, and a running habit of photographing tiny plastic llamas wherever work sends me.

I Spent Years on How Machines Coordinate. Then I Started Thinking About Us.

A systems architect's questions, pointed one level up: from cores and caches to minds, institutions, and the societies they run on.

Managing Parallel, Part 4: The Machine Underneath

Managing Parallel, Part 4: The Machine Underneath. Memory ordering (x86-TSO vs Arm), NUMA topology, and cache-line atomicity

Cross-Platform Home Storage: NFS, SMB, and the UID Trap

One pool of storage that Linux, macOS, and Windows can all share: NFS for the compute nodes, SMB for the laptops, and the UID-alignment trick that stops NFS permissions from ruining your week. Built for home ML clusters and home labs.

Managing Parallel, Part 3: When Parallel Goes Wrong

Managing Parallel, Part 3: When Parallel Goes Wrong. The short list of broken contracts behind most concurrency bugs

Managing Parallel, Part 2: To thread or not to thread

Managing Parallel, Part 2

Using C++ Functions and Objects from C

A step by step guide to using C++ in C.

Managing Parallel, Part 1: Queueing, Work, Oh My!

Managing Parallel, Part 1

C++ Template Functions Based On Type Size Substitution Failure

How to use templates to build functions by type size

Hosting pages with GitHub, and More

How to host pages with GitHub pages, use jekyll and bootstrap together to make awesome pages

Secure Language

The folly of inventing secure languages

Data Wrangling

Data wrangling, why should you learn basic coding?

A short intro to stream processing

What is stream processing and how does it relate to data-flow?

Do We Need More Programming Languages

A case for more programming languages

C to Java Inter-Process Communication Examples

Tutorials and full code examples of how to use pipes and FIFOs to connect C/C++ compiled applications to a thread running inside a JVM using Java.

Flex and Bison in C++, a short example

How to get flex and bison to work together in C++

All About System Timing

How to time software properly: from rdtsc to clock_gettime and everything in between, plus timer synchronization.