Work
Computer Engineering & Machine Learning at
Carnegie Mellon University.
Fellow @ Y Combinator
Research Assistant at CMU’s Data Interaction Group, experimenting with different ways of visualizing the internal representation of language models during post-training
Research & OSS
-
Co-maintain the Vega Editor and own its infrastructure: migrated the codebase to React 19 and replaced Parcel with Vite (~30% faster loads), built the entire test suite from scratch (10 unit + 14 end-to-end Playwright suites), and added GitHub auth with Gist-based import/export, alongside fixes to hot-module-reload, the data viewer, and Monaco integration. On Vega core: ISO year-week time units and a
container:resizeevent source. On Vega-Lite: fixed a legend-merging bug and a truthy-check bug that silently dropped zero-valued width/height, plus open work on facet sorting and legend accessibility.0merged · vega/editor0merged · vega/vega0merged · vega-lite -
Fixed a real bug in Apple’s embedding-visualization tool: binary / Hugging Face–style image columns weren’t being detected, so raw image bytes were dumping into table cells and tooltips as huge integer arrays instead of rendering as images.
Projects
-
A full RLVR post-training pipeline, built end to end: A policy model, a vLLM-colocated rollout engine, a sandboxed verifier that grades code against real competitive-programming tests, a PPO trainer, and an eval + profiling harness.
Rollout (vLLM) Verifier (sandbox) PPO EvalThrough ablations found that rollouts, was the primary bottleneck and optimized for rollout-engine, policy model weight-syncing. Grading on fraction-of-tests-passed instead of pass/fail roughly doubled the reward signal and pushed held-out pass@1 to 2.0% vs. 1.0% for binary reward, after the same # of PPO steps.
-
An LLM inference engine built from scratch. Custom Triton kernels: a hand-written flash-attention kernel with tile sizes tuned specifically for the T4’s 64KB of shared memory, speculative decoding with cache rollback, custom INT8×FP16 quantized matmul kernel and a vLLM-style paged KV cache implementation.
-
A Rust user-space kernel that runs untrusted Linux ARM64 binaries natively on macOS, without booting a Linux VM. Every syscall from the guest traps through Apple’s Hypervisor.framework as a hardware VM-exit and is serviced entirely in user space, its own network stack, its own filesystem layer, handled through a separate sandboxed process.
0per syscall0guest cold start0GPU overhead vs. native MetaliVisor-demo puts a real LLM agent inside the sandbox and tells it to attack: steal SSH keys, exfiltrate data, tamper with the rootfs, open a backdoor listener. Every denial is delivered over a file descriptor the guest can’t even address, so it can’t forge what didn’t happen.
-
AI-generated audio snippets on demand, a React Native app, live on the App Store. Clerk-backed auth (email/password + Google), a personal snippet library, and a landing page with a real deployed backend (Vercel + Resend) handling TestFlight invite signups.
-
Behavioral Autoregressive Capability Attenuation (BACA) bridges an agent to SHADE-Arena, a benchmark for catching agent sabotage and deception, and logs how different monitoring strategies perform at catching it. Puts a signing boundary between an agent and the outside world: the agent proposes a diff, an auth server returns a signed allow/deny verdict before any PR can open, with the policy and keys kept off the agent’s side entirely.
Some courses I’ve enjoyed
- Deep Learning (PhD)
- Generative AI (PhD)
- Probability
- Linear Algebra
- Computer Systems
- Distributed Computing
- Data Structures and Algorithms
Hackathons
- Claude Builder Hackathon, 1st Place
- PennApps XVII, 1st Place
- Hack112, 1st Place