The Build Log.
immutable — the standard doesn’t move
18 titles · 3 franchises + select work · 2006–2024
Every title I’ve shipped, in order: from QA Tester in 2006 through Senior Producer, across Tony Hawk, Guitar Hero, and Call of Duty. Most recently: Senior Producer leading a 20–40-person engineering org (Engine & Graphics, Tools, Systems, Build & Release) behind Warzone at 2M+ peak concurrent players, owning live-service crash rate from 2021–2023 and defending an under-3% per-platform target.
// Continuous studio tenure 2006–2023 through Neversoft’s wind-down and merger into Infinity Ward carried the move from Guitar Hero to Call of Duty. Years above are title release dates; production wraps before a game ships. Since 2023: a deliberate sabbatical. Independent technical work, self-hosted infrastructure, AI-directed tooling (see /projects and the résumé). And now a return to studio work.
// verify — credits on MobyGames ↗
Fix the cause, not the noise.
How a scattered Warzone live error got diagnosed down to a single root cause, and why understanding the system is what made the fix obvious.
A live error was surfacing all over Warzone, and engineering was too close to it to see the shape. It was being worked as many separate problems: different symptoms across three teams, no shared cause, and it kept coming back. It looked like many problems. It was one.
I built the repro from first principles, traced the behavior back to a single root cause, and could show exactly where it entered the pipeline and why it kept returning. I didn’t start this one by triaging symptoms, I started by understanding the system well enough to know what was actually broken. Once the cause was understood, the fix was obvious, and so was the team that owned it.
The hotfix shipped the same day. The durable fixes took longer (a few days placing each one at the layer that actually owned the gap), so the error class couldn’t return:
Two years under three percent.
The incident above was one day. This is the standing system behind every day: the crash-rate program that kept the game under its target across three platforms and three modes.
Call of Duty was live on three platforms and in three modes: Warzone at 2M+ peak concurrent players, plus Multiplayer and Co-op. All on one shared codebase, so most crashes reproduced everywhere. The target: under 3% per platform. Every weekly update went out through QA; the crashes that reached players were the kind that only surfaces at live scale. When I took the program on there were no dashboards, and every team ran its own crash list with its own priorities. The crashes that didn’t reproduce everywhere were exactly the ones those lists buried: an Xbox-only crash was never going to top the PlayStation team’s list.
I stood up the dashboards first, then unified the scattered lists into a single source of truth. The program settled into three parts:
Every issue went out with the QA manager, the team’s producers, and the engineering lead already in the loop, and I did the tedious parts myself first (pulling dumps, writing status) before asking anyone else to. The process stuck because following it cost every team less than ignoring it.
The target held: under 3% per platform, 2021 through 2023. That was never a flat line: rates spiked, and the system’s job was to catch a spike early, put an owner on it, and drive it back under. Once the loop had proven its worth, I delegated it deliberately and moved to the next problem that needed a system; the handoff is its own story. The target was still holding when I left.
// the method in full — The dashboard is not the system →
Six years of Tuesdays.
The first report above was one day. The second is the safety net. This is the day job: the milestone cadence, resource planning, and unblocking that kept the org shipping for six years.
A 20–40-person engineering org, multiple Call of Duty titles in flight, and, from 2020, a live service underneath them. Every discipline was pulled toward more than one deadline, staffing had to move as milestone priorities moved, and external vendor scope had to be managed alongside. None of that was a crisis. That was a Tuesday. The job was to keep the org shipping without making engineers absorb the churn.
The loop I ran, over and over, for six years:
And when a target moved (on a live franchise, it always does), I re-planned scope and trajectory and flagged the change early. Flagged early, a change is a plan. Flagged at the deadline, it’s an apology.
Four titles shipped between 2019 and 2023 on that loop, with Warzone live underneath from its 2020 launch. Not every target held still. When one moved, we re-planned and still landed close to what we’d committed. The reports above are what the hard days looked like. This loop is the rest of the calendar.