This page lists some of my open-source projects. You can find the source code for all of these projects and more on GitHub.
Finished personal projects
All of my open-source projects receive continued maintenance when needed. The dates below, however, show when most of the major development happened.
- TerrariaClone (Spring 2011 – Spring 2013; HackerNews thread): My first major project, a clone of Terraria, preserved as an example of how terrible code can be if you don’t pay attention to its quality.
- Chrono Count (Summer 2013 – Spring 2014): iOS app to manage countdowns and countups under arbitrarily complex schedules, previously available from the iOS App Store.
- Calculus: Intuitive Explanations (Summer – Fall 2015; source): 67 pages of LaTeX content, from limits to vector analysis, with 35 TikZ figures.
- Differential Equation Solution Strategies (Spring 2016; source): Summary of strategies for solving different types of differential equations, with proofs.
- Linear Algebra Summary Sheet (Spring 2016; source): Quick reference for important linear algebra theorems, grouped so that making connections is easy.
- puzzles (Summer 2016): Solvers for KenKen and Sudoku puzzles in Clojure.
- empty (Summer 2016): Absolute bare minimum Leiningen template.
- Radian (Summer 2016 – Present): Elegant but practical configurations for Emacs, Zsh, Tmux, and Git.
- conway (Fall 2016): A simple solver for generalized Slothouber-Graatsma (Conway) puzzles in Clojure.
- smarter-playlist (Fall 2016): Clojure application to generate iTunes playlists combining variety, cohesiveness, and novelty.
el-patch(Spring 2017 – Fall 2018): Emacs package for future-proofing Emacs Lisp customizations.
straight.el(Spring 2017 – Present): Next-generation, purely functional package manager for the Emacs hacker.
intuitiveexplanations.com(Spring 2017 – Present): Personal website built on Travis CI/CD using Make, Jekyll, LaTeX, GIMP and hosted on Netlify.
- diary-manager (Spring 2017 – Summer 2018): Command-line tool and Emacs package for managing daily (encrypted, version-controlled) diary entries.
- mla-tex (Spring 2017 – Fall 2018): LaTeX document class for typesetting papers to MLA formatting standards.
- wdx (Fall 2017): Simpler and more robust alternative to wd, written in Python.
prescient.el(Fall 2017 – Present): Simple but effective sorting and filtering for Emacs.
- Hyperschedule (Fall 2017 – Present; source): Fast and powerful course scheduler for the Claremont Colleges.
- Madeline (Summer 2018): Novel approach to directory syncing, used to maintain complementary mirroring of two filesystem trees via SSH.
- heroku-buildpack-emacs (Summer 2018): Heroku buildpack to install Emacs.
- GNU ELPA Mirror (Summer 2018 – Summer 2019):
GitHub mirror of the GNU ELPA and Emacsmirror package
repositories for use with
- Blackout (Fall 2018): Unified replacement for
dim.el; allows hiding or customizing major and minor mode lighters in Emacs.
- Tidier (Spring 2019): Small application to auto-close abandoned GitHub issues by label and activity.
- Apheleia (Summer 2019): Run code formatters on Emacs buffer contents without moving the cursor position, using RCS patches and dynamic programming.
In-progress personal projects
- pset (Fall 2017): Configurable templating system for university problem sets typeset in LaTeX.
- Ishikk (Summer 2018): Read-write Google Calendar interface for Emacs, with graphical week view.
- µTunes (Summer 2019 – Present): Aggressively minimal command-line music player and library manager following the UNIX philosophy, with Emacs interface.
- Tabcrush (Summer 2019 – Present): High-performance power tool for editing large-scale tabular data in Emacs.
- Mercury (Summer 2019 – Present): Emacs interface to Facebook Messenger, Signal, and SMS (via Pushbullet)
(See also my resume, which includes proprietary work experience as well.)
- cortex.optimise (Spring – Summer 2016, ThinkTopic): General-purpose library for analyzing, visualizing, and comparing gradient descent algorithms.
- lazy-map (Fall 2017, ThinkTopic): Lazy map implementation for Clojure.
- UPM (Summer 2019, Repl.it): Universal package-management interface for Python, Node.js, Ruby, and Emacs Lisp.
- MazeGen (Fall 2014, Boulder High School, Design Technology): Java application to generate and visualize laser-cutter schematics for three-dimensional marble mazes.
- layerize (Fall 2015, Boulder High School, Design Technology): Clojure application to generate and visualize laser-cutter schematics for a cross-sectional model of a “Möbius solid”.
- JFLAP Autograder (Fall 2016, Harvey Mudd College, CS 42: Principles & Practice): Script to automatically run test cases against student-submitted DFAs, NFAs, or Turing machines in JFLAP format.
- VotingLib (Fall 2016, Harvey Mudd College, MATH 189G: Mathematics of Voting): Java library written for a short research project investigating the performance of different voting systems assuming voter satisfaction can be modeled as a high-dimensional Eucliean distance metric.
- heroku-buildpack-git-lfs (Spring 2019, Harvey Mudd College, CS 121: Software Development): Heroku buildpack to install Git LFS and download assets transparently during build.
- whales.life (Spring 2019, Harvey Mudd College, CS 121: Software Development): Simple webapp for playing chess against an AI using minimax and neural networks.