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 (GG^{\infty} 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 .js file. 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.