Experience
KnowledgeLake
Software Engineer
2019
I am currently a Software Engineer at KnowledgeLake in St. Louis.
I joined full-time here after three awesome internships and working part-time when I was at school.
One of my first projects after joining full-time was finish integrating the widget system I designed while in school.
This systems allows users to customize their homepage to see what they want. Before, all tiles (that go to applications) where visible.
The widget system empowers users to each create their own unique experience with our product.
One of my first projects after joining full-time was finish integrating the widget system I designed while in school.
This systems allows users to customize their homepage to see what they want. Before, all tiles (that go to applications) where visible.
The widget system empowers users to each create their own unique experience with our product.
Drillbotics Team
Electrical Team Lead
2018 - 2019
The goal of the Drillbotics Team is to design and build a fully autonomous drilling rig that can drill through a rock.
This year, teams had to drill through a homogenous sandstone block and deviate to exit through the side of the rock. A very, very challenging task. Previous years had only been to drill straight down.
The electrical system for the drill was in disarray when I became Electrical Lead. The first thing I wanted to accomplish was to get rid of the ratsnest of wires in the primary control box.
This was accomplished by using custom circuit boards to eliminate the majority of the wiring. Circuit boards communicated over a CAN Bus and were fully generic, they could be added and removed as needed. By the middle of the Spring Semester the team and I had accomplished something that the team had never done before: Autonomous Drilling! This accomplishment was a huge milestone for our team. Unfortunately, despite our internal success, we did not place at the competition. Our design for deviated drilling was a little primitive and did not work as well as we hoped.
I could not be more proud of what this team and I accomplished during that year.
This year, teams had to drill through a homogenous sandstone block and deviate to exit through the side of the rock. A very, very challenging task. Previous years had only been to drill straight down.
The electrical system for the drill was in disarray when I became Electrical Lead. The first thing I wanted to accomplish was to get rid of the ratsnest of wires in the primary control box.
This was accomplished by using custom circuit boards to eliminate the majority of the wiring. Circuit boards communicated over a CAN Bus and were fully generic, they could be added and removed as needed. By the middle of the Spring Semester the team and I had accomplished something that the team had never done before: Autonomous Drilling! This accomplishment was a huge milestone for our team. Unfortunately, despite our internal success, we did not place at the competition. Our design for deviated drilling was a little primitive and did not work as well as we hoped.
I could not be more proud of what this team and I accomplished during that year.
KnowledgeLake
Software Engineer (Intern and Part-Time)
2016 - 2018
My time as an Intern at KnowledgeLake consists of three summers, and two school years of remote work.
The work done here, on Enterprise Content Management software, is web front end work with a heavy C# backend.
During my first internship I was thrusted into this world and set out to create an entirely new part of the overall application. This project, called "Upload", allows user to upload documents through a web interface and have them enter the system.
My second summer I worked on a new security and authentication system that the product now uses. Along with this, I also painfully developed Office Add-Ins for our product. These add-ins leveraged the Upload App (first internship project), and allows users to upload documents/emails/attachments directly from any Microsoft Office program.
After my second summer I continued to work remotely through the school year. During this time, and the next summer, I was tasked with bugfixes involving my previous creations, as well as working on other bugs throughout the software.
The work done here, on Enterprise Content Management software, is web front end work with a heavy C# backend.
During my first internship I was thrusted into this world and set out to create an entirely new part of the overall application. This project, called "Upload", allows user to upload documents through a web interface and have them enter the system.
My second summer I worked on a new security and authentication system that the product now uses. Along with this, I also painfully developed Office Add-Ins for our product. These add-ins leveraged the Upload App (first internship project), and allows users to upload documents/emails/attachments directly from any Microsoft Office program.
After my second summer I continued to work remotely through the school year. During this time, and the next summer, I was tasked with bugfixes involving my previous creations, as well as working on other bugs throughout the software.
Solar Car Team
Electrical Team Lead
2017 - 2018
In the fall semester of 2017, I started my role as the Electrical Team Lead for the Missouri S&T Solar Car Team.
This was a big step up from my previous roles in the team, but I was feeling up to the challenge after
having a frustrating time at FSGP 2017.
My primary goals were to increase the efficiency of the electrical team. While we were unable to race due to BPS issues (actual electrical magic), ridiculous roadblocks put up by the school, and poor team morale, I believe I accomplished my goal. I ended up designing several circuit boards, and wrote a ton of software. I created several tools for the electrical team that increases efficiency when writing code, designing boards, and purchasing components.
The first, which I had already been working on for almost a year at the start of the school year, was a Driver Library written in C. This library, complete with unit tests, allows us to write less common code (e.g., CAN Drivers, SPI Drivers) and gives us a piece of mind of knowing that it works.
At the time, we used Texas Instruments MSP430F5529 microcontrollers, so I wanted this library to provide an Arduino-like syntax but still be robust enough to support different microcontrollers (and different CAN controllers) with different features and specs.
The driver library ended up being completely modular. The microcontroller and CAN controller drivers are both selected at compile-time based on preprocessor directives set by the compiler (or IDE). This is one of the accompishements I am most proud of on this team.
My KiCad BOM Generator was created to reduce the amount of time it takes team members to produce Bill-of-Materials for their projects, and to encforce a common formatting.
It is highly customizable and fully-featured, I'm also really proud of this.
I also created a common library of KiCad components (symbols and footprints) for the majority of components we use on the team. This is complete with metadata for each component including suplier and manufacturer information. The goal of this was to reduce the amount of time to design boards, as well as reduce errors in footprints since team members no longer need to be making the same footprints as other members.
My primary goals were to increase the efficiency of the electrical team. While we were unable to race due to BPS issues (actual electrical magic), ridiculous roadblocks put up by the school, and poor team morale, I believe I accomplished my goal. I ended up designing several circuit boards, and wrote a ton of software. I created several tools for the electrical team that increases efficiency when writing code, designing boards, and purchasing components.
The first, which I had already been working on for almost a year at the start of the school year, was a Driver Library written in C. This library, complete with unit tests, allows us to write less common code (e.g., CAN Drivers, SPI Drivers) and gives us a piece of mind of knowing that it works.
At the time, we used Texas Instruments MSP430F5529 microcontrollers, so I wanted this library to provide an Arduino-like syntax but still be robust enough to support different microcontrollers (and different CAN controllers) with different features and specs.
The driver library ended up being completely modular. The microcontroller and CAN controller drivers are both selected at compile-time based on preprocessor directives set by the compiler (or IDE). This is one of the accompishements I am most proud of on this team.
My KiCad BOM Generator was created to reduce the amount of time it takes team members to produce Bill-of-Materials for their projects, and to encforce a common formatting.
It is highly customizable and fully-featured, I'm also really proud of this.
I also created a common library of KiCad components (symbols and footprints) for the majority of components we use on the team. This is complete with metadata for each component including suplier and manufacturer information. The goal of this was to reduce the amount of time to design boards, as well as reduce errors in footprints since team members no longer need to be making the same footprints as other members.
LMI Aerospace Inc.
Developer Intern
2016 - 2017
My time as the sole developer at LMI Aerospace Inc. in Cuba, MO was a fantastic experience.
In the fall semester of 2016, I responded to an email-blast about an internship in Cuba, MO as a programmer. The reason behind the internship was to update the plant's custom work order processing system.
The system, a web-based application built using ASP.NET with some C# backend, tracked orders through the plant. It allowed management to track wherever an order was at any certain time.
In my time here, I added several features to this system, and performed several minor bug fixes I found along the way.
My main goal for the internship was to add time-tracking to each order. This included a countdown to when the part should be in the next location, and a countdown to when the part should leave.
This was used to enforce time frames for certain areas of the plant, as well as checking on how long expedited orders are doing.
In the fall semester of 2016, I responded to an email-blast about an internship in Cuba, MO as a programmer. The reason behind the internship was to update the plant's custom work order processing system.
The system, a web-based application built using ASP.NET with some C# backend, tracked orders through the plant. It allowed management to track wherever an order was at any certain time.
In my time here, I added several features to this system, and performed several minor bug fixes I found along the way.
My main goal for the internship was to add time-tracking to each order. This included a countdown to when the part should be in the next location, and a countdown to when the part should leave.
This was used to enforce time frames for certain areas of the plant, as well as checking on how long expedited orders are doing.
Solar Car Team
Team Member
2015 - 2017
During my first few years on the Missouri S&T Solar Car Team my role dealt
mainly with the telemetry software, the team website, and programming microcontrollers.
The telemetry software received UDP messages sent from the solar car, updated the interface, and logged to a text file.
After the initial rewrite, the code behind this interface went through many changes.
In 2016, the team placed 4th in the American Solar Challenge.
During the second year racing Solar Miner, at the 2017 Formula Sun Grand Prix in Austin, Texas, I was responsible for the maintenance of the Battery Protection System software. This race was challenging and our team faced a lot of problems, but we powered through each problem, overcame shorting the battery pack, and finished 8th out of 17 teams.
After the initial rewrite, the code behind this interface went through many changes.
In 2016, the team placed 4th in the American Solar Challenge.
During the second year racing Solar Miner, at the 2017 Formula Sun Grand Prix in Austin, Texas, I was responsible for the maintenance of the Battery Protection System software. This race was challenging and our team faced a lot of problems, but we powered through each problem, overcame shorting the battery pack, and finished 8th out of 17 teams.