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 originate 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 development, embedded systems programming, and signal processing, effectively making me more of a Computer Engineer. Software development is where nearly all of my design work has been, both in and out of school and the workplace, and it is what interests me the most. I find most rewarding work that allows me to exercise my creativity, rapidly experiment and prototype, have ownership from concept through release, and deliver technology that serves a valuable purpose. Software development allows me to achieve these aspirations and provides me with a sense of fulfillment; plus it's a ton of fun! My website is a manifestation of this. I initiated this project to learn client- and server-side web and mobile development, pick up programming languages, libraries, frameworks, and technologies new to me, and create a product to represent myself. I'm a hands-on learner, 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 serve on the infrastructure software team for the current major F-22 modernization program. I write infrastructure applications as well as the middleware between the Linux operating system and the applications that run on the jet as we usher in our Open Systems Architecture. I primarily work in Java, C++, and Ada on a Red Hat Enterprise Linux workstation and am getting great exposure to new development tools. I also stood up our software development environment and services. Prior to this, I worked for a year as a Project Engineer, which gave me great insight and experience to 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 capability deliveries at a system-level, impacts to the development and test teams, reviews with the customer, and 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'm always researching about new technologies and identifying trends in anticipation of the next big thing. I am currently working on a prototype personal assistant chat bot.
When I’m not at work or diving into personal projects, I’m usually doing something active. I enjoy lifting weights, running, hiking, surfing, skiing, and playing several sports, such as basketball, softball, golf, and tennis. I also like engaging in the arts, travelling, and 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 able to 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 Processing (MATLAB)
Digital Image Processing (MATLAB)
I currently work as a Software Engineer on the infrastructure software Agile team for the current major F-22 modernization program. The F-22 platform is adopting an Open Systems Architecture (OSA) whereby commercial off-the-shelf products and open software, standards, protocols, and operating system are integrated into the aircraft. OSA moves the platform away from closed, customized, and proprietary technology toward a more open approach. Transitioning to OSA will significantly reduce development and sustainment costs, maximize technology reuse, and accelerate capability deliveries to the warfighter.
In this role, I write infrastructure software and middleware services hosted on embedded platforms. I primarily program in Java, C++, and Ada in a Linux environment. I strive to produce optimal code by making it concise, consistent, reliable, readable, and extensible. I ensure high quality code by following our software development plan and coding standards as well as reviewing the code with Software Security. I also act as the middleware liaison between our team and Boeing and work with their engineers to integrate our packages with their software.
I am accustomed to working in an Agile process and serve as Scrum Master of my team, so the rest of my time is spent leading the team through sprint planning, scrums meetings, demos, and retrospectives. I address risks and dependencies raised by the team to ensure smooth code development. Every now and then, I have conversations with the software architects to understand the design decisions they face that will ultimately impact me.
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 capability enhancements on the F-22 platform for our U.S. Government and Air Force customers. In this role, I gained extensive experience coordinating 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. 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 a Software 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 delivery. 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.
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.
I am currently creating a chat bot for mobile devices that users can interact with via voice. The chat bot is intended to serve as a personal assistant, performing tasks on the user's behalf with their credentials. Tasks may include answering missed phone calls, ordering food, scheduling appointments, booking tickets, paying bills, and handling stocks. I am still working on latency issues, but for now I am using the Nexmo Voice API, Facebook’s Wit.ai, Amazon’s Polly, and Amazon Web Services to prototype part of the solution. More to come.
Currently, I am building an iOS app to view and manage my website’s MySQL database while on-the-go. This is introducing me to mobile app development. I first created a web application to ensure I could route HTTP requests to my website server via a subdomain name and show the results of a database query on a different HTML page. Then I built a rudimentary iOS app with a single button to query the database via an HTTP GET request. I am learning to use Xcode and program in Swift. More to come.
This project was a valuable experience that challenged my teammates and I to incorporate much of the computer networking and embedded software development concepts we learned in separate classes.
The problem we attempted to solve with a technological solution was the inefficiency of locating vacant conference rooms in large buildings on our college grounds 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, handling signals from a peripheral PIR sensor using interrupt service routines, constructing packets, 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) EC2 server running the Flask microframework 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 to read the pin connected to the PIR sensor. An ISR was used as opposed to a software loop that consistently polls the pin to avoid wasteful computational time for this infrequent task.
Occupancy information is sent to the web server through the XBee Wi-Fi module. We used serial peripheral interface communication to send data packets to the XBee from the LaunchPad. 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 (using SSID information) and update the occupancy status stored in our server. We used a UDP connection because it was fine for packets to be dropped since we only cared what the latest packet said about the occupancy status (real-time). 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 use a framework like Node.js instead. We also couldn’t use AJAX to automatically update the web and mobile clients without refresh because this too 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 database would connect to a load balancer feeding the web servers that talk to the web and mobile clients.
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 of the course include analog-to-digital conversion, pulse width modulation, serial peripheral interface 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 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 using external Java libraries. 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.
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.