In order to get a better understanding of the full stack of embedded system development, I wanted to design a PCB from the ground up and program it. Like most newcomers to embedded systems and microcontrollers, my first introduction to embedded systems was Arduino and Atmel’s AVR microcontrollers. Because of my experience with Arduino, I chose to use an AVR microcontroller for this board. I also wanted to free myself from the friendly but nonetheless rigid development environment of Arduino and the Arduino IDE. So, I elected to use the avr-gcc compiler and avr standard library manually without relying on the Arduino IDE to control the build process and the hardware peripherals.