|
Warp Factory
Main page, Steam
Warp Factory is an automation puzzle game which I developed (as a one person team) starting in October 2019 and released commercially in June 2021.
- Written primarily in C++ (~30,000 lines of code).
- Implements a custom grid-based physics engine, including a number of algorithms efficiently solving graph theoretical and linear algebra problems.
- Exposes a Lua API for level creation and for modding.
- Graphics and user interface implemented directly on top of SDL2 and OpenGL.
- Deployed for Windows 10, Mac OS X, and SteamOS (Linux).
- Created original graphical assets and music for the game.
- Designed 100 puzzles for the game's campaign.
- Published on Steam and Itch.io
More...
|
|
Type Theory-based Interpreter [In Progress]
Web demo, GitHub
This is a simple interpreter for a dependently typed programming language that I've been toying around with for a while (though with only some success recently). It's inspired by languages such as (cubical) Agda and by various math papers I've read. It's not too far along yet.
- Written primarily in C++.
- Implements fairly complex logic to lex, parse, compile, and interpret a simple functional programming language, as well as generate useful compiler diagnostics for errors.
- Compiles to WebAssembly via Emscripten.
- Uses source code generation (with Python3 & Jinja2) to write boilerplate code (in cases not amenable to template metaprogramming).
- Designed after reading many mathematics papers from the last 10 years on type theory, homotopy type theory, and cubical type theory.
More...
|
|
“Incidence Geometry and Universality in the Tropical Plane”
This is a mathematics paper that I wrote with a mentor and two other undergraduates in the summer of 2017 (published October 2018). It resolves three previously open questions regarding tropical geometry (an area of mathematics which, loosely, studies certain piecewise linear structures).
- With coauthors, produced rigorous proofs of several previously open conjectures.
- Worked with coauthors to communicate the mathematical content clearly (...to the intended audience of research mathematicians 😛).
- Presented the paper at two math conferences.
More...
|
|
Ludum Dare entries
Play most recent entry in browser, All entries (source code, hastily written)
Ludum Dare is a game jam where participants create a game in 48 hours based on a theme. I've created 11 games for the contest, beginning in April 2011 and most recently in April 2020.
- 6 entries written in C++ (5 using SFML, 1 using SDL2 compiled to WebAssembly), 5 using Processing (Java).
- Created original graphical assets and music for the games.
More...
|
|
Electromechanical Instrument with Software-Controlled Haptic Feedback
This is an instrument I built for a class in Spring 2019. It consists of a series of bars, each connected to a DC motor and a potentiometer (functioning as an encoder). The system can create various behaviors of the bars - such as by creating virtual detents where the bars settle, increasing the apparent inertia of the bars, counteracting friction, or replaying motions taught to the device. It is controlled by an Arduino which interfaces, over USB, with a laptop.
- Implements a simple motion controller on an Arduino board.
- Uses a compact serial protocol for transmitting position data and receiving complex configuration data.
- Wrote code in Supercollider (a music synthesis programming language) to interpret the data from the device as music.
- Used milling machine, bandsaw, and hand tools to produce mechanical components.
- Produced various prototypes, altering both software and hardware, to achieve better results.
More...
|
|
Practice Carillon
A practice carillon is an instrument meant to allow carillonneurs to practice new music quietly. I designed and built this instrument starting in late 2019 and finishing in mid 2020, using wood and aluminum.
- Designed the instrument, with a counterweight-based action and with console measurements conforming to the North American carillon standard.
- Built out of wood and aluminum using various machine tools (mostly a drill press, planer, bandsaw, and miter saw) and hand tools.
- Used a tiny CNC router to cut curved profiles; wrote code in C++ to communicate with the device and generate appropriate paths - with provisions for interactive work-positioning and various configurations to help optimize the machine's cycle and improve the results from a machine of questionable quality.
More...
|
|
Music Composition
Main page for music
I write music, principally for piano and carillon, though occassionally using electronic media.
|