Projects

29 things worth keeping, grouped by what they are rather than when I made them. Some are closed for now; a few of those will open up. Where there’s no link, there’s no public source yet.

Engines & simulation

05

MochBot

A bot people train against. Luke and I have been building it for two years — engine in Rust and C++, dashboard and match plumbing in TypeScript.

Rust · C++ · TypeScript Live ↗

falcon

A search engine for tetromino stackers. Rust, three rewrites, each one faster than the last.

Rust Source ↗

fusion

Replay-coaching engine — move generation, search, evaluation, and the pipeline that trains it.

Rust Source ↗

mimic

A timing model that makes a bot's keystrokes look like a person's. Trained on real replays.

TypeScript · Rust Private

Mosaic

Replay viewer with opener detection. Simulates the game to tell you what you actually played.

SvelteKit · PIXI · WASM Private

Libraries

03

Triangle

I reverse-engineered the TETR.IO protocol and wrote a headless client for it. It's the only open-source one, and most third-party tooling for the game is built on it.

TypeScript Live ↗ Source ↗

@haelp/auth

JWT authentication across subdomains, small enough to read in one sitting.

TypeScript Source ↗

@haelp/joystick

Virtual joystick for browser games. Written years ago; people still install it.

JavaScript Source ↗

Robotics

05

push-back

Rust on a VEX V5 brain. My own motion library, Monte Carlo localization for working out where the robot actually is, and a Svelte debugger that reads telemetry off it over a protocol I wrote down.

Rust · vexide Source ↗

scoutr-vrc

Scouting app for VEX competitions — match and award notifications, video capture, live standings.

React Native · Supabase Source ↗

vex-code-guide

What I worked out about robot localization, written down so other teams didn't have to.

Documentation Source ↗

gif-pros

GIF decoder for the VEX PROS runtime, with transparency. For putting animations on a robot screen.

C++ Source ↗

pathgen

Bezier path planner for VEX autonomous routines.

TypeScript Source ↗

Products

04

UIEats

UIUC publishes its dining menus with unreliable allergen data. I scraped the system it's generated from and built a better app that you can trust when your life is at stake.

SvelteKit · Docker Live ↗ Source ↗

Zoron

A replacement front end for the Aspen student information system, built on a reverse-engineered API.

SvelteKit · MongoDB Private

course-finder

Watches UIUC course sections and pushes a notification the second a seat opens.

SvelteKit · Web Push Private

LexYouth Manager

Tutoring management for a local nonprofit — scheduling and service-hour reporting.

Next.js · MongoDB Private

Infrastructure

04

auth

An OpenID Connect provider. Every service below signs in through it.

SvelteKit · SQLite Live ↗

cdn

Personal file host with Drive-backed storage.

SvelteKit · Docker Live ↗

link

URL shortener.

SvelteKit · SQLite Live ↗

secrets

Share a credential once, then it's gone.

SvelteKit Private

Tools & extensions

08

uiuc-icons

Chrome extension that gives each Canvas course its own favicon, so the tabs stop being identical.

TypeScript Live ↗

amber

Plugin-based JavaScript deobfuscator.

JavaScript Source ↗

flamewall

macOS menu-bar firewall — per-app network filtering through a system extension.

Swift Private

muted

System-wide microphone mute in the menu bar.

Swift Private

badgeify

Mirrors app unread badges into the macOS menu bar.

Swift Private

games

Small browser games, fully offline after first load.

SvelteKit Live ↗

tools

Bulk image viewer, scoreboard, counter. Things I needed once.

SvelteKit Live ↗

AoPS userscripts

Userscripts for Art of Problem Solving. 2023.

JavaScript Source ↗

Not listed

Around 180 more repositories exist, most of them from high school and most of them not worth your time. Team projects I contributed to but didn’t write are credited to the people who did.

haelp.dev