Welcome to my corner of the internet. This site is built with Hugo and the PaperMod theme, deployed automatically via GitHub Actions.
tmux Panes & Windows: The Bindings That Actually Matter
Most tmux guides dump the whole key table on you. These are the pane and window bindings that survive contact with a real workday: splits, navigation, layout, and the marked-pane tricks tmux never bound for you.
Huawei's Ascend 950 & DaVinci v3: How China Built a Competitive AI Chip Without EUV
DeepSeek just ordered 160,000 Huawei Ascend 950DT chips: a chip built on a DUV-only process, with self-developed HBM and a homegrown interconnect, because export controls left no other choice. Here’s how the thing actually works, and where it still falls short.
Making a Multi-Step SQL Server Script's Rollback Actually Trustworthy
When one step in a multi-step SQL Server script fails, what actually happens to your data depends entirely on how you’ve wired up error handling, and the default is not what most people assume. Three scenarios, measured with real ledger output.
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.
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.
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.
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.
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.
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.
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.