Open to Work: Senior Backend & Distributed Systems Engineer (Go / Python) View LinkedIn →

Engineering

Technical Journal // Engineering
Mar '26

ClickHouse vs. Postgres: When to Move Your Logs Out of a Relational DB

Postgres is the swiss-army knife of databases, but when you hit the 10-million row mark for write-heavy logs, the relational wall becomes real. Here is why we moved our observability stack to ClickHouse.

Mar '26

WSL2 Is Slow? Fix /mnt/c/ File System Performance & Go Latency

Why is WSL2 so slow? Understand the 9P filesystem boundary, why /mnt/c/ degrades Go build times, and how to fix WSL2 performance bottlenecks on Windows.

Mar '26

AI Coding in 2026: Productivity Multipliers vs. Skill Replacements

Two years of coding with AI every day: what actually saves time, what creates hidden debt, and why your fundamentals are your only real defense against hallucinated correctness.

Feb '26

Fast Docker CI: Stop Rebuilding Container Images on Every Commit

Rebuilding multi-stage Docker images on every code change wastes minutes and cache. How to decouple build dependencies from runtime containers for instant feedback.

Feb '26

Python Background Workers: Architecture, Queues, and Retry Strategies

Learn how to build production-ready Python background workers that scale under load. Covers worker pools, queue architecture, retry strategies, idempotency, and graceful shutdown.

Jan '26

Go Struct Field Alignment: How Memory Padding Wastes Your RAM

How CPU word alignment and struct field ordering silently inject memory padding in Go. Learn field reordering to cut heap memory allocations and cache misses.

Jan '26

I Added Session Management to Aider

Aider is my favorite AI coding assistant. It lives in the terminal, commits directly to Git, and actually understands my codebase. But it was missing one thing: the ability to save and restore chat sessions. So I built it. The PR never got merged, but I've been running my fork for months now. Here's the story.

Jan '26

Can ClickHouse Replace Vector Databases? HNSW, Benchmarks & SQL Setup

Can ClickHouse replace dedicated vector databases like Pinecone, Weaviate, or Milvus? Explore HNSW indexing, vector similarity search performance, and how to store embeddings with SQL in ClickHouse.

Jan '26

Memory Mechanics In Go - Stack vs Heap

When thinking about performance, it's easy to focus on Big O notation. But in Go, the difference between the Stack and the Heap is often the difference between a service that scales and one that chokes on GC pauses. This post explores escape analysis, the "Pointer Myth", and why passing by value is often 40x faster than passing by pointer.

Jan '26

OLTP vs OLAP - Why You Need Two Databases

"The database that runs your app cannot be the database that analyzes your app". It's a hard lesson learned at scale. Early on, Postgres does it all. But as you hit massive scale, your analytics queries start killing your login APIs. This post breaks down the physics of Row-oriented (Couchbase) vs Column-oriented (ClickHouse) databases, and how to bridge them using Change Data Capture (CDC) for a robust, lag-free architecture.