Writing
The work, as it happened.
Timeline-accurate posts written from the moment in time they occurred — no hindsight, no retrospective polish. The constraints, decisions, and outcomes as they were.
How we cut an 11.9s synchronous asset upload to under 2s by moving the WhatsApp BSP call off the request thread — and what the frontend had to absorb as a result.
Replacing BrowserStack's revenue-critical checkout page — migrating from a Ruby on Rails app to React, the constraints that shaped the approach, and what it feels like to sit in QA knowing you just replaced the thing that makes the company money.
How we built a multi-agent CI pipeline — Claude, CodeRabbit, and GitHub Actions — that takes a breaking-change doc and delivers a merge-ready PR. No engineer sitting in the loop. A human opens the PR and a human merges it. Everything in between is agents.
What actually changes when you move a team from ad-hoc AI tool usage to a structured methodology — the gains, the friction, and the signal that tells you it's working.
I built a Chrome DevTools extension to eliminate two daily friction points for my team: API debugging across page navigation, and assembling PR comments for AI-assisted code review.
How we upgraded RabbitMQ 3.8 to 4.1 across three Node services using an aliased V1/V2 connector — making each service migration independent, rollback-capable, and boring at go-live.
Built a Slack bot without a Slack App — reverse-engineering the internal browser API and routing through Google Apps Script to ship in a day instead of waiting weeks for IT approval.
How I built CapVision in a day — a UI automation observability platform that embeds session recordings, console logs, and network traces directly into WDIO test reports — because CI failures were costing us 4–6 hours each and we had nothing to debug them with.
How we built a four-agent PHP-to-React migration system in 48 hours at an AWS hackathon — and why the architecture that didn't place in the top three ended up migrating Capillary's entire legacy PHP surface.
How I killed a 2–3 minute build-publish loop for internal npm packages with a 50-line webpack plugin — and why the solution required understanding webpack's file watcher, not its HMR APIs.
A test fails in CI. The report says: failed. I built CapVision to fix that — embedding rrweb session replay directly into WDIO test reports, with no external service required.
How I built a pricing sub-version framework at BrowserStack that cut dev and QA cycle time 50% — and why the problem was architecture, not velocity.
Two open-source tools I shipped this month — tracelane (replay a failed end-to-end test as one self-contained HTML file) and peek (give your AI coding agent your real, local browser session over MCP). Neither has a signup, and both keep your data on your machine. Here's why they're built the way they are.
How we built BrowserStack's A/B experimentation framework from scratch — and why the fit gap with off-the-shelf tools made building faster than adapting.
Built a Slack-native JIRA bot solo in one day. Third prize. Here's what the deck says versus what the code actually does.