Blog
Technical guides on post-quantum cryptography, reliable algorithmic trading, Python and AI — each one written from the code behind it.
Post-quantum cryptography
Fifty seconds for half a megabyte: the optimisation that fixed the constant, not the order
A quadratic radix conversion survived for months inside a cryptography library with every test green. The comment documenting it convinced everyone the problem was solved. Measurement, cause, and the classical algorithm that made it 111× faster.
Seal a file so no one can dispute you didn't touch it
A single hash forces you to reveal the whole set to prove one file. A Merkle tree doesn't. How Tunjo works: an integrity root, a triple post-quantum signature, and a verifier anyone can run.
They steal your database and can't crack a single password
Argon2 makes each guess expensive, but the attacker who takes your user table has infinite time and GPUs. An OPRF changes the game: the hash depends on a key that doesn't travel with the database. How it works, what it costs, and what breaks.
What is post-quantum cryptography, and why should you migrate now?
The quantum threat, the 'harvest now, decrypt later' attack, and the NIST standards ML-KEM and ML-DSA — explained clearly, and why to start migrating today.
Hybrid encryption: why combine classical and post-quantum cryptography
What hybrid encryption is, why combining X25519 with ML-KEM-1024 (and Ed25519 with ML-DSA-87) is safer than picking just one, and how Quipu applies it.
Quipu: post-quantum encryption in pure Rust, with a Python wheel
Quipu is a hybrid post-quantum encryption library for data at rest, written in pure Rust. For non-Rust users it ships as a native Python wheel (PyO3). Why we dropped the C ABI and multi-language bindings, with examples.
Small reliable libraries
I killed the process and the drain still hung: a grandchild held the pipe
A subprocess hangs, I kill it with SIGKILL, and my program still waits for its output forever —at 0% CPU—. The pipe wasn't held by the child: a grandchild inherited it, and while it lives EOF never arrives.
My adaptive memory stayed empty in production, and it wasn't a bug
A system meant to learn from its own failures accumulated zero records, while a neighbouring table grew. There was no error in the code —the logs were clean—. It was a deadlock: two safety mechanisms starving each other.
Don't claim a security boundary holds — demonstrate it
Confining what a piece of code can touch —the file system, spawning processes— is a capability problem. And there's a huge difference between designing the boundary and PROVING it holds: the first is a claim; the second, a harness that attacks its own boundary and keeps the evidence.
My detector was blind across 1,029 of 6,309 lines and its three tests stayed green
A test bench made only of negative cases over files that are clean today cannot tell a correct rule from a blind one: both return empty. How to detect it, and the three conditions that make a pair of tests actually discriminate.
I said no data was leaving. On the first good run, two records left
A zero, a silence or a "not found" are indistinguishable from a real negative when the code that would produce them never ran — and they arrive with the confidence of having verified. The positive control, and why you have to look again after the first success.
Xiliux