Professional Projects

An incomplete list of some of the more interesting projects I've worked on in a professional setting.

Employee Alarm Watch App

Date: 2023
Technologies: iOSWatchOSSwiftMQTT
Categories: Full-StackWatch DevelopmentMobile Development

A watch app that listens to MQTT topics which can trigger alerts to be fired to individual employees based off of value ranges.

Machining Data Collection

Date: 2023
Technologies: RustDockerCMQTT
Categories: Embedded ProgrammingNetworking

An embedded application that sits on the same network as a machine to parse and send diagnostic messages to a centralized server.

Large ETL Project

Date: 2021 - Current
Technologies: TypeScriptMSSQLAirflowDocker
Categories: Data EngineeringSystem AdministrationCloudAzure

A large set of cloud servers that run ETL processes and other long term applications. Personally responsible for 15 different ETLs that run every day loading over 1Tb of data per day. Solution utilizes Airflow including 8 different Docker containers.

Employee Task Manager Website

Date: 2022 - Current
Technologies: C#MVVCJavaScriptMSSQL
Categories: Full-StackWebDev

A website to track tasks and issue alerts when tasks go over time. Built using C# and integrated into a much larger application.

Futures Analytics Platform

Date: 2017 - Current
Technologies: PHP
Categories: Full-StackWebDevDatabase AdministrationSystem Administration

My role on this project was to handle all of the backend requests. Most notably being the logic that combined various datasets and ran user specified math operations on them. While simple to describe the implementation was incredibly complex due to the inconsistent x axis and volume of data.

Now, my role has shifted to maintenance.

Tool Failure Tracking Website

Date: 2021 - 2022
Technologies: C#MVVCJavaScriptMSSQLBarcode Scanner
Categories: Full-StackWebDev

A website to track tool failures built on top of C# and incorporated in a much larger application.

Data Verification Website

Date: 2022
Technologies: TypeScriptReactMSSQLMetronic
Categories: Full-StackWebDev

A website that allows clients to verify the end results of a few ETLs resulting in millions of dollars in saved time.

Softball Tracker

Date: 2020 - 2022
Technologies: TypeScriptCouchDBPouchDBIndexDBDocker
Categories: Full-StackWebDevOffline WebDevSystem Administration

An offline webapp that allows you to track Softball games without internet and syncs when the user eventually gets an internet connection again. A major complication in this app was enforcing security rules surrounding read/write permissions. Since the database needed to be fully downloaded in the browser that meant that everything in the database had to be assumed public access.

Testafy Board

Date: 2019 - 2020
Technologies: NodeJSTypeScriptRaspberryPI
Categories: Embedded Programming

An embedded codebase running on a RaspberryPI that connects to a centralized server allowing users to interact with a website using a custom built hardware interface.

Social Media Engagement Platform

Date: 2017 - 2018
Technologies: NodeJSCoffeeScriptAWSAuthenticationSecurityServerless
Categories: Full-StackWebDevSecurity

This application allowed users to interact with tweets and other social media posts to have things delivered to them! Either using an app like UberEats, Postmates, or by foot!

Making all of these different services interact with each other seamlessly was a major challenge. But the biggest challenge was actually maintaining server stability. You really underestimate the amount of traffic a single social media post can get. Our infrastructure had to be able to quickly scale up from a few hundred of users to hundreds of thousands every minute without any performance degradation!

My role largely focused on security audits, api development, internal tool development, and R&D.

RNA Sequence Validator

Date: 2016
Technologies: PythonFlask
Categories: Full-StackInfrastructure

When reading in RNA sequences there are frequent errors where one peptide will show up incorrect. Luckily to a trained eye these sequences can be verified easily. The only problem is that visualizing sequences with millions of elements where only a few might be incorrect isn't really realistic. This project focused on displaying sections of RNA sequences for verification and doing so in a way that the user could go through large volumes quickly.

Website Validator

Date: 2014 - 2015
Technologies: JavaDOM
Categories: Infrastructure

A parallelized web scraper that scanned through a set website looking for broken links, broken images, typos, or any specific item and constructed a todo list of items to resolve.


Personal Projects

A list of in progress or completed projects I've worked on in my free time.

Web MMO

/img/web-mmo-explore-0.png
Date: 2023
Technologies: ReactVueJSViteTypeScriptWebRTCUTCWebSocketTCPRollback NetcodeDocker
Categories: Full-StackWebDevNetworkingInfrastructure

My goal with this project is to make a very basic MMO optimized for the browser that can keep up with the network and graphical requirements of modern day mobile MMOs. It's basically my excuse to work with the somewhat new WebRTC and WebGPU browser specs.

So far it has been a really fun project, allowing me to make a new game engine. The hardest problem I've had to solve so far being Rollback Netcode. Simple in concept but very difficult to actually implement.

Auth Layer

/img/auth-layer-0.png/img/auth-layer-1.png
Date: 2023
Technologies: DockerReactNextJSTailwind CSSJWTJWKSOauth 2.0
Categories: Full-StackWebDevInfrastructure

I needed a way to handle user management for the Web MMO project so I decided to spend a few weekends and build an auth server which supports oauth 2.0.

Also required me to spin up a Mail Server to send verification emails so that was a fun aside.

Data Layer

Date: 2023
Technologies: DockerPSQLKnexNodeJSExpress
Categories: BackendInfrastructure

I needed a way to handle user data like saves as well as server data so I built a pretty basic general storage layer for the Web MMO.

It uses a resource group and resource ownership system that enforces all of the resource security.

Wordle Clone and AI

Date: 2022
Technologies: TypeScriptReactCanvas
Categories: WebDev

I spent a weekend and made Wordle with the goal of making an AI to play the game better than I could. Implementing the AI turned into a pretty fun programming problem.

Scrabble Clone and AI

/img/wordstorm-0.png/img/wordstorm-1.png
Date: 2022
Technologies: TypeScriptReactCanvas
Categories: WebDev

Working off of the inspiration from the Wordle clone, I wanted to make a more complicated AI that works with words. I first implemented 4 player Scrabble and then added an AI to it. This AI was a crazy complicated problem due to the large number of conditions to maintain with each move, but I got it optimized enough to play at the same rate as a human. Also, it's impossible to beat.

Relational CouchDB - GitHub

Date: 2022
Technologies: TypeScriptCouchDB
Categories: Full-StackWebDevOffline WebDev

Through my work on the Softball project, I found a great use case for CouchDB. The only problem is that CouchDB is a NoSQL database. So enforcing consistent table structures and references isn't a built in feature. I developed this simple library which implements the basic parts of relational databases on top of CouchDB using their internal systems.

ABET Submission System

Date: 2020 - 2022
Technologies: TypeScriptAngularStrapi
Categories: Full-StackWebDev

This was a major project I worked on for a few years. The goal was to allow professors to keep track of their ABET student outcomes through out the semester. It turned into a website that allowed multiple professors to evaluate the same class together using Angular and Strapi.

Website Status Tracker

Date: 2021
Technologies: ServerlessNodeJS
Categories: WebDevServer Administration

A basic node application that runs in a serverless environment to check if a list of websites are up or not. On failure it sends a notification to a configured list of users.

Daily Notes

Date: 2020
Technologies: TypeScriptBlazorJQuery
Categories: WebDev

I wanted to get some experience with different front end frameworks, so I decided to implement an offline note tracker in four different frameworks: Angular, Blazor, JQuery, and React.

Charon Game Engine

Date: 2015 - 2019
Technologies: Deferred RenderingQueued RenderingGBuferVulkanOpenGLOpenALGame AICustom File FormatsTrue Type Fonts
Categories: GraphicsGame EngineParallel ProgrammingAudio

Game development has always been a passion of mine, and is actually what got me into programming. I love how it requires such a complete understanding of programming, between handling big data, object serialization, multithreaded programming, graphics, and many more.

The goal of this engine was to provide a system able to accomplish some of my long term goals and to learn more about engine development. The engine has gotten to a point where it can easily be used to make games and has been used to make many 2D games and one 3D game.

LWJGL Shader Manager - GitHub

Date: 2018
Technologies: LWJGLOpenGL
Categories: Graphics

Dealing with shaders can be a pain and I always found it somewhat tedious. I also found that there weren't many shader managers available in Java for GLSL. So I took the processor we used in the charon engine, made a few improvements, and made it publicly accessible.

Game Jam: Bulwark - GitHub

Role: Lead Programmer
Date: 2018
Categories: Game Development

As a test of our engine, the team decided that we would do a short 48 hour long game jam. This game is what we came up with. We took some of the old concepts from side scrolling space shooters and put them to the test. Culminating in what we ended up calling Bulwark. It is by no means a complete game, but it was fun to make and we hope that you have a fun time playing it.

This project involved working very close with the artist due to the time restriction. We were doing things in this game that we had never done with the engine before and this involved a lot of trial and error with the rest of the team.

Minesweeper - GitHub

/img/minesweeper-beginner.png/img/minesweeper-expert.png
Date: 2018
Categories: Game Development

The University of Kentucky asked us to entertain kids at an event they were holding so each developer on the team remade an old retro game using our engine. This was the one I decided to make.

JDaeLoader - GitHub

Date: 2016
Categories: GraphicsParsers

Ever since high school I wanted to write a Collada Dae file loader for Java since there are none that make rendering 3D animated files easy. When I saw that I would get extra credit for rendering a modeled mesh on a homework assignment I decided to finally write the whole thing.

It is a very simple Collada Dae file loader and it relies on the user to implement the rendering function. However, it does connect all of the relevant data and will even generate the VBO and VBA buffers for OpenGL. The program will even put in the relevant vertex weights to each point within the VBA array.

Space Shooter - GitHub

Date: 2016
Technologies: Java2D

This game was inspired by Ludum Dare, which is a 48 hour long programming competition. This was not made during one of the competitions, but I thought the idea of programming with a time constraint would be fun so I did a personal challenge. The actual programming for this game took about 7 hours and only used things in Java's standard library.

Recursion Visualizer

Date: 2015
Technologies: Java2D
Categories: Algorithms

When I first took CS315 (before I became the TA for the class) I was inspired by one of the lectures to create a visualization for a cool theorem our professor showed us. He told us how a square with a size of a power of two with a single missing square in the corner could always be filled in with a particular triangle looking like shape. So I decided to write a quick program to visualize how you could recursively fill the shape using the smaller shape and got a fairly cool looking result.