An enabling music application developed to be accessible for all individuals.
Guitar Hero-like game designed to be accessible for all individuals as part of a Research Project.
Created a script that parses Music XML files generated from Sheet Music to use actual notes from songs.
Rendered a THREE.js scene with moving lines and notes.
Used Vanilla JS and HTML/CSS for the menu and additional game features.
Front-end and back-end development for creating sites from scratch.
Created or modified the following websites:
Go BackCrafted a 3D audio visualization inspired by Peer Play's tutorial.
Spawned particles in a grid setting that follow noise directions based on the song's amplitude buffers.
A visualizer for LLVM's linting tool: clang-tidy.
Features include:
Command line program that utilizes lexemes and a grammar to replicate the egrep program on most Linux/Unix devices.
Lexemes of thegrep:
<LParen> ::= '('
<RParen> ::= ')'
<UnionBar> ::= '|'
<KleeneStar> ::= '*'
<AnyChar> ::= '.'
<Char> ::= any character except '(', ')', '|', '.', '*'
Grammar of thegrep:
<RegExpr> ::= <Catenation> <UnionBar <RegExpr>>?
<Catenation> ::= <Closure> <Catenation>?
<Closure> ::= <Atom> KleeneStar?
<Atom> ::= LParen <RegExpr> RParen | AnyChar | Char
Usage:
thegrep [FLAGS] <pattern>
FLAGS:
-h, --help Prints help information
-p, --parse Show Parsed AST
-t, --tokens Show Tokens
-d, --dot Show Dot Diagram
-V, --version Prints version information
ARGS:
<pattern> Regular Expression Pattern
With Rust's package manager Cargo, you could also run cargo run -- [FLAGS] <pattern>
.
The overall organization of this project consists of three files and each with their own distinct task:
The aspects of this design that I am particularly proud of include the organization within the Tokenizer and Parser. By taking input in the main file, I was able to separate each flag's processes in a succinct manner. With these files, I split the core evaluation and helper methods. In addition, I found the design decision to contain factory functions for the Parser extremely efficient when conducting test code.
As far as testing is concerned, there are public and private tests located in the Tokenizer and Parser. These tests ensure the validity of public and private functions. They also panic for invalid instances in thegrep's lexemes and grammar.
Go BackExpanded chat application that modeled the simple SocketIO example.
Download and play here!
We formed a team of ~5 people this July to submit a game to this year's Summer Novel Festival game jam! We had a lot of fun making this experience in Unreal Engine 4.25.2.
An advanced experimental treatment facility in France (Laboratoires Ordinaire) is conducting tests on schizophrenic patients. The experience allows users to “lucid dream” and collect significant objects from past memories. Jason has no idea that he is in this test, since his memories have been wiped from a drug-induced coma. His girlfriend came home one night finding him next to a needle. The hospital offered the experimental treatment knowing that normal treatment would not bring her boyfriend back to reality. In this test, you are Jason. Collect memories to escape your mind.
In order to play this game, you need to have Unreal Engine 4.2+ installed. Then clone this repository and start the project. Delete the contents in your plugins folder and replace with the contents found here, based on the version you have.
Then launch Steam and hit play on your engine. You can either join an instance or start one! Enjoy the game!
A timeline of projects for the UNC course Intro to VR, Game Dev, and HCI (most recent first).
Download and play here!
We formed a team of 10 people this summer to submit a game to this year's SpaceX game jam! We had a lot of fun making this experience in Unreal Engine 4.24.3.
In this paper, we attempt to predict the success of teams participating in the 2015-2019 NCAA Men's Basketball Tournaments using Machine Learning algorithms and find which statistical features give the highest likelihood for games won. By training our data on multiple regression models, we find the best model to be Random Forest Regression. We also find that Power Rating (BARTHAG) has the largest impact on how far a team makes it in the tournament. Using our test results, we predict Dayton as the winner of the 2020 NCAA Tournament that had been canceled due to COVID-19.
We used the College Basketball Dataset by Andrew Sundberg for our predictions of the 2015-2020 seasons.
We found Random Forest Regression to be the most accurate regression model for predicting the champion. The most important feature that contributed to how far a team goes in the tournament was BARTHAG (Power Rating).
We then used our model to predict the winner of the 2020 tournament if it were to happen given this season's stats.
Welcome to The Lounge. An audio-reactive visual experience made in Unity.
Your longtime friend, Alexei, from Norilsk, Russia has invited you to his high-tech apartment. Alexei is your app supplier and guides you through the apartment over text. Your objective is to find your friend and vibe.
My goal for this game is to exhibit how visually immersive music can be. I think it's important for us to rethink how we process sensory perceptions.
For some, it is entirely possible to hear colors and see sound. However, most of the world does not experience such a feat (naturally). This is why I love creating audio-reactive pieces through code. I am a proponent of music and code as an art.
Using one of the most isolated cities on Earth (Norilsk, Russia) surely fits the theme of this quarantine. The vibrant features stand in stark contrast to the isolation of the city surrounding you. Perhaps a crowd of two can be livelier than tens or hundreds.
I put a lot of heart into this game and hope it may inspire you in some way.
A project made with Unity 2020.1.0f1, modeled after Peer Play's tutorial.
In COMP 541 - Digital Logic, I designed a full basic microprocesser and wrote an assembly program, Stacker, to show its functionality.
For HackNC, we formed a team representing the Enabling Technology Club. We created a blind accessible maze using spatial audio to guide the user. We also implemented a depth-first search recursive algorithm to generate new mazes.
Design, plan, and execute an expanding library that houses our XR training applications.
Filed a provisional patent for the accurate overlay and recording of a real-time, temporally synchronized color point cloud on a head-mounted display.
Initiated our first pilots with customers, presented our work at international conferences, and received an award for the NARA application.
Develop for the HoloLens 2 in Unreal Engine with the Telepresence group.
Assist the development of software designed to enable people with disabilities to participate in education, literacy, and gameplay.
These projects include Tar Heel Hero and Tar Heel Music.
Automate crash report associations in Python with known and unknown defects for developers and technical support.
Debug Python/JS/Perl scripts, create Jenkins builds, and rewrite Perl scripts to JSL for JMP Research & Development that support the Documentation team.
Create and manage Jenkins builds to process scripts that generate contrasting screenshots and database scripting in JMP.
Rewrite internal Perl scripts to JSL in order to be more accessible for future developers.
Help students learn and apply automata and formal languages through online communication, grade over 200 students’ assignments and tests, and write scripts in Python to speed up the grading process.
Strengthen learning assistants’ understanding of topics in computer science pedagogy. Created a repository of videos used for LA training in the Computer Science department.
Reinforce the concepts taught in the Foundations of Programming course to over 450 students through office hours, online questioning boards, and recitations.
Responsible for the design, documentation, and evolution of call server products and solutions.
Generate dependency graphs to exhibit relations between classes in separate modules.
Debug multiple source files for typical programming errors using Clang-Tidy.
Design scripts to provide simpler access to C20 call traffic assessments using Perl.
★★★ Familiar (1-3 years)
★★★★ Experienced (3-5 years)
★★★★★ Highly Experienced (5+ years)
Contribute to the collection of over 10 million books read on Tar Heel Reader that allows individuals with disabilities to read for education and enjoyment.
Conduct meetings with speakers and new technologies to enhance community involvement with UNC's annual Maze Day.
Exhibit a strong committment to public service through 300 hours of service, four skills trainings, and a service-learning course.
Stay up to date with my research by checking out my most recent videos below!