About Portfolio Resume GitLab GitHub

Table Of Contents

Technical Experience

Code for some of the following projects can be found on my GitHub or my personal GitLab server.

Software Engineering Intern at Stauder Technologies

Summer 2025

At Stauder, another intern and I set out to integrate the Alticam 14 (AC-14) device from HoodTech into Stauder's existing codebases. This task was composed of two main parts. First, to integrate the AC-14 device with the existing JECL device management API, a large C++ codebase. Second, to integrate the new parts of the JECL API into their Android app, including a video player, device controls, and device management.

Integrating the new device into JECL was no small feat. The Alticam line of devices is what we came to call "composite gimbal" devices. The JECL API had not previously provided a way of managing any such similar devices. JECL also did not have any way of configuring video streams for devices. We designed and implemented new API functions in JECL to allow the configuring, management, and control, of video streams and "composite gimbal" type devices.

Another challenge faced while integrating the AC-14 was managing communication with the device. The Alticam line uses a proprietary UDP-based communication protocol, differing slightly based on the exact device. Using datasheets provided by HoodTech, we implemented message construction and interpretation logic for communicating with the AC-14. Basing our work on existing patterns in the codebase and anticipating that similar devices would be set up to use our infrastructure in the future, we created a generalizable system for detecting UDP devices on the network.

Because this was the first time either of us interns had worked on an Android app, familiarizing ourselves with the world of Android GUI development in addition to the app's codebase itself was a barrier. The first task to tackle in the app was the video player; after consulting with my supervisor about our options for implementing the video player, we decided to use LibVLC for Android to speed along the process of implementing the video player. Thanks to our excellent work on the API side, implementing device controls was simple enough, it came down to defining layouts, then connecting the buttons to the API functions we had already implemented.

After just three months through the summer of 2025, we had accomplished this large amount of work. I am greatful having been given the opportunity to work on such a interesting project, especially as an intern. Due to our perfomance, Stauder Tech. has asked us to return to work this winter.

Remote Monitoring for Injection Molding Machines

Summer 2024

In the summer of 2024 I created a system for monitoring the coolant of injection molding machines. I was doing this personal project for my dad and his company at the time, IVP Plastics. The system consists of two parts, a device connected to the injection molding machine, and a central server for collecting data from many devices.

On the device side. I used an ESP32 microcontroller, utilizing Espressif's ESP-IDF C language framework, to read from temperature, pressure, and flow rate sensors. After configuring the SSID and password for the WIFI network, the device automatically obtains the IP of, and connects to, the central server. The device then automatically sends data collected from the sensors back to the server. Each device is able to store an ID, initially provided by the server, that can be used to identify the device.

An image of an injection molding machine with a device on it

The central server is a TCP server that I implemented from scratch in C++. The server sends out an advertisement over Multicast DNS (mDNS), to indicate to devices on the network where to connect to. The server receives data from each device in a custom, although simple, plain text format. For each device, the server keeps the known state of the molding machine. The server uses a hysteretic trigger system to determine when the machine has turned on or off. When a change in state is detected, a text message notification is sent to the admin to make him aware that a machine's coolant has started or stopped flowing.

This system saves $1,500 - $2,000 per machine when compared to products that provide the same or greater functionality. In the future, I hope to upgrade the server to have a database to store past data. This will allow me to provide richer notification capabilities and data visualization.

Chore Scheduler for Theta Xi

Spring 2024

At Theta Xi we have weekly chore sheets that are randomized every week. Historically the house manager has manually filled in the chore sheets every week. As the house grew from around 20 members to a much larger 70 members, this task has became very tedious. I created a program in C++ to quickly and randomly assign chores to all members.

At face value this sounds like a very simple task. But there are various requirements that, when combined, make this a deceptively complex problem. For starters, we have two buildings on the property. There are 3 different sheets that need to be generated: one for the new house, one for the old house, and a "community" sheet that is shared between both buildings.

People from the old house cannot have new house chores, and vice versa. Each member typically has one community chore and one chore for their respective building, but sometimes we run out of new house chores to fill the new house chore slots, in that case we need to fall back to taking using peoples community chores to fill the new house chore sheet (but old house people should still never get new house chores).

Some other requirements are: Executive Board members should not get chores on Monday, Executive Board members should only have one chore, new members should only have chores with an older member for the first month, graduating seniors should not get any chores.

Understandably, it gets complicated quickly. Through this mess I have done my best to provide a relatively simple interface for the user. The user adds each person's name or roll number to each file that pertains to them: new house, old house, executive board, graduating senior, new member. They then specify what chores are on each sheet, on which days, and how many people are needed for the chore, in separate files. After this initial configuration, the generator can be run every week with minimal effort.

This system is still in operation today. I have committed myself to providing support for the program at a minimum until I graduate. Inevitably there has been a bug or two to fix after putting the program into use. Hopefully by the time I graduate most problematic bugs can be ironed out, so they can continue to use the program without issue for the foreseeable future.

An chore sheet generated by my program

Non-Technical Experience

Scholarship Chair of Theta Xi

Fall 2024 - Fall 2025

I love living at Theta Xi, every day I get to live with some of my best friends. At Missouri S&T most of us are introverted, nerdy, engineer types. I am no exception to that, but I can honestly say that joining Theta Xi has helped me to come out of my shell and greatly improve my social skills.

For this I felt the need to contribute back to the house. I felt that the most impactful way for me to contribute was by helping with scholarship. I started by helping in smaller ways; for a year I was a "study captain", where I had the responsibility of keeping an eye out for five fellow members. After that the logical next step was to run for scholarship chair myself. The scholarship chair is a member of our executive board, so this was a big step for me.

Starting out my first semester as scholarship chair was rough. That semester was the first semester after a restructuring of how scholarship worked. Scholarship now had a 'board', four members who were intended to work very closely with the scholarship chair; which would have been great if I had delegated effectively, but I had not. Additionally, I had ambitious plans and ideas to implement, and without delegating effectively, that meant that I was acting as a one man army.

Needless to say, I was really burnt after the first semester. However, I was dedicated to changing that for the second and final semester. Over the summer I did planning, I'll remove tasks that were too much work to be worth it, remove tasks that were not effective, and double down on the things that were important. And this time we would have regular scholarship board meetings to keep things on track, and it worked.

In the end scholarship chair was tough but worth it. I learned a lot about my self, other people, and how to effectively collaborate with others. I would not be the same person today if I had not decided to do it.