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 world engine built over real-world data from Overture Maps and GEDTM30 elevation.
It uses a custom fixed-point coordinate system and spatial hierarchy, with streamed terrain and sparse editable voxel objects. A Rust kernel holds the world and draws it, as WebAssembly in the browser and natively in an iOS and Android app; the React Native shell decides nothing about it. Figma's editor has the same shape, down to the core owning the one memory it was handed. 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 ── Rust ──────────┐
│ owns the clock, the │ │ computes, and owns │
│ memory, the I/O │ ═ interrupt(quota) ═▶ │ nothing │
│ │ │ │
│ │ ◀═══ wake_ms ═══════ │ │
└───────────┬────────────┘ └────────────┬─────────────┘
│ │
└──────────────────────────┬───────────────────────┘
▼
┌─ one linear memory ─────────────────────────────────┐
│ everything else crosses here, and nothing else does │
└─────────────────────────────────────────────────────┘
Ring-buffer IPC across that memory, a cooperative scheduler on the quota, and credits for the I/O the guest asks the host to do.
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.



