Blog

Engineering write-ups from the Crystl Labs workbench: what we measured, what it cost, and what we changed because of it. 11 posts.

Directive 2026-08-05 / 9 min

Everyone Argues About Pogačar. Velogames Is Decided by the Three Riders Nobody Thinks About.

Four editions of Velogames Tour de France data, 720 riders and 15,840 rider-rounds, on how the game is actually won. The three mandatory Unclassed slots are the worst assets in the game and a quarter of their points are team assists, so a rule you can apply before the race starts is worth 2x to 4x on those slots. It beat the field four years out of four.

Read on ->
Directive 2026-07-29 / 11 min

The Quantum Computer Was Right About Pogačar by 84 Points. Four Editions of Data Say That Was a Coin Flip.

I graded the quantum-picked fantasy team against a hindsight-optimal ILP and four editions of Velogames data. It scored 11,924 and finished outside the top 300. The Pogačar call was correct and worth 0.57%; the real loss was 2,859 points of budget allocation, traceable to a single ranking error at 24 credits.

Read on ->
Directive 2026-07-22 / 7 min

Simulating the Tour de France on a 127-Qubit Quantum Processor

A Velogames roster is a multidimensional 0-1 knapsack, and knapsack is one of the benchmark problems QAOA is meant to own. The classical ILP solved it in 40ms. Real IBM hardware got to roughly 91% of optimal, and why it fell short is the actual result.

Read on ->
Directive 2026-07-16 / 10 min

I Picked My Tour de France Fantasy Team With a Real Quantum Computer. It Told Me Not to Buy Pogačar.

I optimized my Tour de France fantasy roster with real IBM quantum hardware: gate-based QAOA, not a hybrid solver. A provably lossless 172-to-45 rider reduction, an exact classical ILP baseline, and four real QPU jobs later, the optimal team benches Pogačar, and a trained 21-qubit circuit found that exact optimum twice through the noise.

Read on ->
Directive 2026-07-13 / 6 min

The 80MB "Hello World": Why Your Framework Is a Liability

A fresh React Native "Hello, World" ships 50-80MB of native libraries and boots an entire second runtime before it draws a pixel; the same app in native Kotlin lands under 500KB. Binary size and boot latency aren't implementation details, they're user-facing costs paid on every install and every cold start.

Read on ->
Directive 2026-07-08 / 7 min

Piping Production Logs Into Cyberpunk 2077

A live SSH session on a phone, bridged over a WebSocket, rasterised into a render target and bound at runtime into REDengine's material system. Not an overlay. The billboard itself, respecting depth and occlusion like any other object in the scene.

Read on ->
Directive 2026-06-24 / 6 min

Triangulating My Cat Using Custom Sonar

Three broken smartphones, a 2kHz-to-18kHz chirp and GCC-PHAT cross-correlation at 192kHz gave 2cm positional accuracy on a calibration speaker. Then the cat refused to cooperate, and the fix was to stop transmitting entirely.

Read on ->
Directive 2026-06-10 / 6 min

I Spent 40 Hours Fixing a 12ms Spike

No stack trace, no error message, just a stutter QA described with their hands. Forty hours of systrace and heap diffs traced it to a single Rect allocated inside onDraw(). The fix was three lines. The ratio is the entire genre.

Read on ->
Directive 2026-05-27 / 6 min

Programming Against the Laws of Physics

Every `for` loop is a physical event. Code compiles down to charge moved across gates, charge dissipates as heat, and heat has to go somewhere before the chip throttles or the battery drains. The mental model of "code as text" stops the story at step one.

Read on ->
Directive 2026-05-12 / 6 min

The "Bus Factor" of One: Engineering for the Solo Dev

"Bus factor of one" isn't a risk you mitigate with more headcount when there is no headcount to add. You mitigate it with architecture. The design constraint: if I stop touching the stack tomorrow, it keeps running for five years.

Read on ->
Directive 2026-04-28 / 6 min

Why I Keep My Data in Text Files (And You Should Too)

A managed cluster is a single point of failure sitting behind an API you don't own. A SQLite file has exactly one failure mode: the disk fails. You can test that one, back up against it in a line of shell, and never wait on someone else's incident response team.

Read on ->