Loading
Loading
Thoughts on AI-augmented development, engineering leadership, and building scalable software.
Generation got cheap, judgment didn't: where the engineering bottleneck actually moved
August 11, 2026
From AI skeptic to a working division of labor: the model drafts, guardrails check, a human decides
August 5, 2026
What AI-enabled actually means for an engineering team
July 31, 2026
The missing pieces in stalled AI adoption are process, not model quality
July 29, 2026
How AI-augmented development workflows enabled managing 6 concurrent engineering clients across different agencies without sacrificing quality.
January 28, 2026
Open to work, the capstone ask
August 28, 2026
What a dozen live products taught me about tradeoffs
August 27, 2026
I ship vertical slices, not layers
August 26, 2026
From match-score to hire, the full loop
August 25, 2026
The boring discipline that makes me fast
August 24, 2026
Open to work, remote, senior, full-stack
August 21, 2026
Animal biometric ID, pluggable embeddings
August 20, 2026
A full production database recovery, and the boring safety net that made it possible
August 20, 2026
Double-entry ledger for agent-to-agent payments
August 19, 2026
Reuse as a hiring signal (contrarian)
August 18, 2026
Debugging is the slow part AI hasn't touched, and it's widening the gap between engineers
August 18, 2026
Typed wire contracts to Python sidecars
August 17, 2026
Open to work, what my week 1 looks like
August 14, 2026
I dogfood, ApplyPulse finds my own jobs
August 13, 2026
Apple rejected my app, and the reason was fair
August 12, 2026
Self-hosted computer vision (ALPR) at the edge
August 11, 2026
LATAM e-invoicing nobody wants to build
August 10, 2026
What an AI-assisted security audit found, fixed, and deliberately left for a human
August 10, 2026
Open to work, hire the platform thinking not just the dev
August 7, 2026
Multi-tenant from day one
August 6, 2026
The 50-line adapter rule
August 5, 2026
Every external input is adversarial
August 4, 2026
One backend, 13+ apps, contract tests
August 3, 2026
Open to work, the 3 roles I'm built for
July 31, 2026
One core, web and React Native, no rewrite
July 30, 2026
A payment state machine that can't double-spend
July 29, 2026
83 shared libraries without breaking apps
July 28, 2026
Swapped a commercial vendor for OSS behind an interface
July 27, 2026
Open to work, proof of weekly output
July 24, 2026
Money as integers, fiscal-core e-invoicing
July 23, 2026
Treating scraped job posts as adversarial input
July 22, 2026
20+ apps, one monorepo, one reuse discipline
July 21, 2026
I built the AI that matched me to your job
July 20, 2026
Implementing an AI-powered code review pipeline using git hooks and the Claude API that catches 73% of issues before human review.
February 5, 2026
How I went from a 2,300-line orchestrator to a composable multi-agent system using TypeScript, YAML configs, and factory patterns.
January 15, 2026
What a real senior engineer owns in the first 30 days, and how to tell early
August 31, 2026
A recruiter-friendly playbook for screening senior engineers for judgment, not memorization
August 28, 2026
The real mid/senior line is decision authority, and job descriptions never mention it
August 17, 2026
Why algorithm interviews test for a job that doesn't exist, and what predicts who's good
August 7, 2026
Seven years of remote-first engineering from Costa Rica, and what distributed teams actually require
August 6, 2026
A resume asks you to trust; proof of work lets you check
August 3, 2026
Why a portfolio should be checkable proof of work, not a prettier CV
July 23, 2026