Greetings, prospective employers! Here are some projects I've done in my spare time over the past few years. I've listed them below.
RPS.sh is the world's first cryptographically secure and independently verifiable rock-paper-scissors game. The key feature of RPS.sh is the fact that players do not need to rely on a server to verify game results, since any third party or blockchain can verify the integrity and result of the game. The game is played by two players, each of whom holds an Ethereum wallet. Players sign a series of linked off-chain EAS attestations with their wallets to make cryptographic commitments to their moves. We imagined this game as a way to demonstrate the utility and composability of digital signatures in the EAS protocol. I've linked to a detailed guide I wrote on how the game works below.
Threadpage.com is a user-friendly interface for writing math problems and organizing online math contests. I first imagined threadpage as a niche resource for myself and my teammates on my school's math team to use to write and publish math problems easily. As time went on, I invited more of my classmates to join me in writing problems for the site. Threadpage's success comes mostly from the fact that we began running contests consistently before every exam in our calculus class. These were widely used as a resource for studying, and encouraged us to write problems while encouraging our other classmates to take part in contests, which they largely saw as a more entertaining version of the preparation they would have otherwise done on their own. The site is complete with a simple process for any user to write problems and contests, as well as automatic grading (that can be corrected manually by contest writers through the Grading Dashboard if needed) and leaderboards. Contests can also be written in multiple formats, such as marathon and relay.
Gatekeeper is a tool for generating logic circuit diagrams. Originally built as a command-line utility, gatekeeper takes logical syntax as input and generates an electrical diagram using NPN transistors. The LED symbol on the diagram is placed at a location where voltage will be high if and only if the logical condition described is met. Each of the parameters to the logical statement is the voltage input to a transistor on the diagram. Lately I've become more interested in the fundamentals of computer engineering, and I created this tool to test and apply my knowledge of logic circuits. Over the past few months, I've built a few small computer parts on breadboards, and I have some larger projects in the works.
Unnamed-ai is a CPU-based neural network image classifier written in javascript. Unnamed-ai creates a matrix of weights and biases, and saves that matrix to the user's local file system. The model is trained through simple backpropagation and gradient descent, although I might come back to this project in the future to implement some optimizations (adding momentum, improving the loss function etc.). I created this project to deepen my understanding of neural networks and their inner workings.
Built as a final project a project studio class, this fall detector calculates jerk based on accelerometers attached to the user's body. The jerk is then compared to an experimentally determined threshold to detect whether a user has fallen. Upon concluding that a user has fallen, the device sends a signal to a receiver, ideally held by a user's caretaker, neighbour, or family member.
This project is a programming language I implemented on top of Java, along with two of my high school friends as a final project for our programming class. Impluse works in a framework of procedures, each of which is written by the programmer, and makes up a single layer of the program's call stack. Additionally, Impulse requires some naming conventions to be followed by the user, in order to allow procedures to call one another. To give credit where credit is due, the graphical design elements of Impulse are mostly due to my friend William, as well as the interactions between Impluse and the user's system configurations. The design and underlying algorithms of the language are mostly my own work.
This is an outline of a proof of the fact that the determinant of a matrix can be computed using any row to perform a Laplace expansion. Inspired by a math teacher asserting this without proof, I came up with this 16-page document outlining a logical thought process that leads to this result. It took over a week for me to formulate the idea for this proof, and I still think of it as one of my favorite mathematical proofs that I've written to date. The following terms appear in the outline, so it would be useful to know their definitions before reading.