H A Austin Hale

About Me

Developing novel XR training applications with a highly talented group as CTO at Nakamir. 💻

🐏 Alumnus of the Graphics & Virtual Reality Group at the University of North Carolina at Chapel Hill.

I enjoy computer graphics, extended 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.


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.



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.



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.


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.


Go Back


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


thegrep [FLAGS] <pattern>

  -h, --help      Prints help information
  -p, --parse     Show Parsed AST
  -t, --tokens    Show Tokens
  -d, --dot       Show Dot Diagram
  -V, --version   Prints version information

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

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


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


Go Back


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.


  • Lead Programmer
  • Game Writer
  • UI


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


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


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


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.


  • UI/Effects
  • Programmer

Full Game Walkthrough


Go Back

ML Final Project

Predicting NCAA Basketball Tournament Success with Machine Learning Models


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.


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.


Github / Paper

Go Back

The Lounge

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.

Full Game Walkthrough

Go Back

Circle Tangents

Interactive Audio Visualization

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


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


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!


Go Back


Nakamir logo
Chief Technology Officer

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.

CS UNC logo
Undergraduate & Graduate 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.

SAS logo
JMP Technical Intern

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


★★★ Familiar (1-3 years)

★★★★ Experienced (3-5 years)

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



































Linux OS







Azure Kinect


HoloLens 2


Leap Motion


Meta Quest










Unreal Engine



cS UNC logo
Enabling Technology Club

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!