When a Wildcard Join Multiplies Your Data (and How to Actually Fix It)

A join rule that matches ‘anything’ looks like an ordinary filter, until it quietly multiplies your row count. Measured, not estimated: what a wildcard join actually costs, why a CREATE INDEX line doesn’t always buy you a seek, and why UNPIVOT beats a ten-way OR chain.

September 5, 2026 · 9 min · Hanh Pham

Go 1.27 Is Quietly Load-Bearing

Generic methods finally landed, json/v2 is already running underneath your code, and the allocator got faster while you weren’t looking. Six of this release’s changes take effect without you opting in; here’s which ones will cost you an afternoon.

September 4, 2026 · 12 min · Hanh Pham

Designing an Order Workflow: Putting the Patterns Together

Boundaries, communication styles, technology, and sagas all sound reasonable in isolation. Here’s what it looks like to actually apply all four decisions to one real workflow, in order.

September 3, 2026 · 7 min · Hanh Pham

Agentic Coding Assistants, and Why I Don't Let Them Grade Their Own Work

“Agentic” gets thrown around loosely, but it means something specific: an assistant that decides its own next step instead of waiting for yours. That’s also exactly why you can’t trust it to tell you when it’s done a good job; here’s the verification habit that fixes that.

September 2, 2026 · 8 min · Hanh Pham

When Two-Phase Commit Isn't the Answer: Sagas for Microservice Transactions

Splitting a monolith means splitting its database transactions too. The instinct is to reach for a distributed transaction. Here’s why that instinct is usually wrong, and what to do instead.

September 1, 2026 · 9 min · Hanh Pham

How I Started Learning Reverse Engineering (and What I Wish I Knew First)

I spent my first month with Ghidra staring at assembly I didn’t understand, convinced I was too stupid for this. Here’s the honest version of how I got from ‘what is a register’ to solving CTF reversing challenges, and the mistakes that cost me weeks.

August 29, 2026 · 7 min · Hanh Pham

Anti-Debugging Tricks: When the Binary Fights Back

Some binaries detect that you’re debugging them and crash, change behavior, or hide the flag. This post covers the common anti-debugging techniques and how to bypass them.

August 27, 2026 · 5 min · Hanh Pham

Custom VMs in CTF: When the Binary Speaks Its Own Language

Some CTF reversing challenges hide the flag behind a custom virtual machine: a program that interprets its own bytecode. This post shows you how to spot them, reverse the instruction set, and write a solver.

August 25, 2026 · 6 min · Hanh Pham

Your First Crackme: A Walkthrough from strings to Flag

A crackme is a small binary that asks for a password and checks your input. This post walks through solving one, from downloading the binary to extracting the flag, with every tool click explained so you can follow along.

August 22, 2026 · 6 min · Hanh Pham

REST, gRPC, GraphQL, or a Broker: Picking Your Communication Tech

The communication style (sync/async, request-response/event-driven) narrows the field. Here’s how the actual technologies stack up once you’re choosing among them.

August 20, 2026 · 9 min · Hanh Pham