I love to hack, make, and create!
I'm currently a freshman at the University of Illinois at Urbana-Champaign.
Formerly, I was president of Choate Programming Union (my high school CS club).
I'm also a ham radio operator (general class) – my callsign is
I mainly focus on crypto/security related things, although I have a variety of other interests.
More recently, I've been doing redistricting work at the MGGG redistricting lab.
As of 2020-12-31,
140/207 of my repositories are public. Here are several of my more interesting recent open-source projects (in no particular order and in varying degrees of completion).
housing-optimization Optimizing and automating the Choate Rosemary Hall housing allocation system with Markov Chain Monte Carlo and constraint optimizer techniques with the goal of replacing the current lottery-based allocation system.
node-kayles Calculations and generalizations for Node-Kayles/non attacking queens problem in combinatorial game theory. Uses a generalized node-contraction algorithm to achieve improvements over previous calculations in the literature. Written in Rust!
geocompose A library for representing geographical regions as a set of addresses. Intended for use in processing data products for redistricting and calculating precinct stability. Messy code!
pcompress Highly efficient compression of districting plans for speeding up gerrymandering research and improving reproducibility.
pbutil Cross-platform implementation of macOS's pbcopy and pbpaste in Rust. Helps make transitioning from macOS -> Linux easier.
gsimplify A Google Drive to html compiler. Google Drive is ubiquitous for writing and its collaboration and real-time editing features are the best out there.
gsimplifyaims to create a lightweight, more intuitive CMS system powered by Google Drive/docs that compiles a Google drive folder to a fully fledged website. Currently in development for usage in Choate's Student Council website.
🔑 Cryptography and Security
dropbox-timestamp: Automatic and trustless cryptographic timestamping in Dropbox (with attestations uploaded to Bitcoin). Merkle trees rock!
Trustless Random Beacon: A secure randomness beacon using sequentially applied hashes and hash commitments on the Bitcoin blockchain.
This was used to generate demonstrably random pairings of a chess tournament to great success!
monobox: A flexible, simple, (and secure) tool for rapidly coding, testing, and deploying applications using Docker. Currently deprecated.
CTFtools: Tools for cybersecurity (CTF) competitions. Used by Choate Programming Union's CTF team to win 8th place nationally at picoCTF.
timestamp-api: A HTTP api for timestamping via opentimestamps (with attestations on the Bitcoin blockchain).
⚙️ Theory of Computation
- pylambda: A lambda calculus implementation in Python.
This project was a weekend project – I plan to revisit this soon and add some types!
- lambda-etudes Little exercises in lambda calculus to derive and practice my lambda-fu in a typed functional language. Haskell!!! Inspired by the exercises in Introduction to Lambda Calculus by Henk Barendregt and Erik Barendsen.
📖 Machine Learning
chesscompress: Chess move compression for efficient storage of chess games (~90% compression) with asymmetric numeral systems.
deeppacket: GAN to fool deep packent inspection (DPI) and circumvent censorship.
🗄️ Archive Team
I also have spent some time helping out Archive Team by writing software that smartly queues some archiving jobs onto ~100 servers through an IRC interface.
queuebot: A smart autoscaling queueing service for archivebot for eventual upload to the Internet Archive's Wayback Machine (WBM). Currently focusing on automatic archival of missing political and governmental twitter accounts. Was live on efnet/#archivebot. Messy code!
archivist: Archiving politically and culturally important social media with archiveteam and archivebot (on IRC) to IA's WBM. Was live on efnet/#archivebot. Messy code!
I usually write code in emacs and spend most of my time on my computer in terminal (alacritty). My dotfiles (somewhat up to date) are here.
I usually use tmux over mosh to remotely work and develop, but sometimes I use good old-fashioned ssh (using mosh (via Blink) on my school-issued iPad plus a bluetooth keyboard can be very productive!).
For IRC, I use WeeChat with several custom plugins and filters (may be open-sourced in the future) and my nick is usually
maxfan8 (you can find me on efnet and hackint, although I prefer the latter).
(Is this latest GitHub feature gimmicky? Yeah, ^^ it certainly looks like it is!) Written in (doom emacs).