All DevLogs
Replacing the Autoscaler with a CPU Gate
The autoscaler scaled up into failures. The fix was stopping execution before it started.
Hardening the Admin Panel: Auth, Security, and a Real Build Pipeline
sqladmin gives you a CRUD interface. It doesn't give you auth, a real dashboard, XSS protection, or a reproducible asset pipeline. Here's what it took to add all of that.
Wrapping the Video Pipeline in a Queue Service
The pipeline works on GPU in ~5 minutes. Synchronous generation still doesn't. How a Redis queue, FastAPI, and persistent workers turn a video pipeline into a usable service.
Replacing n8n's Deprecated Execute Command Node
When n8n deprecated the Execute Command node, I needed another way to run shell scripts from workflows. FastAPI already had the right permissions — so I built a custom node that routes execution through it.
Three Models, One Face: Finding What Actually Works on MPS
Why the first output looked right and felt wrong — and how evaluating Wav2Lip, SadTalker, and LivePortrait in sequence led to splitting the problem in two.
Building a Year Dot Navigator
A fixed right-side dot navigation for year-grouped content — inspired by a timeline component I built at Google for the Sustainability Refresh project. Five-pixel dots, hover labels, and a scroll that centers the year in the viewport.
Building an AI Agent That Knows My Blog
How I wired up a RAG-powered chat agent using n8n, Supabase vector store, and Gemini — so visitors can ask questions and get answers directly from my writing.
Automating Blog Ingestion into the Vector Store
How I built an n8n pipeline that reads my RSS feed, checks what's new or updated, and syncs only the changed content into Supabase for the RAG agent to use.
Redesigning PageAside: From Wrapper to Real Sidebar
The original PageAside was a styled shell with no behaviour. Getting collapse-to-icon-rail working required rethinking the API, moving from children to an items array, and solving a gap timing problem in pure CSS.
Building a CPU-Aware Autoscaler
Why static concurrency doesn't work for CPU-bound workloads, and how asymmetric EWMA — fast to react to load spikes, slow to forget them — solves the oscillation problem that naive autoscalers always hit.
Animating a Modal with GSAP in React
The trick to smooth modal exit animations isn't a better animation library — it's never unmounting the modal in the first place. Here's how play() and reverse() on a single GSAP timeline make enter and exit animations two sides of the same thing.
Starting advi-ui: The First Decisions
What day one of building a personal React component library actually looks like — the tool choices, the build setup, and what you decide to build first when starting from a blank repo.
Queue Mode and the Concurrency Lie
n8n's queue mode solves the duplication problem: one main instance, workers that just execute. But its concurrency is a job count, not a resource limit — useless for CPU-bound workflows.
The CPU Wall: When One Server Isn't Enough
Video and audio workflows hitting 100% CPU on a Contabo server, bringing everything else down with them. Why adding more n8n instances looked like scaling but was actually just copying the problem.
More on the way
This is a living record of what I'm building — new entries added as projects evolve.