Engineering Blog
Notes from production: what we build, what broke, and what we changed.
- Blockchain3 min read
Scaling an aggregation pipeline: from 41,000 queries a cycle to a handful
Designing a data-ingestion pipeline whose cost scales with what changed, not with the size of the dataset — batch loading, delta filtering, and cursor-based fan-out.
- AI Infrastructure3 min read
Dependency bots tell you what changed. They don't tell you if it matters.
Why we built an LLM-scored, bundle-aware upgrade pipeline instead of accepting the one-PR-per-package model Renovate and Dependabot default to.
- AI Infrastructure3 min read
Building an LLM inference layer that survives any single provider's outage
Why we treat LLM providers as an infrastructure dependency to route around, not a fixed integration — a circuit breaker, a fallback order, and a response layer built for the least standardized provider in the chain.
- Blockchain3 min read
Service boundaries for a 13-service Ethereum mempool pipeline
Why decoding the mempool in real time is a distributed-systems architecture problem — a swappable message bus, a decode waterfall with graceful degradation, and service isolation enforced by convention.
- Platform Engineering3 min read
VIES is free and unreliable. Compliance can't be built on the free part alone.
The EU's VAT validation service is a government endpoint with no fallback of its own. What it takes to turn it into something a business can depend on for reverse-charge compliance.
- Blockchain2 min read
When the exchange API doesn't exist: reaching for a headless browser on purpose
Tracking nine crypto exchanges for new listings means six clean APIs and three Cloudflare walls — and why we only pay the headless-browser cost where nothing else works.
- Platform Engineering3 min read
Why billing runs as its own service, not a module
Isolating billing behind its own database, its own Stripe integration and an internally authenticated boundary — so a billing-provider outage degrades checkout, not the product itself.
- Blockchain2 min read
Why we decode Ethereum transactions before they're confirmed
A block explorer tells you what already happened. MEV, gas spikes and liquidations are decided in the seconds a transaction spends pending — which is why the mempool, not the chain, is where the signal lives.
- AI Infrastructure4 min read
Why your load balancer is wrong about GPUs
Least-connections assumes requests are interchangeable and concurrency degrades gracefully. On a GPU running an LLM, both assumptions are false — and the result is a tail latency nobody can explain.
- Blockchain3 min read
Your Ethereum RPC load balancer is serving stale data
A node three blocks behind returns a perfectly well-formed answer that is simply wrong. TCP-level load balancing cannot see the difference, and neither can your caller.
- DevOps4 min read
Don't give your AI agent SSH
The obvious way to let an agent help with infrastructure is to give it a shell. Here is what that costs, and what to build instead.
- Terraform4 min read
Your Terraform problem is a state layout problem
Teams blame Terraform for slow plans, scary applies and mysterious drift. Almost always the tool is fine and the state boundaries are wrong.
- Observability3 min read
Alert on symptoms, not on causes
Most alerting backlogs are full of resource thresholds that fire when nothing is wrong and stay silent when something is. The fix is to alert on what users experience.
- Blockchain5 min read
Erigon v3 performance tuning: the critical role of prune distance and 8k page size
Prune distance is crash tolerance, not disk tuning. Get it below the internal pipeline lag and a restart replays days of history. Pair it with 8k MDBX pages and the race disappears.