Aug 9, 2026 · 2 min read
Adding server-side conversion tracking for an e-commerce client's checkout meant revisiting a cookie banner shipped weeks earlier — and finding it didn't cover half the tracking.
Privacy Next.js API Routes
read more Aug 7, 2026 · 1 min read
Built and shipped several production payment integrations this year — checkout flows, webhook handling, and signature verification.
Payments API Design
read more Aug 5, 2026 · 1 min read
A year of writing TypeScript across several real codebases taught me that a green compiler is not the same thing as correct code.
TypeScript Software Design
read more Aug 3, 2026 · 2 min read
Payment webhooks fire more than once for the same event. Design for it, or your customer gets charged and your order gets duplicated.
Payments Webhooks API Design
read more Aug 1, 2026 · 1 min read
Spent time this year working with Firestore in production — transactions, security rules, and staying consistent under concurrent writes.
Firestore NoSQL Data Modeling
read more Jul 30, 2026 · 2 min read
A payment component built for a nonprofit client's donation campaign ended up handling checkout for two unrelated business lines, through a single new prop.
React Component Design Firestore
read more Jul 28, 2026 · 1 min read
Shipped several production apps on Next.js's App Router this year — server components, route handlers, and a new mental model.
Next.js React App Router
read more Jul 26, 2026 · 2 min read
The function's declared signature and its actual runtime behavior had quietly diverged, and nothing caught it until a test exercised the string branch.
TypeScript Testing Vitest
read more Jul 24, 2026 · 1 min read
A good chunk of this year went into hardening GitLab CI pipelines that touch real infrastructure.
GitLab CI CI/CD Reliability
read more Jul 22, 2026 · 2 min read
A checkout modal shipped looking complete on desktop. Two separate bugs only showed up on an actual phone.
Tailwind CSS Mobile UX Responsive Design
read more Jul 20, 2026 · 1 min read
Got deep into Kubernetes backup and recovery this year — Velero, MinIO, and restore automation triggered through CI.
Kubernetes Velero MinIO
read more Jul 18, 2026 · 2 min read
A route rename looked complete the moment every file moved. Two commits later, CI failed on a file that had nothing to do with the rename.
TypeScript Next.js CI/CD
read more Jul 16, 2026 · 1 min read
Spent time this year writing Ansible for tasks with real consequences — remote account management and service restarts on live boxes.
Ansible Automation SSH
read more Jul 14, 2026 · 2 min read
The live site showed the framework's default starter page. Nothing to do with the framework, the host, or environment variables.
Next.js Git Deployment
read more Jul 12, 2026 · 1 min read
Spent real time with HashiCorp Vault this year — dynamic secrets, KV engines, and CI pipelines pulling credentials at runtime.
Vault Secrets Management CI/CD
read more Jul 10, 2026 · 2 min read
A router redirect sitting inside a normal-looking auth check violated React's render rules — and only surfaced on the one flow that hit it live.
React Next.js Auth
read more Jul 8, 2026 · 1 min read
Spent time this year building automation that rotates privileged credentials across enterprise infrastructure platforms, including NSX-T.
NSX-T Automation Infrastructure
read more Jul 6, 2026 · 2 min read
A stock-decrement function passed code review and every single-item test. It only broke once a real customer put two items in their cart.
Firestore Concurrency Node.js
read more