ENResume ↗

> eliot nakamura — cs junior

I build systems that survive contact with reality.

Studying

University of WashingtonClass of 2026Systems & Distributed Computing
eliot@dev — raftkit — zsh
$ cd ~/projects/raftkit
$ go run . --nodes=5 --scenario=election
[raftkit] starting 5-node cluster
[node-0] term=1 state=FOLLOWER
[node-1] term=1 state=FOLLOWER
[node-2] term=1 state=FOLLOWER
[node-3] term=2 state=CANDIDATE → requesting votes
[node-4] term=2 state=FOLLOWER
[raftkit] votes received: 3/5 threshold: 3 ✓
[node-3] term=2 state=LEADER
consensus reached in 147ms
$▌
00.

My Story

My dad was a network engineer for a Portland internet service provider. On weekends he'd take me into the server room — cold, humming, blinking. He taught me to run traceroute before I could reliably spell my own name. I watched packets leave our building and bounce through three continents to reach a server in Tokyo, all in under forty milliseconds. That number never lost its magic.

I study distributed systems because I'm still chasing the question that room raised: how do machines agree on anything when the network between them is fundamentally unreliable? It's the problem at the bottom of every system I care about — from database replication to consensus protocols to fault-tolerant storage. The harder question isn't how to make systems fast. It's how to make them honest about what they know.

This summer I'm at Microsoft Research working on fault tolerance in distributed storage. In the fall I'm applying to PhD programs. I want to build the infrastructure that doesn't require an engineer to be awake at 3am to keep running — systems that fail gracefully, recover correctly, and say so clearly when something goes wrong.

UniversityUniversity of Washington
YearJunior — Class of 2026
FocusSystems & Distributed Computing
MinorMathematics
CurrentlyMicrosoft Research (Redmond)
Open toFull-time & internship roles
01.

Selected Work

01

RaftKitVisualizing Consensus

Live · Open Source

Raft is hard to implement correctly. I built a version that's hard to implement wrong.

Every distributed systems student implements Raft the same five wrong ways. I spent a month getting it right, then another month building a step-through visualizer that shows the state machine — follower, candidate, leader — at every tick. It runs in the browser, fully interactive, stepping through elections and log replication with labeled state transitions. The visualizer is now used in UW's distributed systems course.

GoReactTypeScriptWebSocketsRaft
312 GitHub stars · used in UW CSEP 552

02

SwitchboardLocal Service Mesh

v1.2 · Maintained

Kubernetes is overkill for dev. Raw Docker Compose has no service discovery. Switchboard lives between them.

A single Go binary that provides DNS-based service discovery, round-robin load balancing, and health-check-aware routing for local Docker services. Drop it in front of a Compose project and your services can find each other by name, get health-checked, and fail over — without a full k8s cluster. It reads Docker labels and the daemon socket; no config file required for basic use.

GoDNSDocker APImDNS
87 GitHub stars · used by 3 UW research teams

03

ApertureNetwork Topology at a Glance

In Development

When production breaks, engineers spend too long figuring out where before they understand why.

A real-time network topology mapper for Linux. It reads live connection state directly from the kernel via eBPF, builds a graph model in Rust, and streams it to a React frontend over a WebSocket. Edges are weighted by latency, nodes colored by health state. When a route goes dark, you see it immediately — not after running netstat three times and reading stale routing tables.

eBPFRustReactD3.jsWebSockets
Active development — first release Q3 2026
02.

Technical Stack

Languages

GoPythonRustTypeScriptCJava

Systems

LinuxTCP/IPeBPFgRPCProtocol BuffersDockerKubernetes

Web

ReactNext.jsNode.jsWebSocketsREST APIs

Data

PostgreSQLRedisetcdSQLite

Tools

GitLLDBWiresharkValgrindperf

Math

Probability TheoryLinear AlgebraGraph TheoryDistributed Algorithms
03.

Say Hello

Open to research collaborations, full-time roles, and interesting problems.

I'm applying to PhD programs in distributed systems (UW, MIT, CMU, Berkeley) and am open to industry roles in systems engineering. If you're working on something that touches consensus, fault tolerance, or network infrastructure — I'd like to hear about it.

Emaileliot.nakamura@cs.uw.edu
LocationSeattle, WA (Redmond this summer)