Hi everyone! My name is Chad, and welcome to my personal website! Below you'll find a lot of information about me. Check out some of the projects I've worked and the experiences I've had in the engineering workplace. You can also learn about how I enjoy spending my time outside of work. Please take a moment to make an entry in the Visitors Log at the bottom of the page. I'm curious as to who visits the site and how geographically diverse my visitors are. If you have any questions about the site or the content, please shoot me an email, and I'd be happy to respond. As the creator of the site, I'm very close to the material and layout of the page, which may blind me to usability issues or errors in the content. I welcome any and all feedback!
I am originally from Virginia Beach, VA and moved to Charlottesville, VA in August 2011 to attend the University of Virginia. In May 2015, I obtained my Bachelor of Science in Electrical Engineering and a Minor in Engineering Business. I structured my coursework and internships more around software, however, effectively transforming me into more of a Computer Engineer. Software development is where nearly all of my design work has been, both inside and outside of school, and it is what interests me the most. I find most rewarding work that allows me to exercise my creativity, rapidly experiment and prototype, own a project from concept through implementation, and deliver technology that serves a valuable purpose. Software development allows me to achieve these aspirations and provides me with a sense of fulfillment. This website is the most recent manifestation of this. I initiated this project to learn client- and server-side web development, pick up programming languages, libraries, frameworks, and technologies new to me, and create a product to market myself. I learn best by doing, and this was a great project to develop new skills. Take a moment to look at some of the projects I've worked.
I currently live in Fort Worth, TX working as a Software Engineer at Lockheed Martin Aeronautics Company. I am standing up the software development environment and services for the next major F-22 modernization program, and I am facilitating the integration of our Open Systems Architecture onto the aircraft. I'm mostly working in Ada, C++, Java, and XML on Linux machines and am getting great exposure to new development tools I haven't used before. Before this, I worked for a year as a Project Engineer, which gave me great insight and experience into becoming a program leader. The programs at LM Aero are incredibly complex, both from technical and logistical perspectives. They require tight coordination with internal development and test teams, external customers and suppliers, as well as program leadership. The programs are quite costly with enormous ramifications contingent on performance. As a Project Engineer, I managed the capability deliveries at a system-level, impacts to the development and test teams, and the many problems that arose throughout product development. It’s a job with a large scope of responsibilities, and I had to juggle and maintain sang-froid as I drove work to closure. Check out my work history to learn a bit more about my professional work experience.
I’ve always had an entrepreneurial fire in me, and I’m passionate about the commercialization of technologies that shape our lives. I dream of one day becoming a small business owner delivering a software product to the world. Perhaps it’s in the cards; perhaps it's not. Regardless, I hope to become a technology leader as I progress through my career and gain more software engineering experience. I strive to develop a solid technical background before considering a leap into entrepreneurship.
When I’m not at work or diving into personal projects, I’m usually doing something active. I enjoy playing quite a few sports, engaging in the arts, and travelling. I also like forcing myself out of my comfort zone to experience and learn new things. I'm an open-minded person and am not quick to shut doors to new opportunities. I think this has made me easy to work with and establish long-lasting relationships.
B.S. Electrical Engineering
Engineering Business Minor
Highest Distinction, Dean’s List, Intermediate Honors
University of Virginia
School of Engineering and Applied Science
Embedded System Design (C)
Embedded Computing Systems (C)
Computer Networks (Java and C)
Software Development Methods (Java)
Introduction to Programming (Java and Python)
Digital Signal and Image Processing (MATLAB)
I am currently working as a Software Engineer on one of the Agile teams for the next major F-22 modernization program. My primary tasks are to stand up the software development environment and services for this new program and to support the integration of an Open Systems Architecture (OSA) onto the aircraft. OSA moves the platform away from closed, customized, and proprietary technology toward a more open approach using commercial off-the-shelf products and open standards. Transitioning to OSA will significantly reduce development and sustainment costs, maximize technology reuse, and accelerate capability deliveries to the warfighter. Currently, I am porting middleware written in Ada and C++ and communications datalink services written in Java and XML to Linux which will run on the jet. I am also integrating a deep learning algorithm for target recognition and adaptation into OSA.
Prior to this, I worked as a Project Engineer, and although it was a great opportunity to manage a large program and exercise professional leadership skills, I genuinely missed the software design and development work I did for so many years during my undergraduate studies and internships. Software Engineering is my chosen technical career path, and Project Engineering provided perspective of how software development fits into the larger program.
I saw a unique opportunity at LM Aero that very few new-hires were given. I was able to work as a Project Engineer for a year before transitioning to one of the development teams as a Software Engineer. Project Engineers at LM Aero have several years of experience, but I was able to enter the role out of college. The intent was to first introduce aspiring leaders of the company to the program-level problem space and to cultivate the skills needed to lead the development and test teams through major programs. Systems Engineering is very much at the core of Project Engineering at LM Aero, and it requires understanding the program from both technical and operational perspectives. It was such a valuable learning experience, especially for someone like me who eventually wants to become a leader with deep technical knowledge.
As a Project Engineer, I oversaw avionics hardware and software modernization and capability enhancements on the F-22 platform for our U.S. Government and Air Force customers. In this role, I gained extensive experience liaising between stakeholders, which allowed me to understand the products and operation holistically. I created roadmaps and ensured adherence to a tight tempo as we drove work to closure. I created metrics to prioritize, track, project, and manage the completion of technical work, which involved extensive data collection and analysis. I gained experience in risk management and developed a MATLAB tool to extract and display risk metrics. This challenged my ability to write code on top of that from a past developer. Project Engineering requires being a team-player, communicating effectively, putting yourself in the customer’s shoes, and knowing how to traverse complex processes.
Here’s a more detailed list of some of the efforts I supported as a Project Engineer:
I worked in Production Support on the Hellfire II missile program as an Electrical Engineering intern. Personally, I feel my most significant contribution was identifying a problem with how Production Support’s test failure analyses were reviewed, and I created a self-proposed Java application to automate the process. I saw this as an opportunity to exercise my software skills at the time to automate a tedious process being performed manually. I was also invigorated by the fact that I could own this project from design through implementation. It was a stretch assignment, as I didn’t know at the start if I could accomplish all that I hoped, but I knew I could get nearly all the way, and I was confident I could resolve the unknowns.
I coded the solution in Java, implemented the JExcel API, and created a GUI. I worked in an Agile process by regularly delivering working code to the end users to ensure the application was on the correct track, and I made incremental adjustments as needed.
The Java program extracts selected test failure data from test logs and utilizes the JExcel API to generate spreadsheets that organize this data for the user. I created a GUI that allows the user to select files and generate the spreadsheets. The GUI presents the user with the history of their actions and any errors that have occurred. I also drafted comprehensive documentation on the program’s features, functionality, conditions, and operational steps.
Other tasks I was assigned were calibrating and validating test sets, mining through test data to identify noisy hardware, classifying power supply failures, and capturing a schematic using OrCAD.
This was a great opportunity to work in a smaller engineering company, now under the name "Fairlead Integrated Power and Controls." They design, build, and install control and monitoring systems for the marine and manufacturing industries. I worked as an Engineering intern where I learned how to read data sheets to select parts that meet project specifications, review technical documents, code programmable logic controllers, and test a control system on naval vessel Cape May.
During the same period as my internship with Miller Integrated Power and Controls, I worked as a marketing intern for Swan Solar where I wrote and published content to press releases, blogs, and social media websites to increase their online presence and bring more traffic to their website. This was done in an effort to increase sales. I was also able to strategize with management on an effective marketing plan per the area, and I learned about effective sales tactics.
This project was a fantastic experience that challenged my teammates and I to incorporate much of the computer networking and embedded software development we learned in separate classes. I truly enjoyed that this was a concept-to-implementation project.
The problem we attempted to solve with a technological solution was creating an efficient system for locating which conference rooms in large buildings were occupied on our college grounds. This was an attempt to save people time finding vacant conference rooms in which to study or hold meetings.
We developed an embedded systems solution using a microcontroller and passive infrared (PIR) sensor to autonomously sense the occupancy of a room and convey this information to users through web and mobile applications. It involved coding in C and Python, using the Flask web application framework, interfacing with a MongoDB database on the server, understanding IP addresses and port numbers, polling a peripheral PIR sensor using interrupt service routines, creating packets, establishing a UDP connection to the server, using AT commands and SPI communication, and creating a simple user-facing website and Android application to display the rooms' occupancy information.
A Parallax passive infrared (PIR) sensor to detect motion in the room, a TI MSP430 microcontroller LaunchPad, and an XBee Wi-Fi module for connecting the LaunchPad to the internet
Amazon Web Services (AWS) server running the Flask micro web framework that holds a MongoDB database
Created simple web and Android applications
The PIR sensor is connected to the general purpose pins of the LaunchPad. It sends a high signal when motion is detected and a low signal when no motion is detected. The signal remains high while there is motion being sensed.
An interrupt service routine (ISR) was written for the pin connected to the PIR sensor to read it, as opposed to a software loop consistently polling the pin which is wasteful computational time.
Occupancy information is sent to the web server through the XBee Wi-Fi module.
We used serial peripheral interface (SPI) communication to talk to the XBee from the LaunchPad in the form of data packets. The packets were structured like so: start delimiter, length of message, API identifier, payload, and checksum. We used bit-banging to send commands and data to the XBee by toggling the software clock pin connected to the XBee to latch the bits.
We sent packets to connect the XBee to the internet (SSID information) and update the occupancy status using our server’s IP address, port number, and a UDP connection. We used a UDP connection because it is quicker and simpler than a TCP connection; there aren’t the handshakes and ACKs associated with TCP connections. Also, it was fine if packets were dropped since we only care what the latest packet says about the occupancy status. A packet that comes through after a series of dropped packets makes up for the apparent lag in information.
We used Flask because it allowed us to create a web application in only a few lines of code, and we didn’t need the extensiveness of a model-view-controller (MVC) framework for this application.
We used a MongoDB database that only needed to keep track of a module identifier, room number, and occupancy status. Because the database was small, we were able to use one server to host the web and mobile applications as well as the database.
At times, we overloaded the server. This occurred when too many packets were sent to the server for it to handle at one time. At first, a packet was sent each time motion toggled. We later included a timer that prevented packets from being sent too close in time to one another. Flask doesn’t handle multiple simultaneous requests well, so this design would not be scalable. We should have used a framework like Node.js instead. We also couldn’t use AJAX to automatically update the web and mobile clients because this too would have overloaded the server.
For scalability, we envision using 3 servers: a module server, a database server, and a web and mobile server. The modules would connect to a load balancer which would dynamically spin up or down the module servers as needed. On the other end of these servers would be the database server(s). The user wouldn't have direct access to the database for security reasons. The database would connect to a load balancer feeding intermediary servers that talk to the end systems.
Our project had a unidirectional architecture where the modules sent information through the system to the end users. To reserve rooms by sending information to the database from the web or mobile clients, we would have to enable bidirectional communication.
The Embedded Computing Systems class was an intense project-based course that required self-learning and teamwork to complete the projects. The MSP430 microcontroller LaunchPad was the technology platform, and header boards that extended the functionality of the LaunchPad were provided as needed. I learned the C programming language quickly and how it can be used to implement solutions that were new to me.
Highlights to the course include analog-to-digital conversion (ADC), pulse width modulation (PWM), serial peripheral interface (SPI) communication, de-bouncing switches using state machines, controlling an electric motor, and interfacing with an accelerometer. Our final project was to make a Simon Says type of game with the accelerometer, radial LEDs, and state machines. One user would set a movement pattern by rotating the LaunchPad in 3D space, and a second user would have to replicate the movements to win. The LEDs indicate the position of the LaunchPad and blink to indicate a win or loss.
This project was part of a Software Development Methods class I took. It was a crack at working in an Agile environment and learning to use external libraries in Java. In a team of four comprised of a project manager, software architect, GUI developer, and quality assurance member, I was the project manager responsible for the team’s adherence to the Scrum software development method. I created and maintained user stories and their acceptance criteria. I planned which stories would be addressed in each sprint, assigned tasks to team members, and wrote the sprint retrospectives. I also assumed responsibility for coding the portion that dealt with the Smack API, a library for instant messenging and presence.
The final project of my Systems Engineering class was to formulate and present a consulting proposal to address the issue of repairing Virginia’s deficient bridges. This project required understanding the system as is, performing stakeholder analysis to determine how to design the system to meet their needs, creating objectives and metrics to measure performance of potential solutions, processing heavy amounts of data, performing sensitivity analyses, and delivering recommendations to the clients. I enjoyed the high-level thinking that accompanied this project such as understanding how technical solutions fit in the larger scope of the project and the influences they have on stakeholders.
Please take a moment and input your name, where you’re from, and a comment about your experience traversing the website and reading the content. I’ll take any and all feedback: praises, criticisms, suggestions, and random unrelated comments.