Blog archive
222 of 222 articles
Query Federation: A Practical Guide to Modern Data Virtualization
How to query everything without moving anything Why This Matters Every growing engineering org eventually hits the same wall: data ends up scattered across a relational database here, a warehouse there, a pile of Parque…

Stop Picking an AI Model. Start Picking a Capability.
Why I built a gateway that routes coding agents by job, not by vendor

How I Made a Chatbot With My Knowledge: Turning My Technical Articles into a GraphRAG Assistant
As software engineers, our personal blogs and notes often end up as chronological archives — hundreds of Markdown files, JSON payloads, and code repositories scattered across years of work. Traditional vector search…
Me Against Myself: From Rebellious Idealism to Pragmatic Systems Thinking
From "your system is not open source" to "how can I change your system's properties" I have spent twelve years arguing with people who build closed systems. I did not notice, until recently, that the longest, most exhau…

Unified AI Orchestration: Setting Up 9router, Model Combos, and Cline in VS Code
When working with autonomous coding agents like Cline, managing multiple upstream AI providers — such as Google AI Studio, OpenRouter, and premium OAuth subscriptions — quickly becomes a maintenance bottleneck. Rate…

Complete Technical Migration Strategy: Migrating Legacy Django Auth to Keycloak & OpenFGA via ETL
A production-ready, four-phase ETL strategy for migrating legacy Django authentication to Keycloak and fine-grained authorization to OpenFGA.

From 3NF MySQL to Fast Search: Building a CDC-Powered Read Model
Normalized MySQL is great for writing data correctly. It’s not great for serving it fast. Once a project entity spans tasks, members, documents, orders, and comments, every “project overview” request turns into a wall o…

Architecting Search Engines: A Deep Dive into Meilisearch Internals, Vector Retrieval, and Algolia
The design of application search has undergone a fundamental transformation over the past decade. Traditionally, software architectures relied on either SQL relational string operations (LIKE '%term%') or heavy analytic…

Architecting an Open-Source Search Engine: From Algolia Internals to Vector Similarity and Qdrant
High-performance discovery platforms demand sub-50ms query latency, search-as-you-type prefix matching, real-time data synchronization, and semantic vector retrieval. Commercial SaaS solutions like Algolia have long dom…
How an AI Prompt Turned a Complex Multi-Database ETL Project Into Hours of Work
In large organizations, data rarely lives in one place. Some information is stored in Oracle databases, while other datasets live in PostgreSQL.

When Your Domain Talks to Stripe, A DDD Cautionary Tale
A real-world dissection of a circular dependency in a billing module, and how Domain-Driven Design gives you the vocabulary — and the tools…

How I Use AI to Build Production-Ready GraphQL Resources Faster
A practical workflow with Go, PostgreSQL, sqlc, gqlgen, and architecture-aware prompting

Authentication & Authorization: RBAC, ReBAC, ABAC, and PBAC Explained
From “who are you?” to “what can you do?” — a complete guide to modern access control models, with real examples using CASL, Keycloak, and…
Git Reset: Recovering From Unstable AI Code Contributions
The rise of AI-powered development and "vibe coding" has dramatically changed how we build software. Today, tools like GitHub Copilot, ChatGPT, Claude, Cursor, and other AI assistants can generate features, fix bugs, an…

Keycloak + OpenFGA: A Practical Integration Guide
Learn how to combine Keycloak authentication with OpenFGA’s relationship-based authorization to build scalable, fine-grained access control for modern applications.
Deploying a Lovable (TanStack Start) App with GitHub Actions — the Real Story
Deploying a Lovable (TanStack Start) App with GitHub Actions — the Real Story Lovable is a great way to scaffold a TanStack Start app fast. But the moment you want to ship it yourself — on your own domain, through your…

How Domain Boundary Violations Slowly Destroy Your Codebase
Have you ever opened a “service” file and seen it reach deep into three or four other domains? Ever had to add a workaround like…
The Entity You Modeled Isn't the Entity That Persists
A recurring architectural mistake — and the state machine pattern that fixes it. A pattern you've probably seen before There's a particular kind of mess that shows up in almost every system that models a multi-stage bus…
One Door, Two Mechanisms: When Your Domain Model Quietly Forks Itself
I want to talk about a bug that, on the surface, looked trivial. An endpoint was missing.
Understanding Server-Sent Events (SSE): Architecture, Authentication, and Testing in NestJS
Introduction Modern web applications often need real-time communication. Examples include: Notifications Chat applications Live dashboards Stock prices Progress tracking Monitoring systems Most developers immediately th…