Skill (years)

Public Examples of Work

Programming Languages
C (18+)
C++ (8+)
Bash/Dash (10+)
Python (6+)
NEON (3+)
Developed various bootloaders to support firmware updates over USB, Ethernet, and WiFi.
Developed computer vision algorithm split between Qualcomm ARM and Hexagon DSP.
• Automated Petalinux BSP builds using Bash and Jenkins.
Research and Develop Agent Smith automated TA training tool (5000 lines of Python code).
Developed an ARM/NEON (Xilinx) based fastmemcpy for moving data from uncached CMA memory to cached memory in 256bit transfers to achieve near ideal transfer rates.
Modern Software Development
Git (8+)
Jira (5+)
Docker (5+)
Confluence (5+)
Docker (5+)
Agile/Scrum (2+)
Jenkins (<2)
AWS (2+)
Managed a team of graduate students doing AI/ML Research and Development.
• Developed Dockerfiles for Python development and out-of-tree Linux driver building.
• A firm believer in documentation, especially when working remotely.
• Developed Dockerfiles for Python development and out-of-tree Linux driver building.
• Formal Agile/Scrum training at Analog Devices.
• Developed Docker+Jenkins Petalinux BSP build environment.
• Managed multiple AWS EC2 instances and an RDS database with local SQL databases. Extensive work with IBM Watson and other ML cloud services from Google and AWS.
Embedded Linux
UBoot (10+)
Buildroot (10+)
Yocto (2+)
PetaLinux (2+)
NVIDIA (2+)
Xilinx (2+)
Qualcomm (<1)
• Ported U-Boot to various i.MX boards; concentrating on fixing DDR issues.
• Customized Buildroot BSPs for i.MX, ADSP-SC589, and Xilinx Zynq-7000-based boards.
Doulos Yocto training. Customized Yocto BSPs for i.MX, ADSP-SC589, and Zynq UltraScale+ based boards.
• Customized Petalinux BSPs for Xilinx Zynq-7000 and Zynq UltraScale+ based boards.
NVIDIA (2+) • Developed I2C and SPI drivers for various external sensors.
Out-of-tree device driver development and packaging using Opkg and dpkg-dev.
Developed computer vision algorithm split between Qualcomm ARM and Hexagon
Device Driver Development
I2C/SPI (18+)
Ethernet (5+)
DMA (5+)
ADC (4+)
USB (4+)
PCIe (4+)
FPGA (2+)
i.MX (4+)
ADSPSC589 (4+)
• Developed Xilinx, Tegra, and Broadcom Linux I2C drivers for interfacing to various sensors: GPS, Battery Fuel Gauge, IO expander, VL6180X time of flight sensor, and ICM20948 accelerometer.
Custom high-performance Zero-copy Ethernet driver capable of almost 1GB/s.
• Developed DMA drivers for SPI, UART, and ADC.
• Developed drivers for low-speed and audio analog to digital converters.
• Extensive work with both bare-metal and Linux USB.
Custom ARM Linux PCIe drivers and bare-metal root complex and endpoint PCIe drivers for ADSP-SC589 (skilled in using PCIe protocol analyzers for debugging tough PCIe issues)
• Linux DMA driver development for use in moving data from FPGA to OCM.
• Developed custom i.MX LCD and camera (V4L2) Linux device drivers.
• Developed ARM Linux device drivers for inter-processor communications between DSP and ARM over shared memory for ADSP-SC58.
Software/Libraries
FreeRTOS (5+)
LWiP (3+)
OpenCV (4+)
802.15.4 (2+)
GPSd (<1)
• Multi-core distributed system for moving multi-channel real-time data from ADC to host at 1GB/s UDP + Ethernet driver for the ADSP-SC589 ARM+DSP including DMA-based inter-processor communications and a custom high-performance Ethernet driver with port switch using FreeRTOS and LWIP.
OpenCV on embedded systems training OpenCV Training
• Developed 80.15.4 mesh network algorithm and implementation for industrial control.
• Ported GPSd to Skylight cellular survey application.
AI/ML/Robotics
Comp Vision (3+)
SLAM (2+)
Particle Filters (2+)
LIDAR (1+)
SQL (1+)
AI/ML (2+)
Computer vision-controlled robot arm. Video
• Developed an algorithm for monocular optical flow for obstruction detection. Video
• Developed particle filter for mobile robot navigation.
• Developed particle filter computer vision-based tracker. Video
• Developed robot navigation using LIDAR video
• Reduced time to create a custom AI question-answering agent from 1000 hours to 5 hours by developing a knowledge database and Python/SQL engine based on research around student/agent interaction paper and paper.
• Researched ML and AI-based natural language understanding methods to extract entities and intents from unstructured text. Video
Developed a web-based syllabus expert system to help course creators write better syllabi and automatically generate a hybrid AI/ML agent to answer questions about the syllabus automatically.
• Developed ML pipeline for analyzing RF sensor data and web-based visualization tools for data presentation.
• Developed web-based Q&A agents to support engineers with new products.
• Developed the first AI-based garage door opener using artificial intelligence to learn the installation and automatically adapt.
Board Bring-up/Bare-metal
Blackfin (4+)
PIC32 (2+)
MSP430 (3+)
TI CC3XXX WiFi (1+)
JTAG (18+)
Oscilloscope (18+)
Logic Analyzer (18+)
USB Protocol Analyzer (6+)
PCIe Protocol Analyzer (4+)
Spectrum Analyzer (1+)
Optimized computer vision algorithms for multi-core DSP.
• Developed PIC32 and MSP430 firmware for an Ethernet and Modbus-connected industrial controller. The firmware supports Ethernet and USB firmware updates with a redundant bootloader, A PID motor controller, and various I2C + SPI sensors.
• Developed MSP430 firmware to read a 3-axis accelerometer and send the data to an Android device over BLE.
• Created bare-metal PIC32 and TI CC32XX WiFi firmware (bootloaders, over-the-air update support, RESTful interfaces) for Internet of Things appliances, including SPI and I2C drivers for interfacing to sensors (Accelerometer, temperature).
• Over 18 years of experience bringing up new hardware using JTAG debuggers, scopes, and logic analyzers. I own a digital scope, a 16-channel logic analyzer, and a Beagle USB protocol analyzer.
IoT
Developed various bootloaders to support firmware updates over USB, Ethernet, and WiFi.
• Managed multiple AWS EC2 instances, an RDS database, and local SQL databases. Extensive work with IBM Watson and other ML cloud services from Google and AWS.
• Performed initial research and developed an embedded Linux-based prototype of the myQ-connected garage door opener [patent].
• Multi-core distributed system for moving multi-channel real-time data from ADC to host at 1GB/s UDP + Ethernet driver for the ADSP-SC589 ARM+DSP including DMA-based inter-processor communications and a custom high-performance Ethernet driver with port switch using FreeRTOS and LWIP.
• Developed 80.15.4 mesh network algorithm and implementation for industrial control.
• Developed PIC32 and MSP430 firmware for an Ethernet and Modbus-connected industrial controller. The firmware supports Ethernet and USB updates with a redundant bootloader, A PID motor controller, and various I2C + SPI sensors.
• Created bare-metal PIC32 and TI CC32XX WiFi firmware (bootloaders, over-the-air update support, RESTful interfaces) for Internet of Things appliances, including SPI and I2C drivers for sensors (Accelerometer, temperature) interface.
• Performed initial research and developed an embedded Linux-based prototype of the myQ-connected garage door opener [patent].
Mentor/Manager
• Managed a team of four engineers developing custom software per customer specifications at Analog Devices.
• Managed a team of seven grad students researching artificial intelligence in the classroom (the project is called Jill Watson).
• Graduate associate instructor of operating systems, AI, and computer vision at Georgia Tech. As an associate instructor, I create projects for students, help students with the projects, and grade the student's projects. All operating system projects are based on Linux, multi-threaded, and perform some type of network communications (sockets, gRPC). AI and computer vision projects based on Python.
• Adjunct computer science professor at Southern New Hampshire University (SHNU), I teach C++ and OOP to undergraduate students. As an undergraduate professor, I create written and video content: CS 210 video content.