Skip to Content

Resume

Jacob K. McNamee

Firmware Engineer / Team Lead

Bright, talented, and passionate electrical engineer with comprehensive embedded systems experience. Highly proficient in firmware development in C/C++ for real-time systems such as handheld devices and wireless receivers. Familiarity with a wide variety of peripheral devices including accelerometers, compasses, wireless radios, flash memory, displays, and touchscreens. Background in digital signal processing, FPGA implementation, and RF design. Motivated self-starter with excellent verbal and written communication skills. Numerous personal and professional projects to support the above. BS and MS degrees from the Georgia Institute of Technology with a 4.0 GPA.

Skills

  • C/C++ firmware development, some assembly
  • Low-power design (hardware and firmware)
  • RTOS components (FreeRTOS, ChibiOS)
  • DSP theory and implementation
  • Python, Bash, C++ (Qt), POSIX
  • Lab equipment: oscilloscopes, network analyzers, signal generators, soldering/rework, etc.
  • Outstanding hardware and firmware debugging
  • Excellent technical writing ability
  • Comfortable and capable as a leader

Professional Experience

Firmware Technical Lead, Whisper.ai, San Francisco, CA 2018 - 2020
  • Firmware lead on a team of four experienced engineers building a distributed, embedded hearing aid system with strict power and timing requirements and machine learning integration. Mostly focused on STM32H7 (ChibiOS) and nRF52 (bare metal) processors
    • Developed the system from prototype to production. Brought up early hardware. Built interfaces and key functionality from scratch. Designed reliable, modularized components to manage complexity
    • Architected the firmware upgrade strategy across four codebases and three physical pieces
    • Designed and implemented a proprietary wireless protocol to support low-latency audio streaming via simultaneous parallel RF links. Provided microsecond-level clock synchronization across the system
    • Created a binary packet protocol with code generation for several languages using Mustache and Python
    • Wrote a driver for an undocumented SPI peripheral by reverse engineering the existing Linux driver. Significantly reduced system latency by communicating directly from the DSP instead of through Linux
  • Planned and coordinated sprints, provided technical guidance, and met one-on-one with teammates
  • Played a leading role in growing the team from one to four senior firmware engineers within one year
Firmware Team Lead, Swift Navigation, San Francisco, CA 2015 - 2017
  • Lead engineer on a small team responsible for the software architecture, operating system, device drivers, and infrastructure for a high-precision GNSS receiver running Linux in parallel with ChibiOS on a dual-core Cortex-A9 processor
    • Designed and implemented a robust, brick-proof firmware upgrade procedure and boot sequence capable of atomically upgrading all components of the system, including U-Boot. Wrote command-line utilities to generate, verify, and install composite upgrade images
    • Modularized, refactored, and documented key subsystems used to track and decode satellite signals, greatly simplifying and decoupling the addition of support for new GNSS constellations
    • Ported ChibiOS to the Xilinx Zynq SoC. Added support for FPU context saving and interrupt handling. Wrote, documented, and tested drivers for GPIO, UART, SPI, I2C, timers, etc.
    • Implemented RPMSG for inter-core communication. Wrote a Linux driver to expose virtual channels to Linux applications
    • Authored a well-documented library to simplify messaging, proprietary protocol decoding, persistent settings, and other generic functionality for Linux applications
  • Designed an external watchdog circuit to prevent boot failures due to hardware limitations with large SPI flash devices
  • Managed biweekly sprints, tracked open issues, and held one-on-one meetings with teammates
Lead Firmware Engineer, 6SensorLabs, San Francisco, CA 2015
  • Developed firmware and signal processing algorithms for a portable food allergen detector utilizing a linear image sensor, miniature DC motors, and BLE connectivity
    • Implemented and optimized image capture code used to generate clocks and read data at hundreds of frames per second
    • Architected a security protocol on top of BLE to enable encrypted and authenticated communication between device and server via a mobile application
    • Designed an event-driven peripheral architecture utilizing callbacks for zero polling and minimal coupling between layers
    • Created a mathematical model for the composite imaging system (aperture, sensor, amplifiers, etc.) and subsequently developed a multi-stage image processing algorithm used to detect faint lines in the presence of shifting background gradients and optical imperfections. Wrote a GUI program to visualize results in real time
  • Assisted with hardware design and evaluation through several board revisions

Lead Firmware Engineer, Bia, San Francisco, CA 2013 - 2015
  • Responsible for all firmware for a two-piece multisport GPS device with GSM and ANT connectivity, currently shipping with thousands of units in the field. Key member of a small and highly skilled team developing a unique product with numerous technical challenges and opportunities
    • Designed and implemented a robust OTA upgrade procedure enabling both devices to update firmware via GSM / ANT
    • Wrote efficient code with excellent power management of peripherals (ANT, display, touchscreen, accelerometer) to support an 18-24 month watch battery life on a coin cell equivalent
    • Implemented an AT command interface supporting multiple virtual channels (3GPP 27.010), automatic retries, and asynchronous operation
    • Developed a custom GPS path decimation algorithm to minimize noise and reduce storage space by 5-10x
  • Designed a regulator isolation circuit to greatly reduce average quiescent current
  • Worked directly with the CEO and product manager to specify new features and plan releases
Embedded Software Engineer, Atieva, Redwood City, CA 2012 - 2013
  • Wrote and supported embedded software powering large-format battery systems used in hybrid and electric cars and busses. Member of a small and fast-paced team, personally specializing in low-level drivers, RTOS, HAL, bootloaders, etc. Exposure to Freescale HCS12 and HCS08, Infineon Tricore, and Freescale Kinetis (ARM) processors
    • Architected and implemented a complete set of drivers (CAN, SPI, ADC, RTC, flash, etc.) for the next-generation battery management system. Thoroughly documented code using Doxygen
    • Modified FreeRTOS to support multiple interrupt priorities above and below the operating system kernel priority
    • Authored bootloaders and accompanying C++ desktop applications for firmware upgrades on all new boards. Designed and added a unified versioning scheme to all products and tools
    • Assisted in migrating a large application code base to a new processor
  • Worked closely with the hardware team, often suggesting improvements and bug fixes for new and existing boards
  • Reviewed resumes and coding exercises. Conducted interviews via telephone and in person
Electrical Engineer, Q-Track, Huntsville, AL 2011 - 2012
  • Managed firmware for eight products used for low-frequency indoor RTLS. Wrote, tested, and maintained code for PIC18, PIC24F, and ATmega microcontrollers
    • Implemented a beaconing system for 802.15.4 radio communication to significantly increase battery life
    • Wrote USB, serial, and 802.15.4 bootloaders to support future updates in the field
    • Designed and coded three products from scratch, including a hand-held tracking tag with a 3.5in LCD touchscreen, wireless connectivity, and board-to-board communication
  • Authored C++ applications for programming, testing, and calibrating receivers, saving hours of work per unit
  • Designed and implemented a next-generation direct-conversion receiver, including analog front-end, DSP algorithms and FPGA realization (Spartan 6 and Cyclone III devices), embedded software, and prototype evaluation
  • Wrote documentation such as quick-start guides and test procedures for customers and contract manufacturers
Electrical Engineering Intern, Q-Track, Huntsville, AL Summers 2008 - 2010
  • Aided in hardware bringup and optimization for an RTLS tracking tag
  • Wrote code to enable accelerometer and speaker functionality
  • Used lab equipment such as multimeters and network analyzers to evaluate design modifications
  • Created a web-based timekeeping application in PHP which is still in use
Graduate Teaching Assistant, Georgia Institute of Technology, Atlanta, GA 2010 - 2011
  • Responsible for two sets of 20 students in the Digital Design Lab (Altera FPGAs and discrete logic)
  • Provided individual technical writing consultations for all students on several assignments
  • Evaluated lab reports, technical papers, presentations, and final projects
Lead Undergraduate Teaching Assistant, Georgia Institute of Technology, Atlanta, GA 2009 - 2010
  • Answered technical questions and verified student work in the Digital Design Lab
  • Debugged issues with FPGA boards, logic analyzers, oscilloscopes, discrete logic circuits, and the Quartus II IDE
  • Completed the team-oriented final project each semester to better assist students and for personal experience

Education

Georgia Institute of Technology, Atlanta, GA 2007 - 2011
  • Master of Science, Electrical and Computer Engineering (2011)
  • Bachelor of Science, Electrical Engineering (2010)
  • GPA: 4.0 / 4.0. Member of Eta Kappa Nu, the ECE honor society
Missouri Academy of Science, Mathematics, and Computing, Maryville, MO 2005 - 2007
  • Full-time college classes on full scholarship during junior and senior years of high school
  • Associate of Science (2007)
  • GPA: 3.9 / 4.0. Received one of two awards for academic excellence at graduation. Community leader during 2nd year

Selected Independent Projects

Wireless light dimmer
  • Designed and fabricated a custom PCB to fit inside electrical junction boxes
  • Employed a TRIAC circuit with ADC-based line synchronization, controlled via 802.15.4 radio
Audio spectrogram with VGA output (FPGA)
  • Wrote VHDL to perform FFTs from scratch. Created ADC input and VGA driver modules
Microcontroller webserver
  • Implemented a basic, custom TCP stack. Read files from an SD card using FAT32
Mandelbrot set plotter (FPGA)
  • Designed parallel hardware capable of rendering a 1680x1050 Mandelbrot image in 150ms
SD card audio player
  • Enhanced a PIC18 microcontroller with external logic (shift registers, etc.) to enable 16-bit output at 24kHz
  • Used a graphic LCD and pushbuttons for a simple file selection interface

Personal

  • INTJ personality, but with an entrepreneurial spirit and desire to lead
  • Avid trombone player, top-chair member of marching, concert, and jazz bands through college
  • Interested in instrumental music, FPS and RTS computer games, and craft beer
  • Passionate about embedded systems and new technologies. Owner of a home electronics lab with scope, soldering/rework tools, etc.