Skip to content
View canplane's full-sized avatar

Block or report canplane

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
canplane/README.md

I care about systems and how we represent them — the layers, abstractions, and interfaces that shape what computers can do.

Interests

  • 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

Selected projects

pixelet (private) · 2025–2026

▶ Play

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.

Voxel objects built on real-world terrain

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.

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 task preempted mid-run in the console output

CALAB-loader (private) · 2021

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.

Three cooperative threads round-robining via yield()

Take-0 · 2015, 2022

▶ Gameplay video

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.

Gameplay with a combo and fever multiplier active

PIVOT · 2010–2014

▶ Play

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.

Widget launcher with notes, clock, and bookmarks

Pinned Loading

  1. xpute xpute Public

    A cooperative host/guest runtime over one shared memory, for a WebAssembly or native guest

    Rust

  2. SCALE-Sim-PREMA SCALE-Sim-PREMA Public

    Multi-task, preemption-aware NPU scheduling (PREMA, HPCA 2020) implemented on SCALE-Sim v1 — undergraduate research, Fall 2021

    Python

  3. snippets snippets Public

    A collection of my miscellaneous code

    Jupyter Notebook