Check out the code for my projects on my GitHub page.


Interactive Web Applications

Check out some of the applications I developed in JavaScript.


Find me on LinkedIn

Visit my GitHub







Gutenberg Browser

Designed after System 6, this project allows users to browse books belonging to The Gutenberg Project quickly and easily. This is the first React.js project I created after getting my React certification from Codecademy.

Code Breaker

Code Breaker is a JavaScript puzle game based on the 1970 board game Mastermind. Use the clues given after each turn to determine the computer's randomly generated, 4-color code.

WWII Plane Game in Phaser.js

WWII themed plane game made in the Phaser 3 JS library. Use the arrow keys to move, use the space bar to fire. Points are subtracted for allowing a plane to get away. All assets and code were created by me aside from the background and the music.

Scheduling Algorithms Simulator

Program made to demonstrate the advantages of a dynamic algorithm over the fixed priority, rate monotonic algorithm, as outlined in the paper "Scheduling Algorithms for Multipogramming in a Hard-Real-Time Environment" by Liu and Layland.

Conway's Game of Life

Conceived by mathematician John Conway, Life is a 0 player game meants to represent a self-replicating system. Click the squares to change the state of a space from live/dead. Each tick is one generation. The game is undecidable, which means that no algorithm exists that can tell whether the pattern will continue or halt.

Knapsack Algorithm

This is a modified version of the knapsack problem, created for my algorithms class. The program accepts a value for k, then accepts a set of numbers. It then tests to see if a combination of the given numbers will add up to k.

Canvas Game

My first interactive game. After reading the HTML Canvas documentation, I challenged myself to create a game using it in under 24 hours. Use the mouse or the arrow keys to maneuver the ball. Dodge the blue rectangles and collect the red squares to earn points. THe game uses an HTML canvas as the game field and JavaScript for the game physics. Doesn't work on mobile devices.


The maze is created by a random depth-first search algorithm. The 'DFS' button will solve the maze with another depth-first search. When entering the site, a window will prompt you to enter the size of the maze. Anything over 100x100 will probably lag. Clicking on a block will allow you to remove/place a wall in that square.


Scheduling Algorithms: Fixed Priority Vs. Dynamic

This article goes over the difference between fixed priority and dynamic scheduling algorithms, as outlined in Liu and Layland's "scheduling Algorithms for Multi-Programming in a Hard-Real-Time Environment." Examples, definitions, and explainations provied.