SubstackAugust 2026
A story about being paired with a senior engineer who spent a refactor sprint building a spreadsheet, a manager who wouldn't name a lead, and the five leadership lessons that came out of being told I was too junior to see what he saw.
Read the notes & link →MediumSubstackJuly 2026
What it was actually like to sit in twice-a-year stack-ranking calibration meetings with a forced X% Below Strong bucket, how a leave gap in someone's record got handled (or didn't), and why the Meta AI-ranking lawsuit is a predictable outcome.
Read the notes & link →SubstackJuly 2026
Two scoring systems shipped in the same week: Substack's Pangram AI-writing detector and Meta's layoff-ranking that ignored protected leave. Both removed a human from a judgment call, and when the machine is wrong, the burden of proof lands on the person it misjudged.
Read the notes & link →SubstackJuly 2026
A daily player's teardown of Pokémon GO as a working example of uncreative engineering that shipped anyway and printed money for a decade: a reskin of Ingress, a strategically hollow default battle loop, a gym system that was patched around rather than fixed, and AR that's off by default.
Read the notes & link →SubstackJuly 2026
A 42-minute recording was 3GB on Windows and 7GB on Fedora from the same webcam. The cause: Chrome falling back to software H.264 encoding because Fedora's stock Mesa strips patented H.264 support. Here's the five-minute diagnostic and fix.
Read the notes & link →SubstackJuly 2026
AWS put a billion dollars behind Forward Deployed Engineering, so the Palantir model of dropping vendor engineers into your codebase is now a default. Three questions to ask before you sign, all pointing at one thing: a running system is not an understood system.
Read the notes & link →DEV.toJune 2026
A real incident where tenant secrets landed in production logs, traced through f-string exception messages and framework-generated __repr__. The fix is making sure the sensitive object never serializes its secrets in the first place, with a logging filter as backup.
Read the notes & link →SubstackJune 2026
Two junior engineers spent two days at a whiteboard reinventing the do-while loop in assembly. We knew what a do-while was. The gap wasn't the concept, it was the index: the connection between knowing something exists and reaching for it in the moment.
Read the notes & link →MediumSubstackJune 2026
A Costco run as a full distributed-systems walkthrough: the membership card is authentication, the sample station is a rate limiter, the receipt checker is egress validation, the food court is a post-commit side effect, and the casket they'll ship to your door is microservice sprawl.
Read the notes & link →DEV.toSubstackJune 2026
The Neon Scratch Lounge is a playable cyberpunk RPG where the game runs as a visible distributed system. Every turn walks through RAG, structured retries and idempotency, execution guardrails, structured observability, and persistent state, so you watch the production-AI patterns instead of reading about them.
Read the notes & link →MediumJune 2026
The engineer who always figures it out becomes the reason the real fix never gets built. A look at the fixer identity, the competence trap, how careful work becomes invisible, and why 'just say no' is incomplete advice.
Read the notes & link →DEV.toMay 2026
Four mental models for serverless past the deploy-a-Lambda tutorials: it has real limits, stateless is not the same as simple, failure domains are the actual value, and you only understand it once you've deliberately broken it.
Read the notes & link →MediumMay 2026
A 40,000-line, 200-file 'bugfix' PR from a non-technical co-founder who spent a weekend with an AI tool. Accountability debt is the gap between who captures the efficiency win and who owns the system when it breaks, and those are almost never the same person.
Read the notes & link →DEV.toMarch 2026
DarkRoom is a proof-of-concept multi-camera podcast editor that runs on your machine, not someone's cloud. Whisper transcribes locally, Claude turns the transcript into an edit decision list, FFmpeg renders the cuts, and every artifact is readable JSON you own.
Read the notes & link →DEV.toNovember 2025
A hackathon build log for a kid-friendly coding game made with Kiro, the agentic IDE. What steering documents, agent hooks, and spec-driven development actually felt like in practice, and where the hybrid of specs and vibe-coding worked best.
Read the notes & link →DEV.toMediumAugust 2025
A build log for an AI Dungeon Master that runs a persistent tabletop RPG on fully serverless AWS. Bedrock Agents does the storytelling, Lambda action groups handle the game mechanics, DynamoDB holds the memory, and CDK wires it all up for about $1-5 a month.
Read the notes & link →DEV.toMay 2025
Step-by-step for pointing a domain you registered through Squarespace at a site hosted on GitHub Pages: the CNAME file, the four A records for GitHub's IPs, the www CNAME, and the DNS propagation wait.
Read the notes & link →DEV.toMediumApril 2025
Advice for anyone staring down 200-plus AWS services and not knowing where to start. Learn a small core first, build something real early, use the free tier without getting a surprise bill, and treat certs as a map rather than the destination.
Read the notes & link →DEV.toMarch 2025
The case that cloud and AI literacy isn't just for engineers anymore. How these technologies already run through film, education, healthcare, marketing, and agriculture, and why you can be cloud-literate without writing a line of code.
Read the notes & link →DEV.toMarch 2025
Part 4 of the multi-region serverless series: giving every region its own low-latency copy of the data with DynamoDB Global Tables. How to set replication up, how region-aware reads and writes work, and what last-writer-wins conflict resolution actually means for you.
Read the notes & link →DEV.toFebruary 2025
Part 3 of the multi-region serverless series: putting regional API Gateway endpoints in more than one region and letting Route 53 send each caller to the closest healthy one, with health checks and failover routing for when a region goes dark.
Read the notes & link →DEV.toFebruary 2025
Part 2 of the multi-region serverless series: getting the same Lambda deployed to several AWS regions and keeping it that way. Infrastructure-as-code with provider aliases, a CI/CD pipeline that ships to every region, and versions plus aliases for safe rollouts.
Read the notes & link →DEV.toFebruary 2025
The opening piece of a series on running serverless apps across AWS regions. Deploying Lambda and API Gateway everywhere, latency-based routing with Route 53, DynamoDB Global Tables for replication, and the three tensions (consistency, complexity, cost) you take on to get there.
Read the notes & link →DEV.toJanuary 2025
Fifteen Git commands that go past add, commit, and push: undoing a commit without losing work, partial stashes, interactive rebase, reflog branch recovery, git bisect, empty commits to poke CI, and aliases to save your fingers.
Read the notes & link →DEV.toJanuary 2025
The three AWS messaging services people mix up: SNS for pub/sub fan-out, SQS for durable queued work, EventBridge for rule-based event routing. What each one is actually for, and the hybrid patterns (SNS plus SQS, EventBridge plus SQS) that combine them.
Read the notes & link →DEV.toJanuary 2025
Where API keys and database credentials should live in a serverless AWS app. Secrets Manager vs SSM Parameter Store, fetching secrets at runtime from Lambda, and the habits (least-privilege IAM, KMS encryption, rotation, never logging secrets) that keep them safe.
Read the notes & link →DEV.toJanuary 2025
A practical intro to role-based access control. Why you assign permissions to roles instead of to users, how to design the roles, where to enforce the checks in code, and the failure modes (role sprawl, super-roles, no audit trail) that quietly undo the whole thing.
Read the notes & link →DEV.toFebruary 2023
How to get an email when a Lambda function starts failing. A CloudWatch alarm on the Errors metric wired to an SNS topic, built once by hand in the console and once as infrastructure-as-code in serverless.yml.
Read the notes & link →DEV.toFebruary 2023
Two ways to run an AWS Lambda function on a schedule: click it together in the console with an EventBridge trigger, or declare it in serverless.yml. Plus how rate() and cron() expressions actually differ, and how to confirm the thing is really firing.
Read the notes & link →