Real-time Fluid Surface Simulation over Arbitrary Domains

Heightfield Approximation from the Ground Up


Heightfield approximation is a computationally cheap method for fluid simulation which gives surprisingly realistic looking results. In exchange, the approximation is unable to represent more complex phenomena such as breaking waves, splashing, and droplets. This makes the algorithm a good fit for real-time simulation of large bodies of fluid such as lakes or oceans or secondary elements such as puddles. It's often combined with other fluid simulation techniques or particle systems to achieve desired effects.

This software is an interactive visualization of the heightfield approximation algorithm and an example of its implementation. A variety of features are available: users may perturb the surface and edit the domain in real-time; users may change the water level; users may generate new terrains and initial fluid surfaces based on perlin noise parameters; users may pause the simulation and step through it in time.



fluid simulation example

VIPER Scraper

OU Data Analytics Lab | 2019


The VIPER Scraper is an open-source system for scraping and ingesting multi-model data from Twitter and Instagram. The system includes You Only Look Once (YOLO) real-time object detection integration for Twitter. This is useful for uncovering relations between image data and natural language or other metadata, all of which is accessible with the VIPER system.

The VIPER scraper was developed to support projects at the University of Oklahoma Data Analytics Lab, including the Visual Inspection of Personal Exposed Records (VIPER) project.


Python, OpenCV, You Only Look Once (YOLO) Real Time Object Detection, Selenium

An example of a photo marked up by YOLO, pulled off the Twitter stream

Personal Portfolio Website

Responsive web application


I built this site to share my art and code, and to learn the tools necessary to create future projects.


Python, Django, PostgreSQL, Bootstrap, Amazon S3, and Heroku

different devices

Predicting Atomization Energies of Organic Molecules using Deep Neural Networks

Dr Yihan Shao Research Group | 2017


A deep neural network for predicting the atomization energies of organic molecules. Traditionally, the calculation of a molecule’s atomization energy is computationally expensive, slowing down the work of researchers. However, by using DNNs it is possible accurately predict atomization energies, thereby freeing computational resources and improving the workflow of the research team.

The network is accurate within a 2% error over the test set of organic molecules.


Python, Google TensorFlow



HackUTD project


AskUTD is an Alexa skill for UTD students providing live parking information, crisis hotline numbers, contact information for various offices, and fun facts about UTD.

This hack won first prize for the HackUTD AWS challenge, and served as the prototype for the Alexa rollout on UTD's main campus.


Node.js, AWS Lambda, and the Alexa Skills Kit (ASK)

Winning a prize!

Chroma Kilter

Chromatic Abberation in OpenGL


The use of chromatic aberration in animation was recently explored by the critically acclaimed film "Spider-Man: Into the Spider-Verse". In the film, the effect is used with great success as a surrogate for depth-of-field and a way to place 3D rendered scenes in the visual language of 2D comic books. Inspired by the film’s success, Chroma Kilter is an environment to explore the aesthetic uses of chromatic aberration in rendered scenes, written from the ground up in OpenGL.


OpenGL, Java



A game about riding walls

Wallrider is a game about falling down walls and shooting ghosts made in Game Maker Studio 2. You can download the game for free on


Game Maker Studio 2. Art assets were made primarily in Aseprite, and music was made in Bosca Ceoil

Wallrider splash screen