Projects

Most of the time, I am working intermittently on at least one side project. I tend to work on projects that either make my life easier, or validate unconventional uses of existing technology.

I intend my projects to function for years with minimal maintainership. To that end, I often build scripts, native applications, or fully client-side web applications, and I avoid hosting servers and other public infrastructure that requires regular attention. I also try to write my code with as few dependencies as possible, since I believe that code rots fastest when it touches other software in many places.

Project Released GitHub Hacker News Reddit

ARM Assembly Tetris

A game like Tetris, but the “blocks” are ARM assembly instructions that execute in a CPU emulator, which runs client-side in the browser. The score is stored in emulated memory, and the instructions can change it directly.

Built with Svelte, Unicorn, Keystone, and WebAssembly.

August 2023 472 392

Link Lock

Password-protect URLs using AES in the browser, and create hidden bookmarks without a browser extension.

Built with HTML, CSS, and JavaScript.

May 2020 854 73 382

URL Pages

Create and view web pages stored entirely in the URL.

Built with HTML, CSS, and JavaScript.

June 2019 1373 377

Poker Chipper

Optimally select poker chip denominations for cash games using constrained, nonlinear optimization that runs client-side in the browser.

Built with Svelte; mixed-integer, nonlinear programming (via SCIP); and WebAssembly.

June 2024 171 213

just.sh

Compiler that transforms Justfiles into portable, POSIX-compatible shell scripts.

Built with Python.

December 2023 128 64 11

QuickServ

QuickServ is a dependency-free, statically-linked, single-file web server that makes it easy to prototype quick and dirty web applications.

Built with Go.

October 2021 322 62

GitHub Statistics Images

Generate visualizations of GitHub user and repository statistics with GitHub Actions. Visualizations can include data for both private repositories, and for repositories you have contributed to, but do not own.

Built with Python, SVG, CSS, and GitHub Actions.

August 2020 2844

Hacker News Button

Firefox extension that links to the Hacker News discussion for the current page and preserves privacy using Bloom filters.

Built with C, JavaScript, and WebAssembly.

March 2021 84 74 5

Bookmark Knocking

A novel technique to create hidden bookmarks that open different links depending on the order in which you click them.

Built with JavaScript and bookmarklets.

March 2021 50 128

webash

Create web interfaces for console applications by extracting flags and options from programs’ help text to run shell commands without leaving the browser.

Built with shell scripting, HTML, CSS, JavaScript, and QuickServ.

November 2023 6

Paperify

Transform any document, web page, or eBook into a research paper. (ChatGPT not required.)

Built with shell scripting, Python, Pandoc, and LaTeX.

September 2023 363 96

Systems Programming Cheat Sheet

Cheat sheet for x86-64 Linux systems programming. Made for 15-213 during my Spring 2019 semester at Carnegie Mellon.

Built with LaTeX.

October 2021 360 9 186

CTF Collab

Create an ephemeral, collaborative programming environment inside GitHub Actions; conveniently save data with Git. Particularly useful for solving Capture The Flag (CTF) problems.

Built with shell scripting, Tor, and GitHub Actions.

December 2020 69 103

GroupMe LaTeX Rendering Bot

Detects any GroupMe messages containing LaTeX equations, renders them, and sends the output to the group chat as an image. The bot can also render short snippets of text, in addition to tikz plots.

Built with Python, LaTeX, and CGI.

September 2019 6 340

LaTeX Homework Template

Homework template using best-practice document styling. Designed specifically for typesetting solutions to math and computer science problem sets that will be graded online.

Built with LaTeX.

October 2020 32 4 68

Panopto Download

Script to facilitate batch downloading of lecture videos from Panopto.

Built with Python.

February 2020 42

This page makes requests to the GitHub API, the Hacker News Algolia Search API, and the Reddit API to automatically update the table with current information. Click here to flush the cache and force-reload the values.