Blog

Notes on my day-to-day as an engineer, my story, and the specific things I learn along the way. For deliverables and client work, head to Projects.

How a lack of judgment turns an upgrade into a downgrade

Video · Engineering judgment

How a lack of judgment turns an upgrade into a downgrade

A rate-limiting ticket, an implementation that is technically correct, and a corporate customer behind a NAT. The problem was never the code.

Rate limiting Redis WAF · API Gateway Idempotency System design
Read more
Running AI models on your phone is possible

Tech experiment · ChacharApp on iOS

Running AI models on your phone is possible

Whisper turbo transcribing locally, on an iPhone, with the audio never leaving the device. It can be done... But it comes at a cost.

Whisper turbo Core ML · ANE Swift · iOS ChacharApp
Read more
Code comments in the AI agent era

Tech essay · The why, not the what

Code comments in the AI agent era

Code is now mass-produced, and the reader spending the most time on it is an AI agent. I built an entire app with one, in a language I don't master, and the result forced me to rethink the old rule that code shouldn't be commented.

Claude Code Swift · SwiftUI Why-comments ADRs Chesterton's fence +1
Read more
Betting on yourself is the best investment you can make

Reflection · Why I decided to go freelance

Betting on yourself is the best investment you can make

Just having faith that things will work out isn't a strategy.

Self-employment Compound interest Transversal knowledge Hope ≠ strategy Evidence > narrative +3
Read more
The four cells of the harness A 2×2 matrix. Rows are Feedforward (before the step) and Feedback (after the step). Columns are Computational (the code decides) and Inferential (the model decides). Each cell carries a combined label in bold and a spoken motto in italics at the bottom: guides · deterministic "this is always done this way", guides · semantic "think about it this way", sensors · deterministic "this is broken — look here", sensors · semantic "this smells off — are you sure?". Each cell also lists concrete instances in monospace. The four cells of the harness Computational Inferential Feedforward Feedback guides · deterministic PreToolUse hooks allowed-tools per agent permission allowlists schema · scope guards "this is always done this way" guides · semantic CLAUDE.md · project rules ADRs · decision records skills · agent frontmatter specs (OpenSpec, etc.) "think about it this way" sensors · deterministic build & tests type-check · lint PostToolUse hooks spec validate "this is broken — look here" sensors · semantic adversarial review reviewer subagent structured diagnostics lesson capture "this smells off — are you sure?"

How I run agents today · hooks, specs, subagents

Harness Engineering — the code that surrounds the agent

An LLM is non-deterministic, so the critical rules have to live outside the agent, in code the agent cannot rewrite.

Claude Code Hooks (PreToolUse / PostToolUse) Subagents OpenSpec Skills +2
Read more