Harish Kumar

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.

11.9 Seconds: Building an Async Upload Framework with RabbitMQ at Capillary

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.

Oct 2025 ·war-storyarchitect-mindsetgap9 min
Migrating BrowserStack's Legacy Checkout from Ruby to React

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.

Jun 2022 ·war-storyarchitect-mindset8 min
I Wanted to See What Claude Could Do Inside GitHub Actions. So I Gave It a Package Upgrade.

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.

Mar 2026 ·war-storyarchitect-mindsetgap10 min
What AI-Native Development Actually Means for a Team

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.

Apr 2025 ·career-craftarchitect-mindsetgapwar-story8 min
AstraBox — Chrome Extension Built for My Team's Daily Dev Workflow

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.

May 2025 ·war-storyarchitect-mindset9 min
Every Node Service. One Upgrade. No Big Bang.

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.

Jan 2026 ·war-storyarchitect-mindset9 min
Building a Serverless Slack Bot Framework Without a Slack App — Google Apps Script + Reverse-Engineered Slack API

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.

Jun 2024 ·war-storygaparchitect-mindset8 min
The Test Failed. We Had Nothing to Debug It With.

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.

Dec 2025 ·war-storygaparchitect-mindset9 min
MigrateX — We Didn't Win the Hackathon. The Architecture Shipped Anyway.

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.

Sep 2025 ·war-storyarchitect-mindsetgap10 min
Killing the Build-Publish Loop: Hot Reloading for Internal npm Packages

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.

Jul 2025 ·war-storyarchitect-mindsetgap7 min
CapVision: When the Test Report Says Nothing

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.

Feb 2026 ·war-storyarchitect-mindsetgapcareer-craft8 min
The Pricing Engine Nobody Wanted to Touch

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.

Sep 2023 ·war-storyarchitect-mindsetgap9 min
Two tools I built. Neither has a signup.

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.

May 2026 ·war-storyarchitect-mindsetopen-sourcetooling6 min
GrowthStack — Building an End-to-End Experimentation Framework at BrowserStack

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.

Mar 2024 ·war-storyarchitect-mindsetgap11 min
One Day, One Dev, One Bot: Building CapBot at the Capillary AI Hackathon

Built a Slack-native JIRA bot solo in one day. Third prize. Here's what the deck says versus what the code actually does.

Jun 2025 ·war-storyarchitect-mindset9 min