Lennox Fu

UC Berkeley · Computer Science 2027

I build software and explore AI infrastructure. Contributing to the SGLang community.

Open this page on a desktop browser to explore the interactive galactic map.

Software Engineering

TikTok

Software Development Engineering Intern · MAY — AUG 2026

Built a coding-agent harness to move recommendation pipelines from an old system to a new one.

Field notes
  1. Automated migration. Built an AI coding workflow to translate legacy JSON pipelines into a Python DSL across the platform. Automated generation and checks cut migration time from 2–3 days to hours per pipeline.
  2. Check, then correct. Automatic checks helped the agent fix its own mistakes. Pass rates rose from about 20% to 80% on evaluated configurations; passing migrations needed no manual code edits.
  3. Verify the structure. Built a benchmark and verifier that compared retrieval-index metadata—the descriptions of the indexes each pipeline uses. Mismatches guided the agent’s corrections.
  4. Find the right example. Added semantic search over internal code and DSL documentation. The agent could retrieve relevant APIs and examples while translating.

1stCollab

Software Development Engineering Intern · MAY — AUG 2024

Designed a pipeline that turns creator profiles from different platforms into searchable, usable data.

Field notes
  1. Collect across platforms. Built a Python/Playwright pipeline across 8+ platforms. The creator data supported model training, campaign matching, advertiser recommendations, and automated outreach.
  2. Scrape → handle → store. Separated scrapers and handlers into different Docker containers. Scrapers saved pages to Cloud Storage and dispatched tasks through Pub/Sub; handlers extracted and normalized creator data, then saved it to Cloud SQL/PostgreSQL.
  3. Scale & data quality. Processed 2K–10K creators a day from a corpus of 2.5M+ profiles, with 90% recall and 95% precision against the company’s hand-curated reference database.

Galactic Atlas

Personal project · ONGOING

A portfolio you explore, built around the things I work on and care about.

Field notes
  • A spatial portfolio. Designed a galaxy where each sector holds an experience and each planet tells a small part of its story.
  • One source of light. Built a Three.js scene with a central light, textured planets, and shadows falling across the map.
  • Finding your orbit. Built smooth sector transitions and a fixed reticle that gently locks onto nearby planets.
  • From tasks to stories. Started with a galactic task manager, then developed a separate map for sharing my work.

CALICO

Algorithm Problem Developer · SEP 2023 — PRESENT

Helping build an algorithmic contest and a community around solving problems.

Field notes
  • Problem development. Worked as an algorithm problem developer for the California Informatics Competition.
  • Behind the contest. Helped organize contest logistics for a student-run high-school algorithmic competition at Berkeley.
  • The contestant experience. Worked on engagement and usability for the competition’s open-source education interface.

AI Infrastructure

SGLang

Open-source contributor · JUL 2026 — PRESENT

Making multimodal inference faster and more reliable in SGLang-Omni, from speech generation to multi-GPU deployment.

SGLang-Omni
Field notes
  • CUDA graphs. Profiled text-to-speech inference and added CUDA graph support, cutting first-audio latency by 54–59% and raising request throughput by 15–21% in paired H200 benchmarks at concurrency 16.
  • GPU placement. Standardizing GPU assignment across SGLang-Omni stage factories so each stage can be replicated across GPUs, covering 32 model topologies.
  • FLOPs accounting. Corrected prefill FLOPs accounting for cached prefixes and batched requests. Long-context workloads had been underestimated by 10–100×; GPU throughput reports are meaningful again.
  • Health probes. Separated readiness from liveness so a server still warming up no longer receives traffic, and documented the Kubernetes health-check configuration.

AI-MLFQ

Scheduling simulator · EARLY EXPLORATION

I built a simulator that lets quick chats interrupt long AI jobs. In the recorded experiment, chats started sooner and long jobs finished later; total processing time stayed the same.

Code & experiment results
Field notes
  • Two ways to queue. I compared serving requests in arrival order with giving long jobs shorter turns. Pausing a long generation lets a quick conversation get a turn sooner.
  • Who gains, who waits?. Quick conversations started sooner, while long jobs finished later and the full batch took the same total time. Earlier first replies did not mean smoother streaming: the gaps between pieces of each reply also grew.
  • Pausing has a cost. A paused conversation still needs its saved working memory. The simulator accounts for limited space and the delay of moving that memory out and back in.
  • Inspect the experiment. I built a visual replay of the queues and memory use to inspect where delays came from. This was my entry into AI infrastructure; the results come from a simulation, not a deployed AI service.

Inference Playground

Interactive teaching website · PERSONAL PROJECT

An interactive website for seeing how people share one AI server. Add users, lengthen their messages, or change who gets a turn to see why replies slow down—all in a browser simulation.

Open interactive demo
Field notes
  • Watch a reply appear. Follow the demo from reading a prompt to producing an answer a piece at a time. It separates the wait before the first word from the speed of the reply that follows.
  • Fill up the memory. Add conversations with a slider and watch the memory meter fill. Longer conversations take more space, so the same computer can handle fewer of them at once.
  • Compare two queues. Run the mixed-traffic scenario, then compare first-come, first-served (FCFS) with multi-level feedback queues (MLFQ), which give long jobs shorter turns. Watch which requests wait and how memory fills up.

BAIR

Undergraduate Researcher · SEP — DEC 2024

Contributed data-loading and benchmarking software to Robo-DM, an open-source robotics data management toolkit, and co-authored its CoRL 2024 Workshop paper.

Field notes
  • Faster loading. Built multiprocessing data-loading pipelines with chunked decoding, cutting dataset load times for ML training.
  • Trajectory sampling. Developed frame-level random slicing for efficient trajectory sampling, reducing average data-retrieval latency.
  • CoRL workshop paper. Co-authored the Robo-DM paper at the CoRL 2024 Workshop.

Tethys

Scientific experiment · HACKATHON PROJECT

I built an experiment that asks an AI to recover known physics equations from data. In the rocket test, removing scientific clues meant about 12 times as many attempts to reach the same accuracy.

Read the resultsView project
Field notes
  1. Recover a known law. I asked the AI to reconstruct known equations from their data, including the rocket equation, which describes how fuel use changes a rocket’s speed. Knowing the original equations let me check its answers.
  2. Change only the clues. Both versions saw the same data and had the same mathematical tools. One received labels such as mass and velocity, plus scientific hints; the other saw anonymous names.
  3. The rocket result. With clues, all three runs recovered the rocket equation; without clues, reaching the same accuracy took 8.7–14.5 times as many candidate programs (11.9 times as a geometric mean). One no-clue run found a close approximation rather than the exact equation.
  4. Gravity: mixed results. For Newton’s law of gravity, the geometric mean was about 20 times as many candidate programs without clues. The three runs ranged from 1.7 to 100 times, so this result was much less consistent than the rocket test.
  5. Kepler: no difference. For Kepler’s orbital law, clues made almost no difference: both versions needed about the same number of attempts. The experiments showed that the value of context depends on the problem.

Systems & Learning

Pintos

CS 162 · UC Berkeley · SPRING 2026

Building the pieces of a working operating system.

Field notes
  • System calls. Built process-control and file I/O system calls with user-memory validation, parent–child synchronization, and resource cleanup.
  • Priority donation. Implemented priority scheduling with nested donation so a low-priority lock holder would not indefinitely block higher-priority work.
  • Files and directories. Extended Pintos with growable files and hierarchical directories.
  • User threads. Implemented user-thread creation, join, and exit, with locks and semaphores for multithreaded applications.
  • Write-back caching. Built a write-back buffer cache and used fine-grained locking to support concurrent file operations.

Pac-Man AI

CS 188 · UC Berkeley · FALL 2025

Teaching an agent to find its way, plan ahead, and learn from experience.

Field notes
  • Finding a path. Implemented search algorithms, including A*, to navigate Pac-Man mazes.
  • Planning ahead. Implemented minimax and expectimax agents to plan around adversarial and uncertain ghost behavior.
  • Learning by doing. Implemented value iteration and Q-learning to learn policies through rewards and experience.
  • Hidden ghosts. Used probabilistic inference to track ghosts from noisy observations.

Networking

CS 168 · UC Berkeley · SPRING 2026

Following a packet from route discovery to reliable delivery.

Field notes
  • Tracing the route. Implemented traceroute to discover the routers along a packet’s path using probe responses.
  • Distance-vector routing. Implemented a routing protocol that learns paths by exchanging information with neighboring routers.
  • When links change. Handled route expiration and routing-loop mitigation as the network topology changed.
  • Reliable transport. Implemented a subset of TCP for reliable delivery. The course implementation covers reliability rather than congestion control.

Life

Life

Life outside software · ONGOING

Some things I enjoy away from the screen.

Field notes
  • Piano. I enjoy playing piano.
  • Boxing. I practice boxing.
  • Calorie tracker. Built a small calorie-tracking app for personal use, keeping the data in local storage.
  • Next in the kitchen. The next dish I want to make: tomato sour soup.