Technical deep-dives, lessons learned, and takes on engineering culture. The full text of every piece lives here. Some were written for this site; others first ran on DEV.to, Substack, or Medium.
Lambda's per-invocation pricing wins for spiky or low traffic, but past a breakeven point an always-on EC2 or Fargate instance is cheaper. How to find the invocation volume where that flips, and why concurrency caps are the planning problem serverless doesn't remove.
A React single-page app ships the same empty HTML for every route. Here is how I found out my own site was doing it, the indexing bugs I tripped over fixing it, and what actually moved the needle versus what just took time.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.