PostgreSQL Query Rewriting Techniques The previous articles in this series covered performance problems you fix by adding indexes, restructuring joins, or tuning memory. This one is about the queries where the plan is "fine" — every node is doing something reasonable — but the query itself is asking the wrong question, producing unnecessarily large intermediate results or forcing the planner dow
The Idea After deciding to build an iOS app using AI, the first thing I set out to create was a metronome app designed for dark stage environments. Back in college, I played drums — and while that was a while ago, there weren’t many metronome apps that felt both clean and professional. (Turns out, that’s still true today.) That’s what led me to the idea: a simple, black-and-white metronome where
This section is the map for the rest of the book. The five stages introduced in the 1.1 chapter overview (parse, analyze/rewrite, plan, portal, execute) are traced here through the actual code: which functions implement each stage, and in what order they get called. The mechanics of each of the five stages are unpacked in later chapters. Here, only the skeleton matters: how a backend starts up, ho
PostgreSQL Internals · Chapter 1 Query Processing Suppose a client sends SELECT * FROM users WHERE id = 1. The path that single line travels before coming back as a result row is longer than you might expect. Inside the PostgreSQL backend, that SQL goes through a five-stage pipeline. Backend entry and dispatch. The backend receives the message from the client and decides which processing path it s
I have a confession: I'm a productivity app addict. Notion, Todoist, Things, TickTick, Bear, Obsidian — I've tried them all. And every single one failed me in the same way. Not because they were bad apps. But because they let me add unlimited tasks. So I'd wake up Monday morning, open my to-do app, and see 47 items staring back at me. By 9am I was already paralyzed. Decision fatigue is real. When
I'm going to give you the comparison I couldn't find when I was choosing. Most "Claude Code vs Cursor" articles are either vibe-based or benchmarks that don't match solo indie dev workflows. I wanted something grounded in an actual multi-product project: 4 iOS apps, 5 distribution surfaces, 11 public repos, CI/CD across all of them. So I spent 14 days building exactly that — exclusively with Claud
It's a one-line item on the roadmap. "Send a push notification when X happens." Estimate is two days, three if the backend doesn't have FCM credentials yet. There's a library for it. The library is the visible part. The other 90% is platform lifecycle, registration state machines, race conditions with navigation, payload archaeology, and a half-dozen iOS and Android quirks. Nobody writes them down
SQL is widely known for data querying and manipulation but systems do grow; data becomes larger; processes become repetitive and operations become sensitive. SQL has some features which enables it to be considered a fully fledged programming language. Some of the features which I discuss in this article are procedures, functions and transactions. Each of these concepts serve distinct purposes. Sto