The Build Log.
immutable — the standard doesn’t move
17 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, 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 ↗
Same collision, every sprint.
Committed tooling work kept missing its sprints, even though the calls that bumped it were usually the right ones. How burndowns read sprint over sprint showed where the tooling time was going, and the case for splitting Tools from Build & Release.
In 2019, Tools and Build & Release at Infinity Ward were one team. The same engineers built the studio’s tooling and kept the build pipeline running. When a build broke, the pipeline usually won, because an unstable build blocks QA, and most of the time that was the right call. The cost showed up in the tooling work, which slipped sprint after sprint.
The case I took to my directors was sprint slippage. Any one sprint’s burndown just looked like a busy team; the rollover only showed sprint over sprint. So I brought the burndowns across sprints, with the committed tooling tickets rolling over, and a list of the build fires that had pulled engineers off them. The same fires lined up with the rolled-over tickets. As long as one team did both jobs, the next fire would pull the same engineers off the tooling work again.
I pitched separating the two teams and made the case. They took the recommendation and hired a Build & Release director to run that team. Two tools engineers moved over and two more were hired in, so the combined teams went from six engineers to eight, plus the director. It took about six months from pitch to two teams standing, and I produced both. What I saw after: tools shipping on their own cadence, and build support that got faster and more visible across the studio.
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. It was being worked as many separate problems: different symptoms, different owners, 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.
I coordinated the hotfix, and it shipped the same day. Each durable fix landed with the team that owned the gap: content, build, and QA.
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, 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, the platforms’ crash data was there but we didn’t have a daily view of crash rate, 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 a daily review of crash rate 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 caught spikes and drove them 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 Warzone report above was one day. The crash program 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, one Call of Duty title at a time, and, from 2020, Warzone’s live service running alongside it, with tools support for Warzone Mobile under that live service. Some disciplines, mostly Build & Release and Tools, were pulled toward more than one deadline. 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.
Once, the fix was the org itself: in 2019 I made the case for splitting Tools from Build & Release. That story is the first report on this page ↑
Three 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.