---
layout: default
title: Projects
permalink: /projects/
---

* March – May 2026: [Pride Braid](https://justcactus.art/pride-braid), a 3D printed sculpture designed in OpenSCAD

* February 2026: [Full-Stack Web Development in Rust](https://github.com/boringcactus/more-groceries/blob/dioxus/slides/slides.pdf), a presentation at the Utah Rust meetup

* November 2025: [Deleted Pippin Barr Game](https://somnolentsucculentstudio.itch.io/deleted-pippin-barr-game), the video game adaptation of the conceptual classic [Erased de Kooning Drawing](https://en.wikipedia.org/wiki/Erased_de_Kooning_Drawing) by Robert Rauschenberg

* May 2025 - now: announcement pending

* August - September 2024: [solipsist.social](https://solipsist.social/), a work of conceptual art in the form of a set of single-user fediverse instances running in allowlist mode that only federate with each other

* September 2023 - now: [MBTA Go](https://www.mbta.com/goapp), a mobile app displaying schedules and predictions for the Massachusetts Bay Transportation Authority, with an [Elixir backend](https://github.com/mbta/mobile_app_backend) and [Kotlin Multiplatform / SwiftUI / Jetpack Compose frontend](https://github.com/mbta/mobile_app)

* July - September 2023: [Fountain 1917](https://somnolentsucculent.studio/fountain-1917/), the video game adaptation of the infamous Dadaist anti-art sculpture

* April 2022: [Schrödinger’s SAT](/assets/Schr%C3%B6dinger_s_SAT.pdf), a SIGBOVIK 2022 submission (published alongside [Harder Drive](http://tom7.org/harder/), but hardly in the same league) “proving” that P = NP under many-worlds quantum mechanics

* January 2022 - August 2023: [Glides](https://medium.com/@katrinalanger/green-means-go-improving-green-line-operations-b831daf7a834), an Elixir and React service for train tracking on the MBTA's Green Line

* March - April 2021: [makers](https://code.boringcactus.com/makers/), a Rust implementation of `make`

* November 2020: [cactus-ssg](https://git.sr.ht/~boringcactus/cactus-ssg), a Python static site generator targeting both WWW and Gemini (built this site right here!)

* September 2020: [Crowbar](https://crowbar-lang.boringcactus.com), a language offering "the good parts of C, with a little bit extra"

* September 2020: [gemifedi](https://sr.ht/~boringcactus/gemifedi/), a Rust server offering a Gemini frontend to the fediverse

* September 2020: [csgo-gsi](https://sr.ht/~boringcactus/csgo-gsi/), a Rust library for integrating with CS:GO

* August 2020: [the Fuck Around and Find Out License](https://sr.ht/~boringcactus/fafol/), an experimental software license

* June 2020: [Slabforge](https://handandmachine.org/index.php/2021/10/15/slabforge/), a JS CAD tool for slab-built ceramics built as part of [research published at CHI '22](https://doi.org/10.1145/3491102.3517663)

* June 2020: [pig.observer](https://pig.observer), a JS frontend for viewing several traffic camera streams simultaneously (finished)

* December 2019: [cargo-why](https://sr.ht/~boringcactus/cargo-why/), tracing dependency paths to show why a Rust crate is needed in the current project

* December 2019: [wasm-pack pull request #745](https://github.com/rustwasm/wasm-pack/pull/745), adding watch and serve subcommands

* November 2019: [wasm-pack pull request #736](https://github.com/rustwasm/wasm-pack/pull/736), adding support for binary crates (finished)

* October 2019: [wasm-bindgen pull request #1843](https://github.com/rustwasm/wasm-bindgen/pull/1843), adding support for binary crates (finished)

* October 2019: [OWReplayRenderer](https://github.com/boringcactus/OWReplayRenderer), a utility in Rust to render out Overwatch replays to a single video file automatically

* September 2019: [micro-ci](https://github.com/boringcactus/micro-ci), a tiny self-hosted CI system written in Rust

* September 2019: compiler for the [While programming language](https://www.oxfordreference.com/view/10.1093/oi/authority.20110803122041931), written in Rust as a group project for a compilers class

* June 2019: [faketwitch](https://github.com/boringcactus/faketwitch), an IRC server shim in Python to allow Twitch-chat-integrated games to use other services instead of Twitch

* February 2019 - January 2021: [vidslice](https://github.com/boringcactus/vidslice), a wxPython GUI wrapping youtube-dl and ffmpeg (finished)

* January 2019 - July 2021: [kink.garden](https://github.com/kinkgarden/kinkgarden), a (NSFW) Django service for maintaining lists of kinks (finished)

* January 2019 - March 2020: [DynaMaze](https://github.com/boringcactus/dynamaze), a Rust-based multiplayer game compiled to WebAssembly (finished)

* December 2018: [crabravebot](https://git.sr.ht/~boringcactus/crabravebot), a Python (originally JS) service for easily overlaying text over Crab Rave

* August 2018: undergraduate thesis on natural language processing and textual entailment (finished)

* February 2018: full stack web application with Spring, React, and Elasticsearch for a software engineering class (finished)

* October 2017: [functional-dependency-generator](https://github.com/mathphreak/functional-dependency-generator), a PHP site that generates database theory example problems (finished)

* August 2017: [rust-editorconfig](https://github.com/mrandri19/rust-editorconfig), an editorconfig library for Rust that I substantially contributed to

* July - November 2017: [MFTE](https://github.com/mathphreak/mfte), a Nano clone written in Rust

* April 2017: graphics library exposing XPM and Swing-like layout interfaces and targeting a set-one-pixel-at-a-time renderer

* March 2017: [cull21](https://github.com/mathphreak/cull21), a Ruby web-based Gmail API client designed specifically for powering through backlogs (finished)

* January 2017: [Yummy Goodness](https://github.com/mathphreak/yummy-goodness), a JS game built with Elm (finished)

* September 2016: [prodenfd](https://github.com/mathphreak/prodenfd), a Ruby program that doesn't let me play games if I have pending tasks in my todo list due soon (finished)

* August 2016: [verbatim](https://github.com/mathphreak/verbatim), an Electron application for integration testing an actual binary against an expected one (finished)

* July 2016: [Rust pull request #34694](https://github.com/rust-lang/rust/pull/34694), adding trivial helper methods to the `IpAddr` enum

* June 2016: [halfhearted](https://github.com/mathphreak/halfhearted), a JS game built with just React (finished)

* January 2016: [compare-ignoring-articles](https://github.com/mathphreak/compare-ignoring-articles), a JS library for sorting in a natural way

* January 2016: [Galactic Max](https://github.com/mathphreak/Galactic-Max), a JS game built on Phaser with a full team for a hackathon (finished)

* December 2015: [CS Eco Dash](https://github.com/mathphreak/cs-eco-dash), a Rust web application taking [CS:GO data](https://developer.valvesoftware.com/wiki/Counter-Strike:_Global_Offensive_Game_State_Integration) and presenting recommendations

* September 2015: [E-800](https://github.com/mathphreak/E-800), a Rails web app for running and grading student-submitted code

* August 2015: Java application translating CSV exports from one academic record keeping program to be importable by another, with a Swing GUI

* June 2015 - August 2016: [Relief Valve](https://github.com/mathphreak/ReliefValve), an Electron application for moving Steam games between libraries (finished)

* March 2015: [statdns-socks5](https://github.com/mathphreak/statdns-socks5), a Go proxy server for DNS-over-HTTP before it was cool

* November 2014: [komodo](https://github.com/KamikazeKumquatsLLC/komodo), a Web-based realtime quiz system powered by Meteor

* May 2014: [AltcoinNetWorth](https://github.com/mathphreak/AltcoinNetWorth), a Web-based dashboard for an altcoin portfolio, written in Go

* December 2013: [LD28-You-Only-Get-One](https://github.com/mathphreak/LD28-You-Only-Get-One), a Backbone-powered textual JS game

* August 2013 - November 2015: [hamwerk](https://github.com/mathphreak/hamwerk), a Web-based todo list specialized for homework powered by Meteor (finished)

* July 2013: [MCWebDash](https://github.com/mathphreak/MCWebDash), a Web-based dashboard showing the status of a Minecraft server

* June 2013: [SpawnAndBack](https://github.com/mathphreak/SpawnAndBack), a simple Minecraft mod

* March 2013: [BecauseWhyNot](https://github.com/mathphreak/BecauseWhyNot), a CPU emulator written in CoffeeScript for the DCPU-16 fictional CPU from Notch's cancelled 0x10c.

* March 2013: [CompetentDeathMessages](https://github.com/mathphreak/StaffDrops), a Minecraft server plugin

* January 2013: [Republica Eternity Event III](https://github.com/mathphreak/RepublicaEternityEventIII), a Minecraft server plugin some friends needed help with

* November 2012: [StaffDrops](https://github.com/mathphreak/StaffDrops), a Minecraft server plugin a friend needed help with

* July 2012: [Multiverse Core pull request #780](https://github.com/Multiverse/Multiverse-Core/pull/780), adding a feature to a Minecraft server plugin

* October 2011: [github.js](https://github.com/mathphreak/github.js), a library for making client-side calls to the GitHub API

* May 2011: [Zrczr](https://github.com/mathphreak/Zrczr), a canvas-based JS game

* May 2011: [Pecan.js](https://github.com/mathphreak/Pecan.js), a library for persisting scroll position

* March 2011: [VCRI](https://github.com/mathphreak/VCRI), a Chrome extension tweaking an existing JS game (finished)

* January - February 2011: [Arduinochet](https://github.com/mathphreak/Arduinochet), a needlessly-motorized trebuchet I built with a friend

* February - May 2010: [Acts 20:2](http://sourceforge.net/projects/acts202/), a Java Swing application displaying periodic popups of Bible verses, which I built in collaboration with a few other people

* January 2009: [EPlanner](https://sourceforge.net/projects/eplanner/), a todo list specialized for homework built in Java with Swing
