rust-but-lisp
152 starsA transpiler that lets you write Rust as Lisp. S-expressions go in, real compiled Rust comes out. It is the least useful thing here and by far the most widely shared.
I build apps and open-source tools.
I also make photographs and music.
Play a little. Tap the keys, or try A S D F G H J.
I build full-stack apps, from the interface to the systems behind it.
software is better when it’s shared.
I publish Python libraries and developer tools, maintain them in public, and contribute fixes to projects I use.
Rust but LISP
Rust ☆ 152git-wormA better git worktree manager, built with Xclif
Python ☆ 6xtrasXliner's Claude Code Skills
Shell ☆ 2chinese-fontFunny font that auto translates Chinese
Python ☆ 5xclifXliner's Command Line Interface Framework
Python ☆ 5unmarkdAn extremely configurable markdown reverser for Python3.
Python ☆ 17pyt2My second attempt at making a Python template. Formerly used CookieCutter; now uses Copier
Jinja ☆ 14FADAIGFor Absolutely Destroying An iMessage Game
Python ☆ 8obsidian-supergraphCard-based graph view to view relationships in addition to card contents. Useful for research
TypeScript ☆ 2gitmoji-atom:atom: Gitmojis for Atom. Now you can search for the perfect emoji in Atom! :sparkles:
JavaScript ☆ 3Pro-grade photo gallery
Svelte ☆ 6gahGit Add Hunk, built for agents to use
Rust ☆ 4NerdLensMirror your laptop in VR
ShaderLab ☆ 14patchwork-cliAST-native code refactor without LLMs, but for LLMs
Rust ☆ 6ljvLissajous Curve Music Visualization
JavaScript ☆ 6idaeA PEP 723 script runner
Python ☆ 11aioudpA better API for Python asynchronous UDP
Python ☆ 19qbotQuiz Bowl Discord Bot, written in Rust
Rust ☆ 2bs4-stubsExperimental type hints for BeautifulSoup
Python ☆ 2fall-syntax:atom: A syntax theme for your eyes
Less ☆ 6GitHub snapshot at build time. Upstream count covers projects tracked by my current forks.
A transpiler that lets you write Rust as Lisp. S-expressions go in, real compiled Rust comes out. It is the least useful thing here and by far the most widely shared.
An extremely configurable HTML-to-Markdown converter built on BeautifulSoup. Subclass it to control how any tag converts — code fences, language detection, list style. The most-downloaded thing I've published.
A websockets-style async/await API for UDP, instead of asyncio's raw transport and protocol classes. Published on PyPI with full documentation on ReadTheDocs.
and sometimes, building the team.
CEO
Joined in eighth grade and later became CEO of the student-run non-profit enhancing digital educational infrastructure at Valley Christian Schools. Built and maintained the full-stack platform (frontend, backend, web scrapers); later led a full frontend rewrite to improve performance and UX.
Founder
Founded the Valley Christian HS Software Development Club from scratch. Designed the club website, authored curriculum, and shipped restlock-holmes — an interactive game teaching REST APIs to beginners.
Programmer
Robot programming for 2024–2025 seasons: elevator subsystem, 3D simulation for driver practice, anti-tip logic, controller mapping, structured logging, and a competition scouting app built with Tauri 2.0.
I photograph, operate cameras, and switch live productions. Then comes the editing, color grading, and sound.
there’s usually music involved.
I’m also a pianist and trombonist. I perform solo, play in concert and jazz bands, and release music.
Drag the slide to play, or hold Play.
This is not indicative of my actual playing range.Solo pianist · since 2017
Concert band & jazz band · since 2018
Pick a skill to see my work.
I build and maintain published Python libraries: async networking in aioudp, configurable HTML-to-Markdown conversion in unmarkd, and developer tooling in pyt2 and idae. That work includes API design, documentation, packaging, CI, and release automation.
I use TypeScript for full-stack products, including Billion and Quillium. My work spans interfaces, application architecture, editor state, revisions, annotations, and API integrations.
JavaScript is part of my web development toolkit, from browser interactions to application interfaces.
My Rust work includes rust-but-lisp, a transpiler that turns Lisp-style expressions into Rust. I also use Tauri to package desktop tools, including a WebGL audio visualizer and a robotics scouting app.
Java is part of my programming toolkit. My robotics work includes robot subsystems, simulation, control logic, and structured logging.
C++ is part of my programming toolkit alongside competitive algorithmic programming. My hardware work includes the Arduino firmware for FADAIG, a bot that physically plays Word Hunt.
I use React and Next.js for full-stack app development. On Billion, I worked on the frontend and application architecture, web scraping, and AI-generated video feed integration.
My Svelte work includes LJV, a Lissajous visualizer with a WebGL2 shader pipeline, audio input, and Tauri desktop packaging.
Maintaining open-source projects means working with versioned releases, CI, and contributions from other people. My Python project template pyt2 includes an automated publishing workflow.
Docker is part of my development toolkit.
I built a Go plugin backend with runtime manifest discovery, typed configuration, actions, webhook triggers, caching, and tests.
I use Next.js for full-stack apps, including Billion and Zyma. For Zyma, I shipped a client attendance platform with authentication and a reusable design system.
I use Tailwind CSS for styling web interfaces and reusable design systems.
I used Supabase with Next.js for Zyma, a client attendance platform with authentication.
PostgreSQL is part of my systems and data toolkit.
Quillium stores writing locally in a SQLite file, supporting offline work and crash-safe storage.
I build CI and automated publishing workflows, including the Python project template pyt2.
I built the WebGL2 shader pipeline for LJV, a real-time Lissajous music visualizer with audio input and desktop packaging.
I use Tree-sitter in patchwork-cli, an AST-native Rust refactoring tool for structural code edits and agent-driven development.
Playwright is part of my testing toolkit for browser-based applications.
a few turns along the way.
Music, software, and learning to build with other people.
I started playing piano. Music became a lasting part of my life, alongside the things I would learn to build.
I picked up trombone, later playing in concert and jazz bands as well as performing solo on piano.
I started programming in fourth grade.
I had been programming since fourth grade, but 2020 was when I began taking it seriously.
I joined VC Assist in eighth grade and later became CEO. At the student-run nonprofit, I built the full-stack platform for my school’s digital infrastructure and later led a frontend rewrite.
Music and competitive programming gave me two very different ways to work through a difficult problem.
In freshman year, I founded the VCSD software development club. I built its website, wrote the curriculum, and made restlock-holmes to teach beginners about REST APIs.
On FRC Team 3256, software had to work on a physical robot, under a deadline, with a team depending on it. My work across the 2024–2025 seasons included the elevator subsystem, driver simulation, anti-tip logic, and scouting tools.
With FRC Team 3256 · team awards
Robotics taught me to care about the parts around the code: testing, controls, structured logs, and helping other people use what I built.
Concert and jazz bands kept collaboration in my life away from the keyboard, too.
My Congressional App Challenge entry grew into Billion. I kept building beyond the competition, working on a way to make government decisions easier to follow.
picoCTF put my problem-solving to work across cybersecurity: reverse engineering, cryptography, binary exploitation, and web security.
My biggest focus right now is Billion: making government decisions easier to follow. I’m continuing to build the app, bringing bills, court rulings, and executive orders into one place.
Explore Billion ↗