Professional Experience
  • 1st Jan 2023 •
  •  3 min read

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.