Justyn Shelby

Projects

NES Emulator: 2025 Capstone

NES Emulator
Our Emulator Running Donkey Kong

Languages: C++

Packages: ImGui, SDL2

My capstone is probably the most difficult project I have been a part of. I am extremely grateful and impressed by my teammates, as our collaboration and teamwork made the projects possible. As a team of 5, we were tasked with creating a working emulator of the Nintendo Entertainment Console. For this, we chose to use C++, foregoing our original thought of using C in favor of more modern object-oriented programming and graphics/sound/input engine SDL2.

Currently, our emulator:

My main tasks for this project involved the CPU, including implementing it's addressing modes, a number of instructions, and parts of the CPU clock. Further into development, I was able to work more with Imgui and SDL2, refining the UI and our emulator's menu system. Through this project, I was able to learn a tremendous amount about C++, computer hardware, Git, and teamwork.

I had not really touched C++ before this project, and while familiarity with C and C# helped with syntax, C++ was a mostly new learning experience. Learning specifics about the CPU and how memory is addressed built upon previous concepts from computer engineering and operating systems courses. While I have used Git in most of my projects, most of the collaborative tools like branching, forking, merging, and pull requests had gone untouched by me. This project allowed me to glimpse into the power of Git as I became more familiar with it's usage. Similarly, working on a project of this scale helped me become more comfortable working with different developers and styles, thanks mainly to our strong communication throughout the year-long project.

Teammates:

Fantasy Football Helper

Fantasy Football Team
Generated Team Player Rankings

Languages: Python

Packages: Pandas, BS4, xlsxwriter, Flask, pywebview

I am a big sports fan, especially for fantasy sports, so a number of my projects revolve around this. The project I use the most is a tool for fantasy football, aggregating player rankings from multiple sources and applying them to my rosters. This helps me manage multiple leagues throughout the year, as it is easy to get lost in memorizing multiple teams and players. This project compiles rosters together, giving rankings and projected performance for each player on each team, including free agents. I am in the process of creating a graphical user interface using Flask and Pywebview, as the content is easier to visualize and sort through a dedicated UI rather than Excel sheets the original version worked on. I tried using Tkinter for an interface at first but wanted more customization options and experience with using web apps as desktop apps.

Home Server

Proxmox Control Panel
Proxmox Control Panel

Technologies: Proxmox, Linux (Debian/Ubuntu), Virtual Machines, Containers

While it is not strictly a coding project, nor was it intended to be solely a learning experience, creating my own home server has been one of the most insightful and fun projects I have worked on. This server allowed me to get some hands-on experience with Linux and networking, requiring documentation and debugging to get different components set up properly. I opted to go with Proxmox as a hypervisor, with various containers and virtual machines primarily in Debian over premade options such as TrueNAS or Tumbleweed for more flexibility and learning. I have currently implemented a backup server to back up all of my devices on a schedule, an NAS allowing me to limit local storage on personal devices, Jellyfin allowing me to stream media over the network, and a VPN to allow connection to my home network from outside. I plan on setting up a game server next time I can upgrade my server, and perhaps move my web hosting away from third party services as well.

Fantasy LCK

LCK Player Stats
The "Player Stats" Screen

Languages: Python

Packages: Flask, Django, Handlebars

Another passion of mine is video games and their respective professional scenes, which fits in nicely with fantasy football. Nearly 10 years ago now, I enjoyed playing fantasy LCK with the League of Legends professional scene in Korea. While Riot Games, the company behind the game and the league, used to offer an official fantasy site back then, until stopped continuing it years ago. Our group spent a season or two conducting our league ourselves using Google Sheets; however, it was a pain to manage and even more of a pain to use. Because of this, I spent about a month or so creating a site for us to play on. This initial version included basic features found on most fantasy sites, including a login portal, rosters, adding and dropping players, automatic score calculation, and win/loss tabulation. This project was my first time using Flask, as well as my first time using SQL outside of school.