About Me
I'm a software engineer at Circle Optics, specializing in high-performance imaging systems, computer vision algorithms, and camera calibration technologies.
In my free time I train for marathons and other road races with the Philadelphia Runner Track Club (PRTC). I also love backpacking in the woods with my friends.
Education
Georgia Institute of Technology
Master of Science in Computer Science
Concentration in Computational Perception and Robotics
Advanced Algorithms, Machine Learning, Computer Vision, Artificial Intelligence
Case Western Reserve University
Bachelor of Science in Computer Science
Varsity Track & Field and Cross Country
Experience
Circle Optics
Rochester, NY
Software Engineer - Imaging Science
- Wrote high-performance c++ camera control software able to capture and process images at 20 Gigabits per second
- Developed proof of concept processing pipeline to validate 360 camera system’s advantages for 3D reconstruction including SIFT and SURF feature detectors and a YOLO model for detecting and masking out the camera operator
- Benchmarked, evaluated and integrated vendor camera sensors and SDKs for new product lines into custom software suite
- Leading effort to port Microsoft Visual Studio C++ codebase to embedded linux compatible cmake build system
Software Engineering Co-Op - Imaging Science
- Wrote algorithm for focusing a novel lens assembly by evaluating captured images of MTF targets in Python and C++
- Benchmarked and evaluated vendor camera sensors and SDKs for new product lines using custom software suite.
- Researched and implemented state of te art Detect and Avoid algorithms leveraging CUDA with proprietary camera system
- Developed method for calibrating novel telescope camera system at short range
- Wrote REST API in Rust for controlling camera system, monitoring temperature and alerts
Eaton
Cleveland, OH
Software Engineer
- Rewrote in-house pay statement application to support divesting employees and provide uninterrupted access to pay info
- Modernized SDLC with a testing suite, automated deployment with Jenkins and migration to Bitbucket and Git
- Automated scorecard metric collection for weekly platform scorecards with Python, shell scripts and AppPulse's open API
- Wrote new features for and maintained corporate intranet sites, public facing site, and supplier facing sites in Java on Oracle and Adobe platforms
- 1st place in internal hackathon to prototype machine powerdraw monitoring and supervisor alert system.
IT Functional Analyst and Project Manager in Leadership Development Program (LDP)
- Led contact center reporting refresh during platform upgrade to improve dashboard and metric effectiveness
- Deployed, configured and led testing for 22 Cisco Contact Center deployments in the US, Europe and Asia
- Nominated to be campus recruiter, manager for summer intern and mentor for first year ITLDP
Summer IT Intern
- Led Windows 10 compatibility testing for over 400 manufacturing plant applications
- Designed and implemented physical plant inventory scheduling tool using Visual Basic; still in use 6 years later
Texas Tech University Department of Computer Science
Lubbock, TX
Researcher, NSF Research Experience for Undergraduates
- Storing and querying large network traffic datasets with Apache Hive in order to predict network attacks
- 200-400% speed improvement on queries comparing Apache Hadoop, Apache Hive, SQL and Wireshark
- Proposal presentation, progress reports and poster session to lab mentor, graduate students and professors
Projects
Projects organized by course. Click on a course to view related projects.
More coming soon (Last updated Apr 6, 2025)
CS 6476: Computer Vision
-
Problem set: Fourier Transform
Implementation and exploration of the Discrete Fourier Transform. Demonstrating it's effectiveness for image compression.
-
Problem set: Projective Geometry, Corner Detection, Homographies
A problem set using Harris corner detection to demonstrate projective geometry. By detecting fixed locations on a wall and seeing the wall from different perspectives, we demonstrated transforming a simple image from one plane to another.
-
Problem set: Optical Flow & Motion Detection
A problem set using Hierarchical Lucas and Kanade for computing optical flow. Using this implementation, we estimated motion in a series of images and tried to interpolate intermediate frames.
-
Problem set: Particle Filters, Kalman Filters and Object Tracking
A problem set using particle and Kalman filters to track pedestrians in a series of videos. Needed to maintain track when camera was moving and after occlusions.
-
Problem set: Object Detection
A problem set implementing face recognition using principal component analysis (PCA), (Ada)Boosting and the Viola-Jones algorithm. Investigated the pros & cons of the various techniques and inherent difficulty of face detection.
CS 6475: Computational Photography
-
Panorama
Align and stitch together a series of images into a panorama. Assumes we were given corresponding keypoints between 3 images. This was an assignment to learn about homographies, warping and image blending.
-
High Dynamic Range Imaging
This assignment was about learning the core algorithms behind computing HDR images based on the paper Recovering High Dynamic Range Radiance Maps from Photographs by Debevec & Malik.
-
Video Textures
This assignment was about creating infinitely looping videos by analyzing a video's texture. Based on the paper Video Textures by Schödl, A., Szeliski, R., Salesin, D., & Essa, I.
-
Content Aware Seam Carving
This goal of this project was to replicate the research results of the paper Seam Carving for Content-Aware Image Resizing by Shai Avidan, Ariel Shamir and Improved Seam Carving for Video Retargeting by Michael Rubinstein, Ariel Shamir. This involved understandiing and implementing forward seam carving, "backwards energy" and fine-tuning parameters.
-
Object Removal
The goal of this project was to replicate the research results of the paper Object Removal by Exemplar-Based Inpainting by Criminisi, A., Perez, P. & Toyama, K. Just like the Google Pixel 'magic erase' feature, our results demonstrated selecting some object in the image, masking it off and using the exemplar-based inpainting algorithm from the paper to fill in the pixels where the removed object used to be.
CS 7641: Machine Learning
-
Supervised Learning
Exploration of supervised learning techniques. This assignment was not about implementing algorithms but tuning their parameters and analyzing what they can tell us about a dataset.
Learning algorithms analyzed: Decision tree (with pruning), Neural Networks, Boosting, Support Vector Machines (SVMs), k-Nearest Neighbors (KNN).
Used 2 classification problems to analyze the algorithms: Spambase dataset, which contains a database of email attributes and whether or not they are spam messages. And a Kaggle Spotify dataset which contains a collection of 1.2 million songs and their attributes like name, popularity, key, loudness, instrumentalness, tempo etc.
The goal was to create a binary classification problem for each dataset. For the spam dataset, whether or not some email was spam based on it's attributes. For the Spotify dataset, whether some song would be a hit for this artist (more popular than their average song).
-
Randomized Optimization
Exploration of random search techniques. Again this purpose of this assignment was not to implement the algorithms but instead to tune and analyze how they behave.
The optimization algorithms I chose were Genetic, Simulated Annealing, Randomized Hill Climb and MIMIC. They were applied to the k-colors problem, n-queens problem and the traveling salesman problem.
We needed to highlight advantages of different techniques on different optimization problems. For example, showing how one problem highlights advantages of genetic algorithms (traveling salesman), another advantages simulated annealing (n-queens) and another MIMIC (k-colors, sort of).
We also showed how Genetic, Simulated Annealing and Randomized Hill Climb can be used to find good weights for a neural network instead of backpropagation. We used the same dataset classification problem from the supervised learning project, SPAM filtering and song popularity.
-
Unsupervised Learning
Exploration of unsupervised learning algorithms: Clustering with k-means and expectation maximization. Dimensionality reduction through PCA, ICA and Randomized Projections. Finally, how dimensionality reduction can improve training a Neural Network.
Using the same SPAM and Spotify datasets as the other assignments.
-
Markov Decision Processes
Use OpenAi's gymnasium open source python library to explore Markov Decision Processes and how different algorithms approach different classes of MDPs. I chose to use the Frozen Lake (small, grid world problem) and the Taxi (larger grid world problem) to compare Value Iteration, Policy Iteration and Q-Learning as learning algorithms.
Technical Skills
Languages: Python, C++, Java
Frameworks & Libraries: PyTorch, OpenCV, NumPy
Tools & Platforms: Windows, Linux, Nvidia Jetson, Visual Studio, Git, Cmake