Detail oriented, team focused, Embedded Software Engineer available for embedded software development opportunities.  Contact for details.

Technical expertise resides in designing and developing low level C/C++ embedded programs using real-time programming techniques for embedded applications and device drivers implementing a low maintenance structure for efficient product support throughout the entire development lifecycle, from requirements to test to post-deployment field support.

Additional competencies, beyond developing embedded firmware, include the development of PC-interface software for embedded systems using the C# programming language and low-level embedded debugging techniques.

Previous work focused on the development of firmware for USB, CAN, SPI, RS-232, RS-485, and ADC/DAC drivers, as well as implementing low-power embedded solutions across a broad range of embedded platform families, shown to the right.

Employment Experience

Rain Bird Corporation

Rain Bird Corporation

Black Diamond Networks

Senior Firmware Engineer

Tucson, Arizona

October 2017 to December 2017

  • Worked with existing team to identify and fix bugs in firmware for ST Microelectronics STM32L4xx series ARM® Cortex® M4 processor for Rain Bird’s next generation irrigation control system for residential and light commercial customer sites.
  • Integrated product firmware for use with new custom LCD user interface by updating LCD driver segment map.
  • Assisted in debugging of embedded C++ code base using IAR Embedded Workbench, I-jet Trace and ST-Link JTAG debuggers, and Perforce (PV4) version control management tool.



Imperial Staffing

Embedded Software Engineer

Cary, North Carolina

October 2016 to September 2017

  •  Developed drivers for next generation hospital bed using ST Microelectronics’ STM32F4xx series ARM Cortex-M4 based 32-bit microcontroller with winIDEA IDE and iSYSTEM (“blue-box”) JTAG debugging interface.
  • Completed rewrite of power supply driver monitoring various voltage, current, and temperature sensors to take appropriate time-based action when fault conditions presented and cleared. Utilized multiple state machines for sensor monitoring and response handling.
  • Enhanced modular SPI driver to utilize peripheral loopback paths to help ensure bi-directional message integrity.
  • Updated ADC driver to detect sensor faults by monitoring for voltage drift created by a weak burnout current when a sensor lines become open or shorted.
  • Added updates to QT diagnostic tool to support PC interface to new and existing features.
  • Worked closely with hardware design counterparts and test engineers in cross-functional, geographically distributed team using Agile methodology to meet product design and launch targets.
  • Supported system level integration efforts for new product with deep technical knowledge and hand-on low-level debugging of issues raised.



Triple Crown Consulting

Embedded Software Engineer

Sterling, Virginia

August 2016 to September 2016

  • Created a feature module, utilizing embedded C++ and object-oriented programming (OOP) techniques, to develope a feature module to enable machine-to-machine (M2M) communication between ORBCOMM’s PT 7000 product, a ruggedized wireless—cellular or dual-mode—construction equipment tracking and monitoring device, and an industrial belt scale by parsing human readable ASCII data transacted on a SCI/UART over RS-232 single ended communication bus.



Cyient until September 2015 then Direct

Software Developer

Mossville, Illinois

January 2015 to August 2016

  • Developed APIs using ANSI C and CVI for MMOS displays in support of tools for Caterpillar’s automated quality assurance initiative including: data logging and signal analysis of discrete analog signal by interfacing with a DAQmx PXI from National Instruments (NI) and Cat DataLink (CDL) packet analysis from information contained in SuperLink capture file.
  • Lead team efforts for improving Git usage, repository organization, and overall general understanding of Git.
  • Spearheading effort to improve exception and error handling during code development.
  • Authored and updated documents for new and existing processes.

Milwaukee Homes Now

Milwaukee Homes Now


Owner / Manager

Milwaukee, Wisconsin

April 2013 to December 2014

  • Founded real estate investing company focusing on improving distressed single family homes in the Milwaukee area.
  • Interviewed and hired office assistant and building contractor.
  • Purchased, renovated, and sold (flipped) single family home on Milwaukee’s North side.

Applus Technologies

Applus Technologies


Firmware Engineer

Sussex, Wisconsin

October 2012 to April 2013

  • Developed USB driver using Freescale’s USB stack and MCF51JM128 ColdFire V1 microcontroller utilizing the chip’s integrated USB peripheral for a Full Speed implementation of the USB 2.0 standard.
  • Modified existing code base to integrate new USB driver into OBD scanner firmware.
  • Updated ELF linker command files, so that USB driver would reside in segregated portion of program memory, to be used by both boot code and main code.
  • Implemented a USB vector table, so that USB driver and stack would be accessible to both boot and main code.

Johnson Controls

Johnson Controls

Column Engineering

Senior Software Engineer

Milwaukee, Wisconsin

August 2010 to September 2012

  • Developed SPI and serial Flash drivers to be used on new JCI rooftop controller board. The SPI bus was used to bridge communications between a Renesas RX63N 32-bit microcontroller and Micron M25P series serial Flash chip. These drivers were integrated into the low-level strategy functions of an fsys file system.
  • Implemented fsys file system on Rowebots Unison RTOS.
  • Wrote firmware based on TI Z-Stack embedded OS for USB-to-ZigBee network adapter replacing an obsolete product. Based on Texas Instruments’ Chipcon CC2530/CC2591 chipset solution, the adapter allows field technicians to wirelessly connect to deployed JCI Metasys wireless building management system.
  • Developed C++ middleware to allow existing PC diagnostic applications to connect to the new wireless adapter with only minimal changes to those applications. I added a DLL selection algorithms, written in both C++ and C#, to accommodate existing applications by using the WMI to dynamically scan for and load the proper DLLs at runtime to interact with whichever wireless adapter was found physically present on the system.
  • Integrated serial boot loader into new firmware image to be used for future automated firmware updates.
  • Refactored an existing C# build tool for automated generation of XML files used to configure product communication objects, prior to builds. This refactored tool would interrogate the Access database by making complex SQL queries.
  • Responsible for overseeing the daily activities of an intern, preparing work assignments and reviewing completed work.
  • Collaborated to develop new processes for assigning USB product IDs to new products and validating new Windows drivers with Microsoft.
  • Interfaced with overseas third-party hardware OEM regarding updates to their design and provided detailed documentation for programming branded USB device information and production firmware, as well as how to use the custom firmware in their end of line hardware validation testing.
  • Delivered detailed design documentation for firmware and PC software deliverables of the USB-to-ZigBee network adapter.

Generac Power Systems

Generac Power Systems


Software Engineer

Waukesha, Wisconsin

August 2009 to August 2010

  • Developed CAN bus driver for networking generator controllers and human interface devices for generators targeted at the commercial and industrial markets. The CAN bus driver handles all low-level data exchange between nodes providing a means of constantly maintaining vital inter-node data for rapid access by the application-level firmware, critical for maintaining safe and predicable operation of the generator. Efficient team working and communication skills were necessary for the successful system integration of this driver across multiple products.
  • Completed rewrite of a C language boot-loader supporting RS-232 and CAN communications interfaces improving stability and reliability of the boot application while at the same time reducing its overall code size by eliminating redundant, unnecessary, and/or dead code, as well as re-implementing over-used lengthy macros as functions. This involved updating the linker script file to limit the boot-loader application and its startup code to the PIC32 microcontroller’s Boot Flash. The respective C# PC firmware loader tool was updated and largely re-written to improve its stability and reliability, while at the same time adding user-controls and reducing programming time by about 75%.
  • Designed, developed, tested (unit, bench, & system), and deployed UL certified, reusable I2T algorithm module. This new module allowed for varied use, so that the user could decide the trade-off of execution time versus output resolution. It was deployed on both legacy and new systems reducing code size in the older and existing units by 10KB.
  • Updated existing, designed new, and implemented test firmware for use in production end-of-line testing for multiple product lines. Loop-back and “intelligent” test fixture design approaches were used depending on the product. The test firmware was integrated into the application, so as to avoid reprogramming the product after testing.
  • Developed PC tools (Visual C++, Win32 Console, and C#) to support loading firmware images via a boot loader, generate 32-bit CRC values for firmware images formatted as Intel-HEX, and debug Modbus and CAN communication interfaces.
  • Wrote and maintained technical documentation supporting software I developed: User’s Guide and Quick Start Guide for PC firmware loader and test procedures for use by production personnel.

LS Research

LS Research


Software Engineer

Cedarburg, Wisconsin

September 2007 to July 2009

  • Developed MSP430 firmware and digital circuitry for wireless version of the Christmas Tree Safety System. It was designed to alert those in the home in the event of a Christmas tree catching fire.
  • Developed MC1321x/HCS08 firmware for a wireless remote control for a portable radio designed for use in military applications.
  • Evaluated use of Chipcon CC2431 location engine for use in high-resolution location applications.
  • Developed CC2430 firmware for RS-485 to ZigBee adapter module for industrial thermostats. The modules made use of the TI Z-Stack and were designed to allow the client to retrofit their existing RS-485 thermostat networks with wireless capability.
  • Added error-handling use cases for CAN bus application firmware using the AT90CAN. The system was developed for use in industrial/construction equipment, which employed RFID to read a nearby key-fob, to secure starting of the vehicle only with pre-authorized keys.
  • Developed theoretical battery analyses based on datasheet electrical characterizations and suggested means of improving designs.
  • Researched available technologies and tendered recommendations for turnkey solutions.

Astronautics Corporation of America

Astronautics Corporation of America

National Software Associates

Software Verification Engineer

Milwaukee, Wisconsin

July 2006 to September 2007

  • Responsible for ownership of a team, as “team leader” for coordination overseas communication for software verification efforts.
  • Served diligently as a team leader by coordinating the international communication and verification efforts to produce DO-178B Level C certified software for the Boeing 777 and 787 Electronic Flight Bags.
  • Collaborated with team in Russia to successfully duplicate their Linux software build and test processes on native hardware. This was accomplished by reverse engineering of some of the software.
  • Conducted code and documentation audits and reviews. During which, I was recognized for my high level of quality and detailed observation.

Texas Instruments

Texas Instruments


Associate Applications Engineer

Dallas, Texas

April 2004 to June 2006

  • Interfaced with TI customers to provide hardware and software solutions by coding and debugging assembly and C for applications utilizing the ultra-low-power MSP430 and ARM7-based TMS470 micro-controllers.
  • Trained TI staff on TMS470 and the Eclipse-based Code Composer Essentials.
  • Mentored peers in gaining expertise on MSP430.
  • Drove the development and publication of new internal processes for efficient communication between TI businesses.


DeVry University

DeVry University

Graduated: October 2003

Bachelor of Science in Computer Engineering Technology (BSCET)

Irving, Texas

Senior Project:

Awarded Outstanding Senior Project Award (1st place)

Dynamic encryption algorithm utilizing C/C++ DLLs interfaced to a wizard written using Microsoft Visual Studio 6.0 C++.

Dean’s List:

Digital Circuits, Digital Systems, Data Structures and Algorithms, Embedded Microcontroller Systems, Data Communications and Networking

Microchip PC32MX

PIC32MX family combines 32-bit performance with a large memory configuration and rich integrated peripheral set at a low cost to address embedded application space ranging from simple general purpose embedded control to more advanced Audio, Connectivity and Graphical...

Intel 80×86 (8086)

The 8086 is a 16-bit microprocessor chip designed by Intel between early 1976 and mid-1978, when it was released. The Intel 8088, released in 1979, is a slightly modified chip with an external 8-bit data bus (allowing the use of cheaper and fewer supporting ICs), and...

ST Micro STM32F4

The ARM® Cortex®-M4-based STM32F4 MCU series leverages ST’s NVM technology and ART Accelerator™ to reach the industry’s highest benchmark scores for Cortex-M-based microcontrollers with up to 225 DMIPS/608 CoreMark executing from Flash memory at up to 180 MHz...

Intel MCS-51 (8051)

The Intel MCS-51 (commonly termed 8051) is an internally Harvard architecture, complex instruction set computer (CISC) instruction set, single chip microcontroller (µC) series developed by Intel in 1980 for use in embedded systems. Intel's original versions were...

Renesas RX63N, RX631

The RX63N/RX631 Group incorporates communication functions suitable for networking equipment, such as Ethernet controller, USB 2.0 full-speed (function, host, or OTG selectable), and CAN. In addition, with a RTC (Real-Time Clock) that can operate on a dedicated power...

Texas Instruments TMS470

Building upon the success of TI's strong MCU history of products such as the TMS7000, TMS370 and PRISM TMS370C8/C16 families, the TMS470 family of microcontrollers was launched in 1995. The TMS470 family of microcontrollers, derived from the 16/32-bit ARM7TDMI®...

Freescale-NXP MCF51JM/HCS08

The MCF51JM family is part of the Freescale Flexis™ microcontroller series, the connection point on the Freescale Controller Continuum where 8-bit and 32-bit compatibility becomes a reality. The Flexis series of devices includes complementary families of 8-bit S08 and...

Texas Instruments MSP430

The MSP430 is a mixed-signal microcontroller family from Texas Instruments. Built around a 16-bit CPU, the MSP430 is designed for low cost and, specifically, low power consumption embedded applications. The MSP430 can be used for low powered embedded devices. The...

ST Micro STM32L4

ST has built a new architecture to reach best-in-class ultra-low-power figures thanks to its high flexibility. STM32L4 MCUs have scored 253 in the standardized EEMBC™ ULPBench®tests that compare the efficiency of ultra-low-power microcontrollers. Moreover, the STM32L4...

Skills Summary

  • C
  • C++
  • Bare metal
  • C#
  • Fixed point math
  • Git
  • Assembly
  • RTOS
  • CAN
  • RS-485
  • RS-232
  • UART
  • USB
  • JTAG
  • Boot loaders
  • Stacks
  • ADC
  • DAC
  • OOP
  • Digital Design
  • Oscilloscope
  • Digital multimeter
  • Function generator
  • Bench supply
  • Signal analyzer
  • Spectrum analyzer
  • Visual studio
  • Version control
  • Microsoft Office

Pin It on Pinterest

Share This