SENIOR SOFTWARE ENGINEER
SUMMARY
PC and Embedded Software Development Windows Kernel Mode Drivers Product Testing
Innovative and passionate software development leader brings embedded, real-time expertise architecting mobile, hand-held and Windows-based applications. Supportive and motivating mentor builds productive development teams that employ object-oriented design concepts throughout the development lifecycle. Accountable team player facilitates architecture decisions, collaborates with development teams and delivers on-time solutions that solve business problems and improve end user experiences.
C, C++, C# and .NET Languages Object Oriented Design and Development: UML and Design Patterns
UEFI and WinDbg Test Plan Design User Interface Design Software/Hardware Interfaces TCP/IP Sockets
Requirements Analysis Code Review Detailed Documentation Agile and Waterfall Methodologies
PROFESSIONAL EXPERIENCE
Rockwell Automation, Mayfield Heights, Ohio
Embeded Firmware Engineer, Senior (08/2015 – Present)
Designed, coded, and tested a diagnostic scheduler template class for Rockwell Automation’s Analog I/O product line real-time diagnostics. The scheduler was implemented on a bare metal ARM and Blackfin DSP MCU based systems. The scheduler was written in C++ and integrated successfully with current existing ARM diagnostics.
Designed, coded, and tested real-time diagnostics for the Blackfin DSP MCUs. The diagnostic tests included:
An instruction RAM diagnostic implemented by reading instruction RAM data via DMA. Due to the Harvard Architecture MCU, instruction RAM data was not directly addressable. The insturciton RAM diagnostic was written in C++.
An instruction set diagnostic written in assembly language.
RAM diagnostics written in assembly language.
Register diagnostics written in assembly language.
Watchdog timer diagnostics
Designed, coded and tested Python scripts to do fault insertion testing for the real-time diagnostics. The scripts modified source files in order to guarantee code coverage for testing error paths that are taken when a test failure occurs. The scripts automatically checked out source files from source control (ClearCase), modified the files, created a product build for testing, and then unchecked out the source files.
Designed, coded and test a low pass filter set of class for filtering analog to digital converted data. The classes are implemented on a variety of functional MCUs. The filter classes can be instantiated using floating point or fixed point numeric formats. The classes provided the flexibility to instantiate objects for a range of corner frequencies and sampling periods. Also implemented an accurate and fast algorithm for implementing the Tustin approximation for Z in fixed point calculations.
Designed, coded, and tested a watchdog timer interface for an ARM MCU based system.
Designed, coded and tested a driver for the Analog Devices AD7124 Analog to Digital Converter.
Designed, coded and tested various diagnostics for Rockwell Automation’s Analog I/O Functional Safety Product Line
Wrote detailed documents for the code I implemented and actively used version control (ClearCase).
Agile development process was extensively used for project management and project tracking.
Microsoft (via iSoftStone), Bellevue, Washington
Senior Software Engineer, MS Auto (10/2013 – 7/2015)
Sucessfully resolved defects with the Microsoft’s real-time operating system, Windows CE, kernel mode Bluetooth stack that is implemented on Microsoft’s Auto Infotainment Product Software. Acknowledged as the leader among the project software development engineers in reliabily diagnosing and resolving defects including fixing kernel mode software written in C and C++.
Tackled learning new processes and technology in an expedited manner. Included with these are Microsoft’s development processes, Microsoft development tools, Microsoft project maintenance tools, Bluetooth design and functionality, as well as Windows CE design and functionality.
Developed a command line application to filter debug spew messages in C++. The purpose was to examine messages pertaining only to Bluetooth stack issues. Developed automated unit tests for the application.
Prepared Code Reviews for my fixes to C/C++ source code, ported bug fixes for one product build to other product builds periodically, and helped in diagnosing product build issues.
Intel Corporation (via Randstad Technologies), Bellevue, Washington
Software Engineer, Platform Software and Solutions (4/2012 – 10/2013)
Diagnose and fix issues with Windows kernel mode drivers and OS interfaces using C, Python and C#
Built tests and tested functionality of ePAC tablet’s kernel driver validation feature
Tested the stability of the BayTrail system-on-chip (SoC) with Windows 8.1
Ran tests and reported results to obtain Microsoft certification of kernel mode driver operation for Wi-Fi, audio, graphics, I2C bus, camera and GPIO
Supported CloverTrail chip team to triage Windows Quality Online Services (Winqual) outstanding issues related to the Unified Extensible Firmware Interface (UEFI)
Developed a tool for the CloverTrail project that validated driver drops to Microsoft, modified Python scripts to fix initial defects and migrated scripts to C#; tool verified PDB files, checked for duplicate driver files and used common language runtime (CLR) to run BinScope binary analyzer and SymChk
TransCore LP, Albuquerque, New Mexico
Senior Software Engineer, Amtech Technology Center (2/2001 – 1/2012)
Served as Windows software development expert; created user and software interfaces to E5/E6 RFID toll tag readers with C and C++ within a VxWorks environment for a toll-collection system design firm
Developed tag reader user interface with Win32, enabling real-time collection of vehicle information by hardware engineers, testers, factory production teams, field service staff and customers; readers interfaced with host systems via TCP, UDP (sockets via Winsock) and RS-232 connections.
Designed firmware enhancements to tag reader systems with embedded, real-time requirements
Completed object-oriented design and development of an engineering host system to test the transportation tag product line
Supported legacy software that interfaced to tag reader hardware with a PCI bus interface; maintained tag reader’s Windows driver
Wrote an interface that used SQL queries to extract data from a Visual Basic database and connected to engineering host software
Managed and trained a junior software development engineer
Recognized at plant-wide meeting for implementing a fix for errors in toll tags issued to the Florida Department of Transportation and facilitating millions in sales revenue
ITQ Lata, LLC, Albuquerque, New Mexico
Software Engineer and Consultant (5/2000 – 2//2001)
Provided assembly language development of a Samsung 8475 8-bit microcontroller-based embedded application, a base unit for landline and cell phone docking that integrated cell phone operations for mobile phone manufacturers
Developed system’s control program, interrupt service routines and a bit banger; bit banger used timer event controllers to implement 4,800-baud RS-232 communications via I/O ports
Wrote control software for UART chip to communicate with the cell phone; software to service interrupts, manages on-chip resources, and provides timing and control
Designed and developed real-time embedded firmware to communicate with remote wireless-based systems, including email, data acquisition and credit card information processing programs
FlightSafety International Inc. (via ATSIM), Broken Arrow, Oklahoma
Software Development Engineer, Cockpit Simulations (6/1998 – 4/2000)
Designed and developed Honeywell’s Flight Management System software with Ada within VxWorks
Completed object-oriented design and development of a real-time aircraft simulation component for a military training system, including a rate monotonic scheduler, record and playback capabilities
Contributed to board support configuration for the VxWorks kernel and utilized Tornado tools, such as WindView, target server, and RTI StethoScope
Reviewed designs and evaluated systems issues, including real-time operating system feasibility; utilized UML including use cases
Honeywell Defense Avionics Facility (via TAD Resources and Manpower), Albuquerque, New Mexico
Software Development Engineer, Defense Avionics (10/1995 – 6/1998)
Employed object-oriented design to develop a mission-planning ground station using Windows, Win32, Object Windows Libraries (OWL) and C++ while mentoring software engineering team
Designed ballistic database for cargo plane parachute deployments with real-time navigational task functionality, in-flight performance watching and control capabilities, and drivers for 1553 devices
Resurrected languishing software development project, garnering $750,000 in contracted payments
Designed and developed portions of the Flight Management System software utilizing Ada
Redesigned a DOS application with Windows technology; coded and tested application, then served as software team consultant on design, coding, testing and functional issues
EDUCATION
Bachelor of Science, Computer Engineering – Case-Western Reserve University, Cleveland, Ohio
TECHNOLOGY
Programming Languages: C, C++, C#, Assembly Language, Ada and Python
Microcontrollers: ARM MCUs, Blackfin DSPs, Motorola 6903 and NEC 7503 Microprocessors: Intel 80386 series
Embedded Development Tools: In-circuit emulators, logic analyzers and oscilloscopes
Software Development Tools: Embarcadero C++ Builder, Visual Studio, G++, IAR, RealView, Analog Devices, GDB, Git, ClearCase and Visual Source Save, WinDbg and Object Teams
System on Chips (SoC): Intel Clover Trail and Bay Trail
Operating Systems: Windows, VxWorks, pSOS, OS-9, ThreadX, Linux and UNIX BIOS: UEFI and ACPI