Portfolio Pieces
This Website
This project started as an experiment in REPL-driven development using ClojureScript and React components. I rewrote it with SvelteKit so I could build my site with components but render it with simple HTML and CSS.
Bare Metal RISC-V Bootstrap
Ported the stage0 bootstrap chain (hex0 → hex1 → hex2 → M0) from stage0-posix-riscv64 to bare-metal RISC-V 64-bit, replacing all POSIX syscalls with direct UART I/O, executing directly in memory. Each stage is validated with automated QEMU-based integration tests, and hex0 — the trust anchor of the entire chain — was manually audited byte-by-byte against the RISC-V ISA spec.
Node-Graph Editor/Compiler
A node-graph editor designed to output bytes via a data pipeline. A compiler is really just a machine that takes in bytes and outputs bytes right? Anyway, it supports logical and arithmetic operations, as well as concatenating and splitting byte streams. This is a companion project to the bootstrapping chain above. I think content-addressed, graphically represented code is the future.
Track Geometry Experiments
I made an editor with the Bevy game engine with procedural terrain generation and a railway alignment editor. The railway alignments are splines composed of straight segments, circular arcs, and clothoid transitions. In the future I'd like to get vertical alignments working as well.
Proof of the Smoothstep Curve
A companion project to Track Geometry Experiments. I wanted to prove that you could design a perfect transition curve. Jerk is the 2nd derivative of angular velocity, but what if I could make a curve that's continuous on infinite higher derivatives? With this in mind, I sought to prove that there's a curve family that has exactly this property ( continuity) among others. I used Lean 4 to prove my intuition was correct and I wasn't just speculating by looking at Desmos graphs.
Hantracker
A tool for keeping track of how many Chinese characters you can read. Anki is too complicated for what I wanted it to do, and this feature from Kanji Koohii got removed, so I decided to build my own. It doesn't actually test you, you just have to say "yes" or "no" to whether you recognize each character.
Death Calendar
Inspired by the waitbutwhy.com article, I decided to create a visual representation of how much time you have until your ultimate demise. It's designed to help you spend more time on the things that really matter to you.
Factorio Blueprint String Creator
A command line tool for turning text into Factorio blueprint strings. This is yet another rust rewrite from Clojure.
Feedback Box Component
A component designed that allows a user to send feedback. It was designed to be easily deployable as a single
.jsfile. Despite having no prior knowledge, I wrote this using the Rum library.This was my first paid commission.
Hexagram SVG Generator
The I-Ching is an ancient Chinese system of divination. It involves creating a figure of 6 lines, broken or unbroken, usually by casting coins or picking yarrow stalks. This demo generates an SVG graphic based on the hexagram number.
Uniorg Util
This project was a workaround for this website when I couldn't run certain code due to an es-module and commonjs incompatibility. It converts Org documents to HTML and metadata.