RSSAmplifier

Blog

joa-ebert.com

Recent content on joa-ebert.com

joa-ebert.comRSS feed ↗9 posts

Latest posts

Phobos: A tiny scale-free kernel language

I built a tiny GPU kernel language from scratch to learn the stack: hand-written PTX, then MLIR down to NVPTX, reaching 76% of cuBLAS SGEMM on an old RTX 2080 SUPER. First-class tiles then let the same kernel compile to a multi-node tile-DAG (a design I’ve only run on one machine).

Google Photos: In Search of the 20,000 Photos per Album Limit

I hit Google Photos’ 20,000-photos-per-album limit and couldn’t let the question go: why 20,000? It’s at no bit boundary and no data structure degenerates there, so I went digging — through media identifiers, Spanner, secondary indices and mutation-per-commit budgets. My best bet is that the limit is a fossil of Spanner’s old 20,000-mutation cap that nobody has bumped…

Æon: Sound as a Function of Time

I always thought a purely functional audio engine would be cool and utterly stupid. Æon is that little toy. The whole engine is one pure function of time, built from small functions you chain together into oscillators, envelopes, delays and sequencers. Recursing backwards in time gives you a delay for free, until it blows up into O(2ⁿ) and you fall back to a boring ring buffer.

Learning to Type

At 38, after years of overuse pain, I switched to a split keyboard and the Graphite layout. Here’s what twelve months of relearning actually cost — and bought.

Touching Grass

Returning from a long hiatus: on writer’s block, the relaunch of a WebGPU personal site, and touching actual grass.

10 Unique Challenges for Software Engineers in the Broadcast Industry

Ten things that will surprise you about writing software for live broadcast.

A Story about Flash

Flash as an escape from a small city — and how one piece of software built a career.

The Problem with Subsets

Why 99.9% compatibility across 100 classes is not 99.9% at all.

Hunting a JavaScript Heisenbug

Three days of debugging, a V8 build from source, and a lesson on when the JIT is the culprit.