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. |