← Shai Asher

About Slow Is Smooth

I’m Shai Asher. I write systems code — mostly Go, C and C++, and assembly for the stretches where the compiler and I disagree about something measurable.

This site is where that work gets written down. Not the tidied version: the one with the measurements still in it, including the measurements that said I was wrong.

The name is a working habit rather than a slogan. Deliberate work is smooth work, and smooth work turns out to be fast — a claim you can only make honestly once you have measured it.

What I work on

Systems and performance

Concurrency, SIMD, and profiling. Lock-free structures where the atomics are the design rather than a detail bolted on afterwards: a Bloom filter and a cuckoo filter with hand-written AVX2 and NEON paths, and a C++ fan-in queue built so a producer never blocks. The recurring question is never “is this fast” — it is fast compared to what, measured how, on which machine.

The maths underneath

Fluid dynamics, from the Navier–Stokes equations themselves through to a solver that discretises them across four interchangeable backends. Succinct data structures, where a few per cent of extra index turns a linear scan into two reads. And Project Euler, which is where a lot of this started — Problem 38 got solved seven ways here, beginning with pen and paper and ending in AVX2. Watching one problem refract through seven languages teaches you more about its shape than any single implementation does.

Teaching

thermolab and wavelab: university courses in thermal and statistical physics, and in waves and optics, written as notebooks that run entirely in the browser. Bilingual, English and Hebrew, no install step — because the install step is where most people quietly give up.

How I write about it

The wrong turns stay in.

A benchmark that spent 78.88% of its CPU time inside the benchmark function rather than the filter it claimed to be measuring. An optimisation that made things slower and had to be reverted. A data race in code I had already labelled thread-safe, found by the race detector rather than by me. Those are the parts worth reading, and they are exactly the parts most writeups quietly delete.

Every number here is attached to a machine and a toolchain. A figure with no provenance isn’t a measurement, it’s a mood.

Why the turtle

Because it carries its complexity on its back and keeps walking.

A turtle isn’t slow because it is failing to be fast. It is slow because it is carrying something, and it has arranged its entire design around carrying it well. That is close to what good engineering feels like from the inside: the constraints are real, you build around them deliberately, and the result is still standing after the thing that sprinted past you has fallen over.

Also, it smiles.

The philosophy

The banner at the top of the site puts it in the register it deserves:

Solutions, illusions they are.
Trade-offs only, the path holds.
Choose well, you must.

There are no silver bullets on offer here. Every optimisation buys something with something else — memory for speed, simplicity for throughput, generality for a hot path that fits in cache. The craft is knowing which trade you are making, and being able to produce the numbers that say it was worth making.

Elsewhere

If something here saves you an afternoon, or talks you into going and measuring the thing yourself, that is the whole point.