Inventory Manager

Years ago, I created a simple inventory ordering spreadsheet for a local drive-thru coffee shop. It had a master list of all inventory items with each item linked to other sheets in the book according to supplier. These sheets could then be attached to an email and sent to each supplier as an order form. It was a clunky system, but it was a great improvement over the paper system it replaced. The Inventory Manager application, written with Python and Django, was designed to improve upon the spreadsheet design. My aim was to closely resemble the spreadsheet system while streamlining the ordering process. This web application is certainly the most significant project I’ve undertaken and is now currently in production. The link above leads to the public repository, which is an earlier iteration of the project.


Student Log

When I first started teaching, I kept track of all my students info and assignment in a spreadsheet. It worked fine, but I didn’t prefer all the copy/paste operations, mouse usage, and scrolling it required. I wanted a more streamlined create, read, update, and delete format that relied only on the keyboard. I made Student Log to do just that: it was my first full program written in C, and I still use it for work today.


RSA Encryption Demo

In an effort to understand the RSA Cryptosystem more deeply, I researched it, wrote a blog post, and programmed a demonstration in Python. The program consists of a few functions: choose_pq(), which relies on a random prime number generating function and is one of the more complex steps in the process; totient(), which computes $\phi(pq) = (p-1)(q-1)$; and extended_euclidean(), which computes the exponent $d$, the multiplicative inverse of $e$. $e$ is used to encrypt the message and $d$ is used to decrypt it. It's really quite an elegant system.


Hasse Diagram Generator

While teaching myself Discrete Mathematics with the book Introductory Discrete Mathematics, I decided to build a small CLI application that builds Hasse diagrams. The user inputs the members of a set one at a time and then selects the type of relation from a list – less than relation, divisibility relation, or custom. For the Hasse Diagram to be valid, the set must be a partially-ordered set, being reflexive, antisymmetric, and transitive. Once this partially-ordered set is defined, the program draws the diagram on a canvas and outputs it as a jpg file.


Azul Board Game

This is a simple command line implementation of the board game Azul. I created it to sharpen my Python skills and to practice coding game logic. In the future, I’d like to further this project by implementing an AI opponent that makes use of Reinforcement Learning.


Simple Synth

Written with C++ and the Simple Fast Multimedia Library, this application generates a diatonic scale 12-Tone Equal Temperament that can be controlled with the middle row of the keyboard, A – K. To start the program, the user selects their preferred waveform, Sine, Square, Sawtooth, or Triangle.