I am a strong supporter that all research should be openly shared. Research done in the dark only serves to hinder the scientific community, not benefit it. As such, all of my research projects and ideas past and present are presented on this page in the hopes that they may be useful to people wanting to conduct their own research. Each project is licensed under the MIT Open Source license, please adhere to it if you want to use the source code as a basis for your own projects.

Research Projects

SMART: Queuing Algorithms in the Age of AI

On-going research that is seeking to integrate modern techniques in artificial intelligence such as reinforcement and semi-supervised learning to create a better packet scheduler. This research is still in it's infancy and should be considered cutting edge as very little work exists in applying AI techniques to packet scheduling at Internet core devices such as routers and switches.

LSTFCodel: Priority Queuing and Controlled Delay

Experimental packet scheduler that implements Least Slack Time First priority scheduling on top of the Controlled Delay Active Queue Management model. Initial simulation in NS-2 shows promising results. Physical implementation in the Linux kernel and testing on client devices is ongoing.

GitHub can be found here.

Arxiv pre-print can be found here.

Research Ideas

Temporal Motion Planning and Dimensionality Reduction

This research focuses online paths that can dynamically rewire themselves in response to changes in their environment. There already are several agents in the literature capable of doing this, but they are limited in what they can actually do.

Such an agent needs to operate under the assumptions that it has both computation and memory constraints and that it is acting in a multi-agent real-time environment that contains dynamic elements that act upon the environment. Such an agent needs a flexible mathematical model capable of adapting to the environment over time.

An initial step here could be to develop the basics of a model that maintains a limited memory whereby observations fade out over time. That is the agent should possess excellent short-term memory but a very limited long-term memory. Recent observations should more heavily weight elements in the environment such as dynamic hazards and obstacles that are closer to the agent as opposed to those that are further away. Current research shows that these types of agents work best when they are able to simulate a certain time quantum ahead of the environment. This imposes the constraint that the agent be able to model the behavior of elements that are near it which is another significant problem.

Furthermore, such an agent needs to be designed in such a way that it can be adapted for at least the most popular planning algorithms such as A*, DFS, BFS and Theta*. This agent in effect exists to modify the behavior of other agents.

Distributed B+ Trees and Chord

Coming soon

Generating Closed-World Search Spaces Using Adversarial Networks

Coming soon

Real-Time NPC Response Generation via Player Input in VR

Coming soon

Energy Aware Quality of Service for Mobile Devices

Coming soon

Automatically Generating Test Cases via ML

Coming soon

Design Patterns for Quantum Computing

Coming soon

RRTGPU: The First GPU-Bound 3D RRT Planning Algorithm

Conducted as part of the requirements for my undergraduate degree at Baldwin Wallace, I initially conceptualized this idea in 2016 and developed on it until I had stable integration into Microsofts Project Malmo AI research platform. This project leverages the PyCUDA GPU acceleration library and the Compute Unified Device Architecture from Nvidia to effectively plan in three-dimensions within fixed Minecraft environments. I am currently researching and formulating a real-time variant of this algorithm. To the best of my knowledge, this was the first version of rapidly exploring random trees built for 3D environments that was implemented using GPU acceleration.

GitHub can be found here.

I am currently working on cleaning up the original publication.