
PostgreSQL for AI
Build intelligent applications with pgvector, RAG and in-database ML
1,065 pages · 13 chapters + capstone · 500+ readers · from $29
Loading...
Most of the interesting problems don’t belong to one layer. They show up somewhere between product logic, data, infrastructure, and whatever the system decides to do once real users arrive. That’s usually where I end up.
I’ve spent years moving between frontend, backend, databases, queues, delivery pipelines, and edge infrastructure. Some days it’s a new feature. Other days it’s following a strange production bug through half the stack, deleting a dependency, or replacing an abstraction that became harder to understand than the problem itself. Good software should be predictable, easy to debug, and not need a manual just to keep running.
A lot of things I’ve built started with the same thought: this shouldn’t be this hard. The answer is rarely another platform. Find the real constraint, keep the surface area small, make the trade-offs obvious, ship it.
This site is where I keep the work and ideas worth sharing. Notes from production, things I’m figuring out, and the occasional deep dive into a problem that wouldn’t leave me alone.
the one I wrote. postgres, all the way down.

Build intelligent applications with pgvector, RAG and in-database ML
1,065 pages · 13 chapters + capstone · 500+ readers · from $29
things i build when something annoys me.
Mask sensitive values in config files during screen sharing. Supports .env, JSON, YAML, TOML, XML, Terraform/HCL, Dockerfile, and more. Zero file modification - uses Neovim extmarks.
Camouflage is a VS Code extension that helps protect sensitive environment variables by hiding their values in .env files
PostgreSQL extension for reliable async message delivery (HTTP, Kafka, MQTT, Redis, AMQP, NATS) using the transactional outbox pattern.
Rust for TypeScript & JavaScript developers — a free, open-source guide that teaches Rust by mapping every concept to the TS/JS you already know.
Portable, open-source Agent Skills that give coding agents senior-engineering judgment to design, implement, review, and investigate software changes. Language- and framework-agnostic, with ready-to-install plugins for Claude Code and Codex.
A CLI tool to record, replay, and export terminal sessions
Recent 3 posts, worth a look.
A major version upgrade with a write pause measured in seconds, not an outage measured in hours. The plan, the preflight queries that catch what will bite you, building the new cluster from a standby with pg_createsubscriber, the sequence trap, schema changes during the window, the cutover script through PgBouncer, a rollback you can actually take, and what PostgreSQL 19 removes from this list.
A working x402 paywall on a Next.js blog, from the 402 header to the settled USDC: what the protocol really sends, which facilitators settle on mainnet, the three things that break in a browser and the signed cookie plus one line of JavaScript that fix them, and the leaks you have to close before you charge anyone.
The transactional outbox solves the dual write problem and then hands you a second one: a relay service that has to be deployed, watched and kept pointed at the right database. ulak moves the relay into PostgreSQL as background workers. This is how it claims, delivers and recovers, and the trade it asks you to accept in return.