
AI is analyzing your overall score…
Identifying your key strengths…
Evaluating your skill match against the job requirements…
Assessing your cultural and operational fit
Staff Perception Engineer @ Stack AV
I'm a machine learning engineer and applied researcher who specializes in building AI systems that work in the real world—particularly in multimodal perception, 3D geometry, multi-agent systems, and safety-critical environments. I've designed, trained, and deployed production ML models for LiDAR and RGB perception with models running in real time on embedded hardware. I'm especially interested in problems where naive deep learning breaks down (e.g., due to non-Euclidean structure and/or physical constraints). In industry, I've often played the role of "full-stack deep learning scientist", owning everything from data pipelines and synthetic data generation, to model implementation and training, to C++/Python deployment, CI/CD, and performance optimization (e.g., with Torch-TensorRT). I enjoy turning research ideas into reliable systems, and I've led efforts around sensor fusion, evaluation protocols, and reproducible ML infrastructure. Academically, I hold a Ph.D. in Computer Science with a Graduate Minor in Mathematics. I've presented my research at venues like CVPR, ICML workshops, NeurIPS workshops, and the MIT Sloan Sports Analytics Conference, and my work has been cited in papers from DeepMind, OpenAI, and Google (among others). I've also contributed ML code to open-source projects such as scikit-learn and Apache Solr, and my personal open-source projects have been leveraged by a number of corporations (e.g., Tripadvisor).
Auburn University
Doctor of Philosophy - PhD, Computer Science and Software Engineering: Deep Learning/Machine Learning
August 1, 2018 – August 1, 2021
The University of Texas at Dallas
Master of Science (MS), Computer Science: Intelligent Systems
January 1, 2013 – January 1, 2015
University of Chicago
Master of Science (MS), Biology: Organismal Biology and Anatomy
January 1, 2010 – January 1, 2013
Auburn University
Bachelor of Science (B.S.), Zoology: Ecology, Evolution, and Behavior
January 1, 2006 – January 1, 2010
Stack AV
Staff Perception Engineer
June 1, 2026 – Present
Miami, Florida, United States · Remote
John Deere
Senior CV/ML Engineer
February 1, 2023 – March 1, 2026
Miami, Florida, United States · Remote
Bear Flag Robotics
Senior CV/ML Engineer
February 1, 2023 – October 1, 2024
Miami, Florida, United States · Remote
South Carolina Department of Natural Resources
Consultant
October 1, 2022 – December 1, 2022
Charleston County, South Carolina, United States · Remote
US Department of Agriculture (USDA) Agricultural Research Service (ARS)
Artificial Intelligence Center of Excellence Postdoctoral Fellow (ORISE)
August 1, 2021 – February 1, 2023
Charleston County, South Carolina, United States · Remote
Cleveland Indians
Deep Learning Fellow
May 1, 2020 – August 1, 2020
Auburn, Alabama, United States · Remote
Adobe
Machine Learning Intern (Research)
May 1, 2019 – August 1, 2019
San Jose, California · On-site
Red Hat
Machine Learning Engineer - Information Retrieval
October 1, 2017 – August 1, 2018
Red Hat
Senior Software Engineer
September 1, 2016 – September 1, 2017
Red Hat
Software Engineer
June 1, 2015 – August 1, 2016
Red Hat
Software Engineering - Data Science Intern
May 1, 2014 – May 1, 2015
UT Southwestern
Research Intern
March 1, 2014 – May 1, 2014
Dallas-Fort Worth Metroplex
Revolution Prep
Instructor
January 1, 2013 – May 1, 2013
Dallas-Fort Worth Metroplex
Hurst-Euless-Bedford Independent School District
Substitute Teacher
January 1, 2013 – May 1, 2013
Dallas-Fort Worth Metroplex
PointNet++
December 1, 2023 – December 1, 2023
My minimal PyTorch implementation of the PointNet++ model described here: https://arxiv.org/abs/1706.02413. I use PyTorch3D to implement the Set Abstraction levels, so no compiling is involved, which sets it apart from other PointNet++ implementations.
PointPillars
December 1, 2023 – December 1, 2023
My minimal PyTorch implementation of the PointPillars model described here: https://arxiv.org/abs/1812.05784. I use Numba to implement the pillarize operation, so no compiling is involved.
Paved2Paradise
December 1, 2023 – December 1, 2023
Cost-effective and scalable LiDAR simulation by factoring the real world.
AQuaMaM
January 1, 2023 – January 1, 2023
An autoregressive, quaternion manifold model for rapidly estimating complex SO(3) distributions.
PyTorch IPDF
August 1, 2022 – August 1, 2022
My minimal PyTorch implementation of the implicit-PDF model described here: https://arxiv.org/abs/2106.05965.
PyTorch NeRF
February 1, 2022 – February 1, 2022
My minimal PyTorch implementation of the NeRF model described here: https://arxiv.org/abs/2003.08934.
Boformer
January 1, 2022 – January 1, 2022
Research on jointly modeling the trajectories of athletes in team sports has made steady progress over the past several years. However, universally, these models were trained on only a single sport at a time. Athleticism is known to translate across sports, with multi-sport athletes being common at the high school level (before specialization is necessary). Additionally, certain team dynamics, e.g., a ball handler passing to an open teammate, or multiple defenders converging onto the opposing team’s star player, are shared between sports. In this repository, I investigate whether such commonalities in sports can be exploited (i.e., through transfer learning) to improve the performance of a trajectory model on a single sport. Specifically, I extend baller2vec++—a recently described multi-entity Transformer—so that it can be jointly trained on basketball and soccer datasets. I call this model "the Boformer" in honor of two-sport All-Star Bo Jackson. I find that, when evaluated separately on each sport, the Boformer achieves similar performance to models trained on each sport independently, which suggests that, at least for this particular architecture and dataset, jointly training the model was not advantageous.
PyTorch VQ-VAE
January 1, 2022 – January 1, 2022
My minimal PyTorch implementation of the VQ-VAE model described here: https://arxiv.org/abs/1711.00937.
DEformer
June 1, 2021 – June 1, 2021
An order-agnostic distribution estimating Transformer.
PyTorch Nade and Orderless NADE
May 1, 2021 – May 1, 2021
My PyTorch implementations of NADE (as described here: http://proceedings.mlr.press/v15/larochelle11a.html) and orderless NADE (as described here: https://arxiv.org/abs/1310.1757).
baller2vec++
April 1, 2021 – April 1, 2021
A look-ahead multi-entity Transformer for modeling coordinated agents.
baller2vec
February 1, 2021 – February 1, 2021
A multi-entity Transformer for multi-agent spatiotemporal modeling.
BigGAN-AM
March 1, 2020 – March 1, 2020
Improves the sample diversity of BigGAN and synthesizes Places365 images using the BigGAN generator.
Strike (With) A Pose
September 1, 2018 – November 1, 2018
Strike (With) A Pose is a simple GUI application for generating adversarial poses of objects.
Apache Solr
March 1, 2018 – March 1, 2018
I implemented the RankNet scoring model as described here: https://icml.cc/2015/wp-content/uploads/2015/06/icml_ranking.pdf. Jira: https://issues.apache.org/jira/browse/SOLR-11597
(batter|pitcher)2vec: Statistic-Free Talent Modeling With Neural Player Embeddings
February 1, 2018 – February 1, 2018
My talk at the MIT Sloan Sports Analytics Conference: http://www.sloansportsconference.com/activities/research-papers/2018-research-paper-finalists-posters/ Abstract: The task of extracting informative measures of talent for Major League Baseball (MLB) players has a surprising parallel in the field of natural language processing — the task of constructing useful word embeddings. Words, like MLB players, can be considered distinct elements in a set, and one common way to represent such categorical data in machine learning algorithms is as one-hot encodings. However, one drawback of one-hot encodings is that every element in the set is equally similar (or dissimilar) to every other element in the set (due to their mutual orthogonality). But words (and players) do exhibit varying degrees of similarity. By modeling how words behave in different contexts, word embedding algorithms (like word2vec) learn to mathematically encode such similarities as geometric relationships between vectors (e.g., cosine similarity or Euclidean distance). This paper introduces (batter|pitcher)2vec, a neural network algorithm that adapts these representation learning concepts to a baseball setting, modeling player talent by learning to predict the outcome of an at-bat given the context of a specific batter and pitcher. The learned representations qualitatively appear to better reflect baseball intuition than traditional baseball statistics, for example, by grouping together pitchers who rely primarily on pitches with dramatic movement. Further, like word2vec, the representations possess intriguing algebraic properties, for example, capturing the fact that Bryce Harper might be considered Mike Trout’s left-handed doppelgänger. Lastly, (batter|pitcher)2vec is significantly more accurate at modeling future at-bat outcomes for previously unseen matchups than simpler approaches.
scikit-learn
August 1, 2017 – August 1, 2017
I implemented the Complement Naive Bayes classifier described here: https://people.csail.mit.edu/jrennie/papers/icml03-nb.pdf. Pull request: https://github.com/scikit-learn/scikit-learn/pull/8190
Learning To Name Colors With Word Embeddings
May 1, 2017 – May 1, 2017
An improved version of the color name model described here: http://lewisandquark.tumblr.com/post/160776374467/new-paint-colors-invented-by-neural-network.
RankNet and LambdaRank
April 1, 2017 – April 1, 2017
My (slightly modified) Keras implementation of RankNet (as described here: http://icml.cc/2015/wp-content/uploads/2015/06/icml_ranking.pdf) and PyTorch implementation of LambdaRank (as described here: https://papers.nips.cc/paper/2971-learning-to-rank-with-nonsmooth-cost-functions.pdf).
LMIR
April 1, 2017 – April 1, 2017
Pure Python implementations of the language models for information retrieval surveyed here: https://dl.acm.org/doi/10.1145/383952.384019.
Recurrent Convolutional Neural Network Text Classifier
November 1, 2016 – November 1, 2016
My (slightly modified) Keras implementation of the Recurrent Convolutional Neural Network (RCNN) described here: http://www.aaai.org/ocs/index.php/AAAI/AAAI15/paper/view/9745.
Sequences With Sentences
September 1, 2016 – September 1, 2016
Sequences With Sentences is a prototype of a convolutional recurrent neural network that can handle data sequences containing a mixture of fixed size and variable size (e.g., text) inputs at each time step.
Deep Semantic Similarity Model
April 1, 2016 – April 1, 2016
My Keras implementation of the Deep Semantic Similarity Model (DSSM)/Convolutional Latent Semantic Model (CLSM) described here: http://research.microsoft.com/pubs/226585/cikm2014_cdssm_final.pdf.
LociSelect
April 1, 2015 – April 1, 2015
LociSelect is a simulated annealing algorithm for selecting loci (locations in DNA) from the output of a high-throughput DNA sequencer for use in genetic analyses.
ARTificial Intelligence
December 1, 2014 – December 1, 2014
ARTificial Intelligence is a simple convolutional neural network that attempts to identify the movements and artists of visual art.
Hangouts NLP
December 1, 2014 – December 1, 2014
Hangouts NLP performs a number of different natural language processing analyses on Google Hangouts instant messaging data.
Football-o-Genetics
May 1, 2013 – May 1, 2013
Football-o-Genetics is an application for "evolving" near-optimal offensive play calling strategies. The application incorporates ideas from both artificial intelligence (specifically, genetic algorithms) and advanced statistics (in the form of a Markov model of an offensive drive) to accomplish this end.
Social Networks in American Football
May 1, 2013 – May 1, 2013
A social network analysis of coaches and teams in college and professional football.
ScatterPlot3D
February 1, 2013 – February 1, 2013
ScatterPlot3D is an application for visualizing and exploring three-dimensional scatter plot data. With ScatterPlot3D, you can rotate, zoom, select, search, and compare your data. You can also export interesting viewpoints as images.
CyanogenMod
February 1, 2013 – February 1, 2013
I developed an option that allows users to keep the status bar visible during “Expanded desktop” mode. Pull requests: http://review.cyanogenmod.org/#/c/31382/ http://review.cyanogenmod.org/#/c/31380/
Certified Instructor
The Carpentries
June 24, 2026 – Present
Doctor of Philosophy (Ph.D.)
Auburn University
June 24, 2026 – Present
Cultural Fit Analysis
The candidate's project portfolio is heavily skewed towards deep learning, computer vision, and natural language processing, with a strong academic and research focus. While these skills are valuable, the target role is 'Data Analyst'. The candidate's experience is more aligned with a 'Machine Learning Engineer' or 'Applied Scientist' role. The breadth of projects demonstrates intellectual curiosity and a strong drive for learning, but the direct relevance to typical data analyst tasks (e.g., SQL, BI tools, statistical analysis for business insights, A/B testing interpretation beyond advocating for it) is less explicit. The candidate's background suggests a strong fit for a research-heavy or advanced analytics team, but potentially less for a standard operational data analyst role without further evidence of business-focused data analysis skills.
Soft Skills & Operational Fit
The candidate's experience at Red Hat, where they co-founded and maintained a data science community, provided technical guidance, and presented results to non-technical associates, indicates strong communication and collaboration skills. Their role in defining data collection protocols and leading early fusion efforts suggests good organizational and leadership capabilities. The consulting role also shows adaptability and problem-solving skills.