About
H A Austin Hale

About Me

🐏 Master's student in the Graphics & Virtual Reality Group at the University of North Carolina at Chapel Hill.

Currently working as a Research Assistant in AR/VR/HCI and Mixed Reality Engineering Intern at Nakamir. 💻

I enjoy computer graphics, augmented/virtual reality for HCI, and audio/data visualizations.

📃 Feel free to check out my resume for any more technical details.

Outside of tech, you'll most likely find me at a record store or running trail.

Projects

Tar Heel Music


An enabling music application developed to be accessible for all individuals.

  • Uses Magenta.js for generating new note sequences with machine learning.
  • Able to record real-time user input and export as a midi file.
  • Project to be showcased at UNC Maze Day.

Demo

Github

Go Back

Tar Heel Hero


Guitar Hero-like game designed to be accessible for all individuals as part of a Research Project.

The Process

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.

Gameplay

Game

Go Back

Web Development


Front-end and back-end development for creating sites from scratch.

Created or modified the following websites:

Go Back

3D Noise Flowfield


Crafted 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.

Github

Go Back

Clang Visualizer


A visualizer for LLVM's linting tool: clang-tidy.

Features include:

  • Organization of checks for ease of accessibility.
  • Original log file containing full initial output of compiler warnings.
  • Highlighting functionality for personal use.
  • External link option to easily extend to other documentation tools.

Github

Go Back

thegrep


Command line program that utilizes lexemes and a grammar to replicate the egrep program on most Linux/Unix devices.

Getting Started

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>.

Organization

The overall organization of this project consists of three files and each with their own distinct task:

  • main.rs handles the command line options for processing input
  • tokenizer.rs acts as a tokenizer for identifying and consuming each lexeme in thegrep.
  • parser.rs handles thegrep's grammar in how non-terminals coincide with one another.

Accomplishments

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.

Additional Notes

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 Back

Local Chat System


Expanded chat application that modeled the simple SocketIO example.

Current Features

  • Custom usernames
  • Active users list
Users example

  • Real-time "{name} is typing..." functionality
  • Modern message bubbles

Chat example

  • Message history for new users
  • Connection/Disconnection broadcasted messages

History example

Github

Go Back

Confusion


Summer Novel Festival Game Jam Submission

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.

Role

  • Lead Programmer
  • Game Writer
  • UI

Backstory

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.

Full Game Walkthrough

Github

Go Back

Analyzing Immersion in a 1v1 VR Game


University of North Carolina at Chapel Hill

Alex Proca, Austin Hale, Surya Poddutoori

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!

Github / Paper

Go Back

VR Treasure Hunt


A timeline of projects for the UNC course Intro to VR, Game Dev, and HCI (most recent first).

Unreal Engine

Virtual Locomotion with Redirected Walking - S2C Algorithm

Unity

Evoking Physiological Responses
Basic VR Development
Modularizing A2 & Using FSMs
Understanding GameObject/Component Interaction

Github

Go Back

Space Escape


SpaceX Game Jam Submission

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.

Role

  • UI/Effects
  • Programmer

Full Game Walkthrough

Github

Go Back

ML Final Project


Predicting NCAA Basketball Tournament Success with Machine Learning Models

Abstract

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.

The Data

We used the College Basketball Dataset by Andrew Sundberg for our predictions of the 2015-2020 seasons.

Results

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).

2020 Final Four Prediction

We then used our model to predict the winner of the 2020 tournament if it were to happen given this season's stats.

Authors

Github / Paper

Go Back

The Lounge


Welcome to The Lounge. An audio-reactive visual experience made in Unity.

Backstory

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.

Motive

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.

Full Game Walkthrough


Go Back

Circle Tangents


Interactive Audio Visualization

A project made with Unity 2020.1.0f1, modeled after Peer Play's tutorial.

Github

Go Back

MIPS Stacker


In COMP 541 - Digital Logic, I designed a full basic microprocesser and wrote an assembly program, Stacker, to show its functionality.

Final Project Summary

Github

Go Back

Accessible Maze


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.

Game Trailer

Play Here!

Github

Go Back

Experience

SAS logo
JMP Technical Intern
SAS

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.

CS UNC logo
Undergraduate Research Assistant
AR/VR/HCI - Department of Computer Science

Develop for the HoloLens 2 in Unreal Engine with the Telepresence group.

Enabling Technologies - Department of Computer Science

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.

CS UNC logo
Undergraduate Learning Assistant
COMP 455 - Models of Languages and Computation

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.

COMP 227 - Effective Peer Teaching in Computer Science

Strengthen learning assistants’ understanding of topics in computer science pedagogy. Created a repository of videos used for LA training in the Computer Science department.

COMP 401 - Foundations of Programming

Reinforce the concepts taught in the Foundations of Programming course to over 450 students through office hours, online questioning boards, and recitations.

Ribbon logo
C20 Engineering Intern
Ribbon Communications

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.

Legend

★★★ Familiar (1-3 years)

★★★★ Experienced (3-5 years)

★★★★★ Highly Experienced (5+ years)

Languages

C

★★★★

C++

★★★★

C#

★★★★★

HTML/CSS

★★★★★

Java

★★★★

JavaScript

★★★★★

JSL

★★★★

Perl

★★★★

Python

★★★★★

Rust

★★★

TypeScript

★★★★

Technologies

Bash

★★★★★

Bootstrap

★★★★★

ClearCase

★★★

Doxygen

★★★★

Jenkins

★★★★

Linux OS

★★★★

Unix

★★★★

VMWare

★★★★

Research

Azure Kinect

★★★★

HoloLens 2

★★★★

Leap Motion

★★★★

Oculus Quest

★★★★★

OpenCV

★★★★

SPSS

★★★★

StereoKit

★★★

Unity

★★★★★

Unreal Engine

★★★★★

Involvement

cS UNC logo
Enabling Technology Club
President

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.

BPSS logo
Buckley Public Service Scholars
Enrolled Member

Exhibit a strong committment to public service through 300 hours of service, four skills trainings, and a service-learning course.

YouTube Channel

Stay up to date with my research by checking out my most recent videos below!

Contact