Professional Experience
I have a B.S. in computer engineering from Utah State University. As an embedded engineer, I enjoy both the software and hardware realms and thrive on the interplay between the two.
I have been working as an engineer professionally since 2018, and full-time since 2021.
Software
I have been coding since 2008, when I learned BASIC for an English project, of all things. I went on to learn C, C++, C#, x86(_64) assembly, Rust, and Python, and dabble in a few others, like Java and JavaScript. I am most proficient in C++. Until I started working at Vivint, all of my professional development has been in C++. However, I have done development in pure C, and I am well familiar with the differences between C and C++. I have done a few projects in Rust as well.
Some notable software projects I have done:
- The operating system kernel I wrote for my senior design project
- A CPSL compiler
- The STM32 ARM-powered robot I controlled over Bluetooth (pure C code)
- The MAVLink library a previous company has been using for years for command and control of ArduCopter drones
- Control code for a manufacturing machine
- An implementation of ARP
- A grammar-based text generator
Linux
Linux has been my daily driver for the past 6 years. I work, play, write, and game on Linux 98% of the time. I am proficient with shell scripting as well as systemd service configuration. About 4 years ago, I switched to using Arch on my main machines as a way of gaining understanding of how Linux works underneath the hood.
I've also started to sharpen my embedded Linux skills with some Yocto projects
Hardware
FPGA
I have done some work with FPGAs in both Verilog and VHDL. Some notable projects from this category include:
- A 4-bit CPU complete with arithmetic logic unit (ALU) and instruction pointer
- A bumper pool game that utilized DACs and ADCs and drove a VGA connector for graphics
- A pseudo-random number generator
Analog Design/PCBs
I have designed two PCBs for work of about 10-20 components each. I used ExpressPCB and Altium for them. The former project was implemented and flown on drone missions, but production of the latter has been halted until the program gets more funding. I have also designed, layed out, and assembled a PCB at home with KiCad.
Besides straight PCBs, I also design circuits when I can. For instance, I designed and soldered all the circuitry in my Useless Box project (article coming soon).
Power
My most significant foray into power electronics was the design of a 2 kW solar powered battery charging station which is still in use today.
One of my primary concerns as “the drone guy” at work is ensuring all the payload components have power. I select various BECs or voltage regulators to ensure there is enough current at the appropriate voltages for the payload components on board.