Andy Meyer
A Computer Engineer with a passion for creating value by building extraordinary things
About Me
Welcome.
I am a computer engineer who values quality over quantity,
honors hard and honest work, and believes in teamwork, documented code,
and starting the day with a good cup of coffee.
The 30-second version of this document can be found on my resume!
The best way to contact me is via email.
Projects
picture missing :(
alibc.containers

The missing #include for C. This project has been going since 2018 and started as an attempt to make an unopinionated, hassle-free Rapid Application Development library for C. It includes commonly-used datastructures that are written on top of a common memory management structure. I have used it for several school projects and for my own prototyping, and it is still under active development!

picture missing :(
P20123/Autonomous Search and Rescue Drones

Senior Design Project at RIT. I managed a multidisiplinary team with two mechanical engineers, an electrical engineer, and three computer engineers. While the project was not completed, a great deal was learned about working with other engineers, specifically the challenges faced in other disciplines. The biggest technical acheivement on my part was writing a small real-time operating system with syscalls, mutexes, file descriptors, context switching, and safe interrupt handling --- from the ground up.

picture missing :(
Online Resume and Portfolio

Disclaimer: I am not a frontend dev. However, in an effort to have an online presence, I have taught myself enough web development to make a static resume and the portfolio you're currently reading. This project is among the more foreign to me, requiring almost entirely skills outside my expertise. I am pretty happy with the results!

picture missing :(
OPAL-01 Instruction Set Architecture

I worked with my classmate and good friend Wesley Dahar on the OPAL-01 processor for our Computer Organization class. What was supposed to be a quick, eight-instruction CPU for an easy class project turned into a full manual inspired by the style of the ARMv8-M ISA documents. We designed the ISA from the ground up in about a week and Wesley made some example programs using our ISA.

In Digital IC Design, OPAL-01 was used as the main coordinator of a neural-network accelerator design. My friend Sabrina Ly implemented the entire ISA in VHDL-93, and I wrote an assembler in C and the firmware for our accelerator in OPAL-01 assembly.

picture missing :(
snake-lang

The Fundamental Theorem of Python, 1, states that anything can be done in python.

The Fundamental Theorem of Python, 2, states "just badly."

snake-lang is engineering stand-up. Although it is unfit for use in production code, it demonstrates that the dynamic nature of Python allows it to emulate the features of other languages, such as Swift. Eventually I plan on adding other demonstrations, such as the ability to have static class interfaces with initialization-time enforcement.

picture missing :(
Super Touchplate/Automated Offset Milling

This javascript widget makes it easier to align a 3-axis CNC mill to a workpiece. It plugs the fantastic Chilipeppr/TinyG by John Lauer (of Zipwhip), a browser-based, open source CNC milling platform. I wrote it in a week in 2015, and have made a few updates since then.

While this is one of my earliest projects, it is one I can say has absolutely positively affected many people and I am glad that I had the opportunity to do something beneficial!

picture missing :(
TinyXPC

This ongoing project aims to develop an ultralight alternative to a normal TCP/IP stack, that can run on a variety of PHY layers without the resource requirements of full TCP. It's current revision works in software on Linux, and can be considered a proof of concept. It was originally designed as an inter-process message passing system, but the target design has evolved into a two-layer messaging system designed primarily for edge devices and microcontrollers.

picture missing :(
Bitbanged VGA

Inspired by Linus Ã…kesson's Craft demo from 2008, which featured an ATMEGA88 rendering incredible graphics on a VGA monitor, my friend Piers Kwan and I tried to recreate a small subset of that functionality on a Kinetis KL46 Cortex-M0+, for the final project of our Assembly Language Programming class. We managed to get static colors on the screen in only two days, in which we wrote all of the code, learned the protocol, and figured out how to test our designs. The code that ran in the final demo is 100% hand-written ARMv7-M/Thumb 2 assembly. Maybe someday we'll try and make something worthy of our inspiration...

picture missing :(
Kinetis K60-Series Meson Template

Embedded C does not have to be ugly, full of complicated shell scripts and Makefiles, and this project is the proof. Originally developed for my race car in Interface and Digital Electronics, and then evolved to a more robust platform for my Senior Design team, this template uses Meson and a few very simple Bash scripts to automate the build, flash, and debug stages of baremetal firmware development in C. Not only is it faster and smarter than a Makefile, but it is easier to maintain and extend. Meson is flexible enough that we were able to make several builds of an operating system and applications for our Senior Design project from a single repository, all configurable with a single command at compile time!

Skills
The C Programming Language

Well versed in C at all levels ranging from baremetal embedded to
application-level work. Familiar with event-driven programming and async IO.
C is my favorite language to work in, by far.
Well-written and architected C can be just as beautiful as any other language!

Python

I prefer to say "I'm a snake charmer" than "I'm a Pythonista".
My work here ranges from development to intra-team consulting.
All of my notable work in this area is secret due to NDAs with former employers.

Git VCS

Looking for proof? Have a look at this project which I managed:
P20123: Autonomous Search and Rescue Drones
Have a look at the previous pull requests in the firmware repository if you're curious about code reviews!

Linux and Friends

I have been using Linux as a daily driver since 2011! I run Sway on Arch.
Apart from common APIs like Berkeley Sockets, I know some specialized APIs:

epoll, GTK+, termios, select/poll


ARM Assembly

Experienced with writing algorithms and hand-optimizing code in ARM Thumb 2.
Cortex-M0+ and M4 experience primarily. I am familiar with working with
GNU linker scripts as well. Best example: Context switching on Cortex-M4

Build Systems

Meson, CMake, GNU Make, xcodebuild, Autotools, ... I'm sure I forgot a few.
I use Meson for all of my personal projects, have a look at my embedded firmware templates that use it!
NXP Kinetis Baremetal Template
Microchip AVR Baremetal Template

Machine Learning & Data Science

I have done professional and academic research in machine learning, with a focus on signal analysis and image processing.
The usual Python suspects are all familiar to me - Numpy, TensorFlow, SKLearn, Scikit, Matplotlib, etc.
Looking for something a little more low-level? I know CUDA too.

Web Technologies

This website was made using Hugo, and my resume was built with HTML & CSS, no JS, and by hand!
I can work with web frontend in a pinch. I learned Tailwind CSS to make my resume responsive and printable.
I have written microservices using NGINX, uwsgi, and Flask at several jobs.

...And More

Didn't find everything you're looking for? Ask away!
I'm always learning new things, it's what I do. I learn on the job, too!
If I have some skills you are looking for, and I'm missing a few, I'd still love to hear from you.

Work Experience
Apple, Inc.
Jun-Dec 2018, May-Aug 2019

My work at Apple was centered on debug infrastructure and triage tools, but did include work with EFI firmware. Projects include:

  • Preserving volatile debugging information across system reboots without dynamic memory and with data integrity verification.

  • Investigating the source of stalling on USB-3 connected core dumps and JTAG. Provided data and static code analysis to point to optimizations in third-party code needed to be made.

  • Writing a framework for decoding Intel Machine Checks, which was then turned into a service accessible over HTTP and JSON.

  • Converting some internal tools to Python3, and wrapping external Python2 tools in a compatibility layer so they could be containerized, and used from modern languages until their replacement.

  • Assisting with development of a framework to convert TianoCore build system into Xcode-compatible build definitions. Greatly optimized existing architecture without intrusive changes.

Assured Information Security
May-Sept 2017

I worked as a machine learning researcher at AIS. Most of my time there was spent teaching myself the basics of neural networks, and then using them in a prototype cybersecurity project. The resulting systems ended up patented! Achievements include:

  • I am a co-author on these United States patents: 10769259, 10769260

  • Creation of a data processing framework that could perform filtering, and data segmentation in an easily augmentable way. The framework included caching in sqlite databases, so that the operations could be paused and resumed without losing progress. I used the caches to keep the memory usage to a minimum, so that the framework could be easily run on laptops and personal computers.

Rochester Institute of Technology
Aug 2017-May 2018, Jan-May 2019, Aug 2020-Now

I worked as a teaching assistant for a variety of classes, spanning computer science, assembly language programming, and control systems. I believe that it is important to enable students to learn and understand things, in order to make them better engineers. Most of my grading effort went into helping students become better writers, while most of my teaching efforts went into working in small groups with students to assist them with understanding the course material and beyond.

Education
Master of Science, Computer Engineering

Planning to graduate in August 2021.
My thesis topic is about improving generalization performance of deep neural networks using Information Theory, and is currently underway.

Bachelor of Science, Computer Engineering

Planning to graduate in May 2021.
Minor in Mathematics.
I took the minor in math because it was a weak subject for me, and I chose to improve my skills. I have definitely succeeded!
Working with mathematics at a higher level has helped me to think in abstracts and be able to model difficult concepts in a simple way.