Blog

Technical guides on post-quantum cryptography, reliable algorithmic trading, Python and AI — each one written from the code behind it.

Post-quantum cryptography

iraca: differential verification of ML-KEM and ML-DSA against three independent implementations

A Rust harness that differences the RustCrypto ml-kem crate against THREE independent implementations —the pq-crystals C reference, libcrux (formally verified) and AWS-LC (production)— byte for byte, across all three ML-KEM levels, and its ML-DSA against dilithium across all three levels. Any disagreement is a real one, verified by execution.

iracaML-KEMML-DSA

Can an AI decrypt your encryption? The real threat is elsewhere

The 'AI hacking' headline blurs three different threats. AI does not break the mathematics of encryption: it amplifies implementation bugs, phishing and brute force. The threat to the maths is quantum computing, mitigated by hybrid post-quantum cryptography.

CriptografíaPost-cuánticaIA

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.

QuipuRustRendimiento

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.

RustCriptografíaPost-cuántico

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.

SeguridadContraseñasOPRF

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.

CriptografíaPost-cuánticaSeguridad

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.

CriptografíaPost-cuánticaQuipu

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.

QuipuRustPython

Reliable algorithmic trading

I switched off the bot: five strategies, 77,000 candles and zero net edge over fees

I measured five trading strategies over 77,000 one-minute candles of BTC and ETH, net of fees. The best returned +0.0135% with a t-statistic of 0.16. Why that is zero, and why switching off was the right call.

Trading algorítmicoBacktestingEstadística

The rounding that makes your bot risk 10 times what you think

Sizing a position looks like a division, but making it fit the exchange's minimums is where money is lost. The max(1, int(...)) pattern and how to avoid it with Decimal and rounding down.

PythonTradingBots

Why your bot gets a 403 from Cloudflare (and how to harden a ccxt client)

Many exchanges put Cloudflare in front of their API and, now and then, challenge legitimate requests from your own account with a 403. How to mitigate it without evading anything: header hardening and selective retry with backoff.

PythonccxtOKX

Two ways a backtest lies to you (and how to avoid them)

Almost all the edge measured in a backtest is one of two illusions: the model saw the future, or the winning variant won by noise. Two pure-Python primitives to rule out both before risking anything.

PythonEstadísticaMachine Learning

When your classifier flickers: hysteresis for signals that oscillate

A signal that near the threshold goes OK, CAÍDO, OK, CAÍDO fires alerts or failovers on every twitch. The fix is old and elegant: don't change state until the new one holds.

PythonSistemasMáquinas de estado

Python, AI & development

1,200 AI agents escaped their lab. We used their method to audit ourselves

2026's biggest agentic-AI incident, without the fear and with the method: its seven attack disciplines, turned into a checklist against our own systems, and what we found.

IASeguridadAgentes

Malware that lets four AIs vote on its next move

CLOSEDQUORUM asks four AI models to vote on its next malicious action. It is flashy, it is an inert proof of concept, and it is a mirror: we use the same multi-model pattern defensively.

IASeguridadMalware

Can one AI attack and corrupt another? Yes, and the filter is not the defense

Prompt worms, memory poisoning, backdoored models: what is proven and what is hype, and why defending an AI agent is a matter of architecture, not a filter.

IASeguridadLLMs

One AI can attack another AI's core. It has already started, and it is not Skynet

Poisoning a model's data costs 250 documents; an agent already ran 80-90 % of a real cyberattack. What is true about the 'AI attacks AI' scenario, what is science fiction, and how you defend the core.

IASeguridadCiberseguridad

The one who builds AI is the one who fears it most. And he is right

Anthropic's CEO puts a 25 % chance on things going very badly and says the industry lied about the risks. His fear is not a rogue robot: it is that models are grown, not built, and we do not know what is inside.

IASeguridadÉtica de la IA

What we fear about AI are our own failings. And in it, they have a fix

Acting without a compass, being inconsistent, not auditing oneself: what we fear about AI is the list of our own defects. The difference is that in a well-built machine they have a solution.

IAÉtica de la IASeguridad

How to integrate an LLM (Claude or GPT) into your Python application

A practical, code-driven guide to connecting a language model to your Python app: API calls, streaming, structured outputs, and best practices for production.

PythonIALLMs

NiceGUI: build a web application in Python without writing JavaScript

What NiceGUI is, how it works, and why it's ideal for MVPs, dashboards, and internal tools built 100% in Python. With a code example.

PythonNiceGUIWeb

Automate repetitive tasks with a Python bot

How to identify what to automate and build a bot or script in Python that saves you hours: scraping, reports, notifications, and scheduled execution.

PythonAutomatizaciónBots

RAG explained: how to give an LLM your own information

What Retrieval-Augmented Generation is, why it avoids hallucinations, and how to build an assistant that answers with YOUR documents. With the pattern in Python.

IALLMsRAG

From idea to MVP: launch your product in 2 weeks with Python

What an MVP is, what it should NOT include, and how a modern Python stack (FastAPI, NiceGUI, SQLite) lets you validate your idea in weeks instead of months.

MVPPythonProducto

Small reliable libraries

Sovereign recon: what a 4000-star tool gives you (and what is debt)

We evaluated a 4000-star security recon tool for our Rust engine. We read all 1561 lines, classified every capability, and kept ONE vein. The lesson: you adopt techniques, not code.

SeguridadReconRust

SameSite=Lax doesn't protect you from login-CSRF

SameSite=Lax doesn't cover login-CSRF, and we found it by setting three AI models to attack our own identity server: one raised a false alarm, another refuted it, and a third found the real bug.

SeguridadCSRFAutenticación

Same text format doesn't mean the same signature

We were merging two session implementations into one library. The token format was identical; the signatures weren't. What a fixed vector caught before it logged everyone out.

SeguridadHMACSesiones

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.

SistemasSubprocesosRust

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.

DiseñoSistemas adaptativosRust

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.

SeguridadNode.jsCapabilities

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.

PruebasVerificaciónCalidad

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.

VerificaciónObservabilidadIntegraciones

LegalTech

What gives an electronic document evidentiary weight

A file isn't evidence just because it exists. It carries evidentiary weight when you can show it wasn't altered, who produced it, and when it existed. Here's how the technique —hashing, digital signatures and timestamping— turns an electronic document into evidence that holds up before a third party.

Evidencia digitalValor probatorioFirma digital

Electronic signature vs digital signature: not the same thing

They're used as synonyms and they aren't. An electronic signature is any sign of intent to sign; a digital signature is a specific cryptographic technique that proves integrity and origin. The difference matters when you have to hold the document up before someone who doesn't trust it.

Firma digitalFirma electrónicaCriptografía

What digital chain of custody really is (and what your software must do)

Digital chain of custody is not a hash: it is the continuous proof that a file hasn't changed, who produced it and when it existed. The four guarantees a system must provide for electronic evidence to hold up.

Evidencia digitalCadena de custodiaIntegridad

Trusted timestamping: how to date digital evidence so nobody can dispute the date

A hash and a signature prove what a file is and who signed it, but not when it existed. Timestamping is the piece that supplies the date verifiably: what it is, how a TSA works, and why the system clock doesn't count.

Sellado de tiempoEvidencia digitalRFC 3161

Educational software

chimini: the playable periodic table where you fuse elements and see what happens

A chemistry and nuclear-physics lab that runs in your browser, free and with no install. Fuse elements, expose them to energy, and explore the periodic table with real data.

QuímicaTabla periódicaSoftware educativo

Colombia in data

Colombia's water and El Niño: I measured the design's bet, and the data refuted it

I built a regional water-balance simulator on IDEAM's real series (2003–2026, 33 departments). The intuitive bet —a grid that moves water between regions El Niño hits oppositely— was measured, and the evidence refutes it: median correlation +0.12. The consequence changed the design.

aguaENSOEl Niño