I care about systems and how we represent them — the layers, abstractions, and interfaces that shape what computers can do.
- Computer systems and architecture
- Memory, locality, and accelerators
- Representation and abstraction design
- System interfaces and boundaries
- Spatial computing
- Visual and interaction design, especially in earlier projects
A geospatial voxel engine that turns real-world terrain and places into a world to explore and build on, using Overture Maps and GEDTM30 elevation.
Rendering is driven by what the eye can resolve. The view is quantized into cells of equal solid angle, and detail is refined only where it would be visible. Terrain, places and placed voxel objects are stored differently and read through one query.
A Rust kernel holds the world and draws it, as WebAssembly in the browser and natively on iOS and Android; the React Native shell decides nothing about it. Figma's editor uses a similar arrangement: C++ compiled to WebAssembly, with its address space in a JavaScript array on the page. It runs on xpute, below.
This is also where I'm leaning on AI-assisted implementation the most, while focusing my own design work on the system architecture, representations, and boundaries.
xpute · 2026
A cooperative host/guest runtime originally built for pixelet.
┌─ host ── TypeScript ───┐ ┌─ guest ──────────────────┐
│ owns the clock, the │ │ computes, and owns │
│ memory, the I/O │ ═ interrupt(quota) ═▶ │ nothing │
│ │ │ │
│ │ ◀═══ wake_ms ═══════ │ │
└───────────┬────────────┘ └────────────┬─────────────┘
│ │
└──────────────────────────┬───────────────────────┘
▼
┌─ the core memory ───────────────────────────────────┐
│ everything else crosses here, and nothing else does │
└─────────────────────────────────────────────────────┘
Ring-buffer IPC crosses that memory. The guest schedules its work cooperatively against each turn's quota, and the host carries out the guest's I/O requests between turns.
SCALE-Sim-PREMA · 2021
An undergraduate research project extending SCALE-Sim with PREMA (HPCA 2020), a preemption-aware multi-task scheduling algorithm for neural accelerators.
The implementation adds task scheduling, runtime prediction, checkpoint/resume, and mid-layer preemption to the simulator.
A from-scratch, user-level ELF64 loader, demand pager, and cooperative thread runtime for x86-64 Linux.
Written as a programming test for admission to a KAIST research lab, with no starter implementation. It builds process startup state manually, implements SIGSEGV-driven demand paging and cooperative user-level scheduling, and transfers control directly into loaded binaries.
Take-0 · 2015, 2022
A keyboard rhythm game inspired by DJMAX, originally written in Flash and later revived and ported from ActionScript 2 to ActionScript 3.
Along with the game itself, it includes a note editor and configuration tooling.
PIVOT · 2010–2014
My first long-running software project, started in middle school.
A widget-based desktop launcher built with Flash/ActionScript 2 — widgets snap to a grid across multiple pages, each with its own settings, inside a shared launcher UI.
It began as a quicker way to search the web and gradually grew into a small personal software environment.



