Résumé
Professional Experience
Space Dynamics Laboratory: Logan, UT; December 2016 to present. Satellite software engineer.
BioSentinel (NASA Ames Research Center)
For the BioSentinel mission, I wrote a network/filesystem kernel module that enabled communication between the vehicle’s primary computer and an array of peripheral devices. I designed, formally verified, and implemented the system in C89. I was responsible for performing software and system integration tests, and have assisted in the troubleshooting of electrical system faults.
DARPA/MIT Research Mission
I served as the ground support software developer and mission operator for a DARPA/MIT research mission for four months. I am not at liberty to disclose mission specifics. I built our operations platform on the COSMOS framework, and was on the team responsible for our C♯ network processor. I also wrote a specialized Rust network processor for this mission.
EAGLE/Mycroft (Air Force Research Laboratory)
I serve as a ground support software developer for the EAGLE mission, working both from our Logan office and directly onsite at Kirtland AFB. I became the SDL lead developer, and work directly with the AFRL vehicle team to provide a well-tailored and correct operations program. The software is a web application written in Python 2.6, and this is my primary working experience with the Python language and the web2py framework.
Formal Education
Trine University: Angola, IN; August 2011 to May 2016. Computer Engineering major.
Notable courses:
-
Senior Design: My capstone project was the construction and programming of an autonomous cargo hauler. I worked with three mechanical engineers on the physical machine, and personally built the electrical and software systems. The machine capably navigated along a pre-programmed route, and successfully detected obstacles such as pedestrians and a train. The code is on my GitHub profile, and the summary video is on YouTube. I can provide design documents upon request.
-
Logic and Computer Design: This class focused on the hardware construction of a computer and the instruction primitives executing on it. We built a five-stage MIPS CPU in Verilog.
-
Embedded Systems: This class taught real-time operating systems and OS-less programming. We built an oscilloscope and basic RTOS.
-
Software Engineering I and II: These classes focused on development patterns, software design, and algorithm use. We learned C++/Qt and Ruby, and built a Rails app and PostgreSQL database.
General courses:
-
Mathematics: Calculus III, Linear Algebra, Differential Equations, Graph Theory and Combinatorics, Statistics, Random Processes
-
Programming: Object-Oriented Programming (Java), Application Programming (C++/Qt), Computer Security (Java), Net-Centric Computing (PHP, C++), Algorithms (C++, Python).
-
Electronic Systems: Circuit Theory and Analysis, Digital Systems (Verilog), Microcontrollers (C, Assembly).
Mechanical Engineering major (two years):
- Static Analysis, Solid Mechanics, Dynamic Systems
- Thermodynamics
- Kinematics and Mechanical Linkages
- Mechatronics
Skills
I rapidly master development environments, toolchains, and programming languages. I also readily understand software abstract principles such as algorithm design, flow of control, design patterns, and behavioral paradigms.
I taught myself the basics of programming and Linux use before switching majors, and continued to complement my formal education with individual pursuits and projects. I have continued pursuing education on my own initiative, and am capable of working with a broad range of languages, tools, and systems.
List items with a “…” following them contain additional information. Click on an item to show or hide its content, or click here to expand all items.
Languages
-
English: I have an excellent command of English and technical communication.
-
Ruby
I taught myself Ruby before taking the computer engineering major, and continue to use it as my prototyping language. I am familiar with Ruby on Rails, and have written gems for public use. I am currently using Ruby at work to drive the ground end of one of our satellite projects.
-
Java
I learned the basics of Java in high school, and pursued it further for my formal courses in it.
-
C, C++
I am most familiar with the language cores, as I did most of my embedded work with little or no standard library presence. I am also familiar with the Qt framework, and have built both integrated and client/server applications using it.
-
AVR Assembly
My embedded classes taught us to use ASM to start our controllers, implement base drivers, and hand-optimize certain routines.
-
-
Rust
I investigated using Rust for my Senior Design project. I taught myself Rust and am fluent in its core concepts. I have used it for approximately three years now, and have published crates demonstrating my knowledge of the language and its features. I have also deployed a Rust project for data stream processing at work, though I am not at liberty to disclose its code.
-
C♯:
I taught myself C♯ and Visual Studio, and have used them to build console apps and ASP.NET websites. I have also used the graphical frameworks to build applications.
-
HTML/CSS/JavaScript
I taught myself web design, and volunteered to help my professor teach these languages for my Software Engineering classes. I write this site myself, and offer it as a testament to my ability.
Others
- Bash and Zsh scripting
- Python
- AVR, MIPS, x86 assemblers
Systems and Tools
-
Windows
I’ve used Windows all my life, and have some experience in system administration and Windows Server usage. I currently only use Windows at work.
-
GNU/Linux
I started on Ubuntu, and now run Arch Linux as my daily-use system. I am comfortable working with GNU userspace tools on the command line. I have written several shell scripts and systemd units for system administration. I use Linux both as my desktop system and on my server.
-
OSX / macOS
I am comfortable using Macintosh’s graphical and terminal environments.
-
Microsoft Office
I have used Word, Excel, and Outlook since elementary school, and am proficient in their use. I am skilled with Powerpoint and familiar with Access.
-
Git
I learned Git the hardest way: on a team project, with my partner in Texas, by experimentation. I have several years of experience using Git and have a firm understanding of its theory and actual usage. I use Git for all my work.
-
Command shells
I use Zsh as my daily shell, and am familiar with GNU Bash as well. I use PowerShell at work.
-
Editors/IDEs
- Atom and Microsoft Visual Studio Code (not at all related to VS)
- Basic Vim usage
- GNU Nano
- Eclipse and NetBeans
- Microsoft Visual Studio
Other Work Experience
Rota-Kiwan Scout Reservation
I worked at Rota-Kiwan Scout Reservation over the summers during college, as a lifeguard and then aquatics director. My responsibilities included:
- Recruiting, interviewing, and hiring staff
- Managing area resources ($30,000 of material and capital assets)
- Maintaining area safety
- Coordinating emergency response with campers, staffers, and emergency services
- Training my staff members
- Enforcing safety protocols for my area in particular and the camp in general
I received excellent reviews from the scouts, parents, and my management. My technical abilities as a lifeguard are, thankfully, untested by real rescue situations; I attribute this to my abilities as an area director and the proactive safety work of my team and myself.
Professional Certifications and Associations
- Professional Association of Diving Instructors
- Rescue Diver
- Advanced Open Water Diver
- Enriched Air/Nitrox Diver
- Wreck Diver
- American Red Cross
- ARC Lifeguard
- CPR and Emergency First Aid Provider
- Boy Scouts of America
- Aquatics Instructor
- Lifeguard Instructor
- BSA Lifeguard