Backend & game systems engineer with 8+ years building live services at massive scale. Lead server engineer on Pokémon Go at Niantic. Specializing in real-time multiplayer, networked systems, and the engineering that makes millions of players feel like they share the same world.
I'm a backend and game systems engineer with 8 years building live services at internet scale. My most recent role was Lead Server Engineer on Pokémon Go at Niantic — responsible for the infrastructure powering millions of concurrent players globally.
I specialize in the intersection of distributed systems and real-time multiplayer. Latency, concurrency, fault tolerance, and the unique challenges that only emerge when millions of people share the same simulated world simultaneously.
Outside of engineering I keep several freshwater tropical aquariums — a hobby that rewards patience, systems thinking, and an obsessive attention to invisible variables. It turns out building stable ecosystems and stable live services have more in common than you'd expect.
Led server engineering for one of the world's most played live-service mobile games. Owned real-time gameplay systems serving millions of concurrent players. Drove architecture decisions for scalability, reliability, and live event infrastructure.
Add your description here.
// Compact uint32 ID allocator // min-heap + sequential counter class IDAllocator { uint32_t next_id = 0; priority_queue<uint32_t, vector<uint32_t>, greater<>> freed; public: uint32_t allocate() { if (!freed.empty()) { uint32_t id = freed.top(); freed.pop(); return id; } return next_id++; } void release(uint32_t id) { freed.push(id); } };
// Client-side prediction struct PlayerSnapshot { public uint tick; public Vector3 position; public Vector3 velocity; public InputCmd input; } void Reconcile(PlayerSnapshot srv) { var local = history[srv.tick]; if (Drift(local, srv) > threshold) Rewind(srv); }
# BFS flood-fill — finds all connected regions on a 2D grid from collections import deque def flood_fill(grid: list[list[int]], r: int, c: int) -> set[tuple]: visited, queue = set(), deque([(r, c)]) while queue: row, col = queue.popleft() if (row, col) in visited: continue visited.add((row, col)) for dr, dc in [(-1,0),(1,0),(0,-1),(0,1)]: nr, nc = row+dr, col+dc if 0 <= nr < len(grid) and 0 <= nc < len(grid[0]): if grid[nr][nc] == grid[r][c] and (nr,nc) not in visited: queue.append((nr, nc)) return visited
Open to senior and lead engineering roles in the game industry — real-time networking, live services, and multiplayer systems.