Thoughts
52Notes on software engineering, distributed systems, and the future of human productivity.
A stopped container frees memory but drops its route. WOC, a small Go proxy, keeps the route up, wakes the app on the first request and sleeps it again.
A distance formula that only shortlists can be as wrong as its speed allows. Choosing between three hinged on a number that runs opposite to throughput.
For eighteen years S3 couldn't tell two writers apart. In August 2024 it learned to refuse a write, and systems began moving commit logs into buckets.
Resets, invoices and support replies still arrive by email, and my agents live on HTTP. Mailingest is my Rust mail platform where an inbox is one API call.
WhatsApp's native protocol skips the headless browser but hands you a raw socket and a firehose of events. whatsweb is the thin layer that makes it a bot.
Same bot: a few lines on Telegram, a gateway and intents on Discord, a headless browser posing as a phone on WhatsApp. The hard part was never the bot.
My agents write code nobody reads, then want to run it. So each run gets a Firecracker microVM on a box I own, bounded by a guest kernel, not a promise.
Fifteen identical repository files and thirty as-any casts in an ORM sold on type safety. Better Drizzle exists because everyone writes that layer by hand.
Fluid compute stops billing the I/O wait serverless charges in full. It's a worker pool and a cgroups v2 counter, so I rebuilt what I could on my own box.
I forked VecPuff to keep one bit per dimension resident, so search over vectors in S3 fetches one in full only when the cheap guess is too close to call.
This article is also a plain markdown file, a .md away: content negotiation that serves the same writing to people and to machines from one source.
Exact-match blocklists miss a bot farm that changes one field per request. MinHash and LSH ask "have I seen something shaped like this" in sublinear time.
Taking a payment is four lines. Making a retry never double-charge and a lost webhook never lose an order is the real work. How I shaped Paybit's API.
A payment processor holds your money for a moment. Paybit deletes that moment: a non-custodial crypto gateway that splits every payment on-chain.
A price on a page is a fact someone paid to produce, public for anything to copy. I'm building an anti-bot seal to change what that copy costs.
A no-login emoji bar that counts strangers' clicks and still trusts the total: two disposable identities, a row only you can write, and a live SSE stream.
How a modern PaaS turns a git push into an immutable deployment, from cold starts to Fluid compute, and how to rebuild the same machine on a VPS you own.
How modern anti-bot systems work in 2026, from TLS and HTTP fingerprints to obfuscated client probes, server-side ML scoring and tokens that last seconds.
Turning a seed into something that reads like a film reduced to color: seeded noise, OKLCH, a texture model, and a demo you can drive.
How pablofr.com is built: three services, Postgres, Meilisearch and Redis, one work queue and a lot of SSE. A personal site over-engineered on purpose.
Protomarc marks images, video, audio and PDF so a file can prove who owns it and, if it leaks, point back to whoever it was given to.
Why I encoded a whole VPS as one Go CLI, pfrctl, instead of renting a PaaS or running a heavy self-hosted panel, and where that trade-off pays off.
Deterministic avatars from a username, first as ordered-dithered identicons, then as halftone dot fields where the dot size does the drawing.
Victor Vasarely's Vega-Nor rebuilt as a pure TypeScript function: OKLab paint ramps, an area-conserving spherical warp, and colorways from a seed.