Here is a collection of personal projects, school projects, and work projects that I am most proud of. When able to, I will link to the source code or the project's website. I am always looking to expand my project catalog, so contact me if you are in need of a developer!

website: This Website

technologies: Django, Python, HTML, SASS, CSS

This is my personal website that I will be trying to keep updated. Currently, it is mostly a dynamic resume for myself, but I plan on expanding it in the future!

Worldspinner image

Worldspinner is a map generation and creation tool for tabletop fantasy RPG games. The user spins an incredibly detailed world which they can then tweak to their taste. This includes customization of the world's geography and weather patterns, cultures and nations within the world, the progression of history, cities, and points of interest. Once the map is ready, it can be printed for use at sizes ranging from A4 to 31x60 inches.

I started work with Worldspinner in November 2015, and it has been my first experience with kickstarter and developing in a small team environment with remote employment. My work on the project has included all layers of the stack from the database, to the restful api, to the front end client.

My major contributions to Worldspinner include: the print on demand service, social media integration, several user tools for customizing their worlds, a heraldry editor that allows users to create a custom coat of arms, and several scripts to grant kickstarter rewards to users.

MyCRT image

source code:

technologies: NodeJS, TypeScript, NPM, Express, Postman, Mustache, React, Sass, JavaScript, Webpack, MySQL, RDS, S3, Grunt, Git, GitHub, Travis, Chai, Mocha, Slack, Jira

MyCRT is my Capstone project for my final year at Cal Poly. I am working in a group with 5 other students to create a MySQL capture and replay tool for use with RDS. This will enhance the RDS experience by allowing users to analyze different MySQL environments for their data. The project is an open source web server that users will install on their own machines. For more details, read our project description below.

Amazon Web Services (AWS) has been the face of cloud computing and has provided a plethora of related resources to consumers and businesses since 2002. These resources include Relational Database Services (RDS) which allows customers to host a MySQL database in the cloud. This database is fully managed by AWS, thus abstracting the customer from maintaining scalability, administration, and security. Customers who are looking to modify their MySQL RDS server environment want to preemptively test workloads before committing to these changes - a capability that is currently missing in RDS. The ability to compare workloads on different servers would enable customers to seamlessly test MySQT environment changes without affecting their production database.

The MySQL Capture and Replay Tool (MyCRT) will provide a valuable enhancement to the services that RDS offers. With this tool, customers may test different MySQL server environment configurations with their database schema and observe performance metrics on their relational database. A typical MyCRT user would first capture a workload on an existing RDS instance which is saved to a file. Then, they would set up other RDS instances with the new configurations that they want to test. Finally, they point MyCRT to the new environment and replay the captured workload allowing MyCRT to analyze database and system metrics. This feature is already present in other competing services such as Oracle’s Database Replay, and there is a clear business opportunity to accommodate a popular feature into RDS.

Waypoint image



source code:

technologies: Swift, Sprite Kit, Gameplay Kit

development date: December 2017

Waypoint is a pirate themed roguelike game developed for iOS devices. The purpose of the game is to navigate through 12 levels of enemies and treacherous oceans to collect as much treasure as possible. As you play, you can purchase items and powerups for your ship that will make each play through a unique experience.

Ahoy Mateys! Get ready to embark on a treacherous voyage filled with perilous waters, dangerous adversaries and best of all, TREASURE!!! Come set sail on the high seas and collect all the doubloons and gems you can by pillaging other ships. Choose your ship wisely and be sure to upgrade your ship along the way, or else you may have a deadly tale to tell! Navigate along several waypoints on the map that lead to 'X' marks the spot. However beware.... for legend tells of a deadly foe that guards the hidden trove of booty. Weigh anchor and hoist the mizzen, it’s time to set sail!!!

Search And Rescue Drone image

source code:

technologies: C, C++, Java, JavaScript, Bash Scripting, DJI SKDs

development date: September 2017

This project was my internship project at Microsoft during summer 2017.

The objective of the Search And Rescue Drone project was to help search and rescue teams more easily find lost hikers in terrain that is difficult to traverse. This was done by building a portable cell phone network hosted on a raspberry pi that can be carried by a drone. The drone could then be deployed in areas where there was no cell signal to accelerate the location of a lost hiker.

The cell network waits for a phone to register, and then takes periodic measurements of connection strength. It then relays these measurements to the drone pilot who can try to increase the signal strength by flying closer to the hiker.

A flight controller android application was also built to facilitate this functionality. The app can generate a heat map to overlay on a map, perform network configuration, and even allow the drone pilot to hold an SMS conversation with any phones on the network.

Ray Tracer image


source code:

technologies: C++, Make, Python (for testing and automation)

development date: June 2017

A ray tracer implementation in C++ (all on the CPU, not GPU) that reads .pov files and renders a single view. Different lighting implementations are included (Blinn-Phong and Cook-Torrance), super-sampled anti-aliasing, ambient occlusion, and monte-carlo global illumination, and a bounding volume hierarchy are some of the features implemented in this ray tracer.

KLX (Language) image

technologies: C++, YACC, Bison, PostScript

development date: June 2017

A simple language that I put together for a programming languages course. The KLX is compiled into postscript that draws a simple picture from simple colored shapes. The language supports arithmetic (boolean and algebraic) variables, basic control flow, procedures, and handles scoping properly.

word complexity equation
3D LIC (Line Integral Convolution) image

technologies: Python, VTK

development date: June 2017

An implementation of a three dimensional line integral convolution algorithm with the purpose of visualizing 3D vector fields. The whole algorithm was implemented by hand including discrete euler integration.

The algorithm is displayed with a simple vector field and can be inspected with the assistance of clipping planes in all 3 dimensions. Additionally, the user can right click on the LIC and a stream line is inserted in the view. The whole view can also be rotated in all dimensions.

Dice Roller image


source code:

technologies: C++, GLSL, OpenGL, GLFW, GLEW

development date: March 2017

The purpose of Dice Roller is to (unsurprisingly) roll dice! The simulator puts no influence on the outcome of the roll and can be used for any game that requires rolling dice. The program is an OpenGL application that allows for limited camera controls to inspect the arena that the dice are being rolled in. There is no physics simulation, only procedurally generated parametric trajectories and rotations that result in specific (but still random) dice faces.

Input for the program is taken from the command line with a syntax that looks like: "2d4+3d8+7". This will roll 2 four-sided dice, 3 eight-sided dice, and add 7 to the total (the total is presented on the command line). Meanwhile, the dice are visually tossed onto the arena with randomized materials.

NowYouKnow image

source code:

technologies: MySQL database, Spring Framework (MVC web app), maven, TravisCI, Sonarqube, JUnit (with Mockito), Javascript/AngularJS frontend

development date: December 2016

NowYouKnow is a web service that is designed as an open forum for users to ask and answer simple/stupid questions. You know... the kind of questions people are afraid to ask because they should know the answer.

The project was developed as a full stack application from the ground up as a class project. The course was an "Individual Software Design and Development" course that focused on the software engineering process. As a result, the github has a fair amount of documentation: class diagrams, system architecture, API call documentation, etc.

Rubik Timer image


source code:

technologies: Javascript, Node.js backend, AngularJS frontend, Bootstrap, MySQL database

development date: July 2016

Having said that, please give it a look! I am very proud of how it turned out, and still use it when I solve Rubik's Cubes.

Rubik Timer is a Rubik's Cube solve timer application that I made as a school project for a web development course (CPE 437 at Cal Poly). The application tracks solve times for 3x3, 4x4, and 5x5 Rubik's Cubes, provides "scrambles" for the user, and shows basic statistics about the user's solve times. I modeled the website off of and gave it a cleaner look.

The development of this project was a weekend coding marathon of nearly 32 caffeine fueled hours. Other than adding a more secure login mechanism, I don't plan on adding any more features. It will likely stay in its demo state.

AxisEngine image

source code:

technologies: Visual Studio, XNA/MonoGame, C#

development date: December 2015

AxisEngine is being built to enable easily scalable 2D games with the MonoGame framework. This includes adding an object management API to the framework and including basic elements such as collision detection, player input, and animation.

AxisEngine is a personal project of mine that hasn't seen fresh development in about a year, but I do plan on continuing.

Word Analyzer image

source code:

technologies: Visual Studio, .NET, C#, XAML, WPF

development date: December 2015

The Word Analyzer project was created for my STAT 312 class at Cal Poly. It was a group project that analyzed word complexity across a variety of factors. Source was one factor: Wikipedia, Scholarly Articles, New York Times Articles, Novels, and Facebook. Topic was another: Hard Science and Social Science. And Date Written was the final factor: 1850-1900, 1901-1960, and 1961-2015.

The code that I wrote performed all of our statistical analysis which made gathering large samples a breeze. This included a GUI application (pictured above) for my partners to use, but also several console applications and scripts. For example, one application would sift through large samples of "words" gathered and use an autocorrect mechanism to determine if a "word" was indeed a true word.

I also developed an equation for a word complexity statistic (pictured below).

word complexity equation

In case you are curious, word complexity has decreased with time, is higher in wikipedia hard-science articles than scholarly journals about hard-science, and Facebook word complexity is on par with that of Novels.

Sm4sh Tourney image

source code:

technologies: Visual Studio, .NET, C#, XAML, WPF

development date: September 2015

Sm4sh Tourney was a personal project that I put together during the summer of 2015. It assists in the planning and executing of Super Smash Bros. tournaments with a small group of friends. During a tournament, each player will play one match as each character in the game, and earn point values based on the outcome of the match. The player with the most points at the end is the winner.

The project started simply as a random order generator for each character in the game, but has since been updated to include:

  • GUI interface
  • Printing the list
  • Automatically updating when new characters are released
  • Keeping track of each character's tier
  • Keeping score during the tournaments
  • Handling tie breakers

Sm4sh Tourney is still regularly used, and the latest build is available for download from MediaFire on the github page linked above. Have a look if you like Super Smash Bros!

technologies: Visual Studio, .NET, C#, XAML, WPF

development date: August 2015

SIM (Software Installation Manager) was the project that I worked on while at Keysight Technologies. Its goal was to download and install suites of drivers and software to make dependencies and version numbers a non-issue when setting up PXI electronic test and measurement equipment.