Note: Click on images to view a full-size version

Example screenshot of the Trainer Level Curves

Pokémon Level Curve Visualizations

January 2021-May 2021

Python, with webpages using JavaScript with Plotly and JQuery libraries

Charts the level progression through the Pokemon series of video games. This was developed for CSCE 567, a data visualization class.

The data was generated from Bulbapedia articles, which were downloaded and parsed using a Python script, available from the source package on GitHub.

Originally, the project was supposed to be placing all NPC Trainers in the series in a large tournament. However, this turned out to be unfeasable due to a lack of tools available to quickly conduct the required battles, and a lack of time to create them manually.

Screenshot of USurvive

USurvive

August 2020-April 2021

C#, WPF/XAML, .NET Framework

All senior CIS and CS students at USC are required to complete a Capstone Computing Project with a small group, using what you have learned throughout your time at USC. My group decided to make a student planner that stores a student's class schedule, assignments, and grades in one easy to access location.

The design of the program was loosely inspired by how I had Outlook configured at the time, with a persistent sidebar on the right side of the screen showing a calendar, and upcoming assignments and classes on that day.

While I have done group work before, this project is easily the largest I have done, both within and without a group. Over the course of time we were working, I took on a leadership position, instructing others on what parts of the program to complete, as well as assisting others in the group in completing their portions of the program.

It has been said that 80% of development time will be spent on 20% of the features, and I feel that rings true with my experience working on USurvive. We had a fairly functional program written in just a couple weeks for the proof of concept due in November 2020, after spending most of our time up until that point planning the program. The entirety of January through April 2021 was spent refining the codebase and adding features we missed in the proof of concept build.

Screenshot of the website

UofSC Cyber Security Team Unofficial Website

November 2020

HTML, CSS

For the final project of ITEC 362, I created an unofficial website for the Cyber Security Team, who did not have a website, and only communicated information over a Discord server

The design and colors of the website were inspired by the design of the IBM 5151 monitor, and the character rendering of the Monochrome Display Adapter that drove it.

While the assignment only required me to write HTML and CSS, I also used some basic JavaScript to render parts of the footer, as well as in the calendars used in the Schedule section.

Unfortunately, the calendars used a Google Calendar link that is now broken, as it was only made for the assignment, so the calendars do not render properly.

Screenshot of the Theater Booking System

Theater Booking System

April 2020

Java

The bulk of CSCE 247 is planning out a program assigned by the teacher, then writing the program in a small group of 3 people. Our class was assigned to make a simple theater booking system, allowing managers to create events, etc., and allow users to buy tickets for said events.

This was one of the first large-scale projects I took on at my time at USC. The program runs entirely in a CLI due to the short development time. Most of the time was spent planning out the program: writing requirements, making UML diagrams, etc.

While I have done group work before, this was one of my first times working on a program in a group. As such, this was the program that taught me how to use Git, and many of the common trappings that can result with Git.

A screenshot of CharLCDController

Character LCD Controller

December 2017

Java

After completing CSCE 145, a basic Java programming course, during my first semester at USC, I decided to put my newfound programming skills to the test, and develop a simple program in Java to control a character LCD using the GPIO pins on a Raspberry Pi.

The application has both GUI and CLI modes, and support CLI flags to switch between the two modes. Up until this point, I had no experience creating GUIs, but I was able to use the built in designer in NetBeans to create a functional, if cluttered, GUI.

The application gives full control over the LCD, allowing the user to send text to the LCD (complete with recognizing newline characters to move to the second line on the LCD), or send raw data using the buttons at the bottom as toggle switches.

The application was rather ambitious for somebody who only had a few months of experience programming, and as such the code is rather poor. For instance, I didn't know that Java had byte objects, so whenever I needed to store bytes to transmit to the LCD, I used arrays of booleans. Some of the functionality was never implemented, such as the ability to emulate an LCD if a Raspberry Pi or character LCD was not available. I also only tested the program with a 1602 (16 characters wide, 2 characters tall) display, so newlines probably wouldn't work as expected on a 2004 display, as they handle line rendering differently than a 1602.

The program was rather slow, with characters visibly printing onto the display. Due to a lack of materials (I no longer have the LCD, and both of my Raspberry Pis are tied up in other tasks, and I don't want to unhook them), I can't determine if this is due to the poor coding, poor optimization of the Pi4J library, or simply overhead caused by running the JVM on a Raspberry Pi Zero.

View more programs on my GitHub page.