
Embedded Programmer at Productive Data Solutions, Inc.
Greater Minneapolis-St. Paul Area

Embedded Programmer at Productive Data Solutions, Inc.
Greater Minneapolis-St. Paul Area
Embedded software engineer, working closely with electronic hardware and contributing to a team effort in all phases of electronic system or subsystem development, from requirements specification through maintenance.
My goal is to use my experience and problem-solving insight to consistently deliver a quality product.
Professional Experience:
22 years of experience in embedded systems product design, development, and test. Consistently reliable and robust real-time embedded software and firmware for instrumentation, communications and control applications.
Microprocessors, microcontrollers, and assembly language programming:
• 8-bit processors:
> 4 years using Motorola 6800, 68HC05, and 68HC11
> 8 years using Zilog Z80 and Z180
• 16-bit processors:
> 5 years using Intel 80C196 and 80296SA
> 1 year using Renesas M16C/60
• 32-bit processors:
> 2 years using Freescale ColdFire MCF5213, MCF5235, and MCF5282
High level language (HLL) programming:
• C (3 years), C++, Visual Basic, Pascal, and PL/M
Software development:
• Reverse engineering of undocumented systems and software
• Digital filters and PID control using fixed-point arithmetic
• TCP/IP, CAN, synchronous serial, and asynchronous serial communication protocols
• Input/output using drivers and prioritized interrupt service routines (ISR)
• Real-time operating systems:
> Foreground/background; proprietary cooperative multitasking kernel; QNX RTOS
Software documentation:
• Module-level and function-level comments for both HLL and assembly language
• Line-by-line comments for assembly language
• If no revision control system is available, record change history using comments in module headers
• Reverse-engineer legacy software
• PID control of real-time systems
• RTOS: Foreground/background; proprietary cooperative multitasking kernel; QNX
• HLL programming: C, C++
• Assembly language programming
• Analog and digital schematics
• Real-time debug with oscilloscope, analyzer, or HLL debugger
• Analyze and model with Microsoft Excel
• Document with Microsoft Word and Visio
(Staffing and Recruiting industry)
May 2010 — Present (3 months)
Traffic Enforcement: Under contract to American Traffic Solutions in Scottsdale, Arizona, developed firmware in C and C++ to detect, classify, and report illegal vehicle movements at traffic intersections in real time. Software tools included GCC, GDB, the μC/OS RTOS, the Subversion version control system, and the NetBurner Eclipse IDE. The build target was a Freescale ColdFire MCF5282 microcontroller on a NetBurner MOD5282 module.
(Sole Proprietorship; Computer Software industry)
June 2009 — May 2010 (1 year )
Marketing, contracting, and improving my embedded software engineering skills:
• Evaluated Freescale's new Eclipse-based CodeWarrior Development Studio for embedded systems development. I designed, coded, and debugged experimental C++ programs using a Freescale ColdFire MCF51QE / MC9S08QE evaluation board.
• Determined the feasibility of reverse engineering and retargeting a legacy embedded system. I determined that project's structure, sequence, and deliverables, then estimated its man-hours and overall duration.
Volunteer services for my church:
• On short notice, quickly developed a simple relational database in Microsoft Excel 2003 for an upcoming auction. I designed the database as a workbook containing three datasheets for auction items, bidders, and bids. I entered the bidders and bids as the auction progressed, and then printed bidder invoices and donor invoices.
(Sole Proprietorship; Computer Software industry)
December 2007 — June 2009 (1 year 7 months)
Studied and practiced short-term and day trading strategies for making profits in the US equities market. Analyzed price trends using candlestick charts, trend lines, and technical indicators. Performed 2700 trades.
(Sole Proprietorship; Computer Software industry)
August 2008 — October 2008 (3 months)
Updated the bootstrap software for the Motorola 68HC11-based engine control units manufactured by Zenith Fuel Systems. I changed the assembly code to be compatible with newer flash memory chips, since the chips in the original design had reached end-of-life and were no longer available.
(Public Company; CMI; Electrical/Electronic Manufacturing industry)
January 2006 — October 2007 (1 year 10 months)
Developed firmware in C for new gasoline- and diesel-powered electrical generators.
Large Diesel Generators: Led the embedded software development for a family of 10 militarized AC generators, from 5 kW to 60 kW at 60 Hz or 400 Hz. A prototype based on the Motorola 68332 had already been constructed; our team was to construct the production model using the Freescale ColdFire MCF5235. I reviewed the prototype's hardware and software design, and the production model's hardware design. Project work was paused while awaiting a government contract award, and I was assigned to the following project in the meantime.
Small Gasoline Generator: Developed the inverter section of the embedded software for a small commercial AC generator. A variable-speed engine drove an alternator which produced variable-frequency AC. The AC was rectified to DC, and my software then used pulse width modulation to produce a 60 Hz AC output. The challenge was to achieve acceptable THD under all load conditions. Hardware engineers provided me with process control designs and a platform based on the Freescale ColdFire MCF5213. I determined how to best implement the control designs, specified the best crystal frequency for the microcontroller's clock, and designed and coded the firmware in C. For test, I configured a Lauterbach TRACE32-ICD in-circuit debugger to help the team tune the control algorithms. The debugger displayed real-time graphs of various stages in the development of the output voltage waveform, and enabled interactive adjustment of the control parameters.
(Electrical/Electronic Manufacturing industry)
May 2002 — July 2005 (3 years 3 months)
Developed and maintained software and firmware for the company’s product line of custom engine control units meeting the 2004 EPA emissions requirements for gasoline and LPG spark-ignited internal combustion engines.
Sensors: Missing-tooth decoding. Digital filtering of MAP and oxygen sensors. RPM and MPH calculation from tach signals or flywheel teeth. Engine shutdown or alert on out-of-range conditions.
Actuators: Precise fuel injector timing and pulse-width control. PWM vacuum trim valve control. Spark advance and dwell control. PWM throttle control to achieve constant RPM or to limit vehicle ground speed under a wide range of loads.
Communications: RS-232 and SAE J1939 (CAN).
Control: Air/fuel ratio control in response to sensor inputs and table values. PID control of throttle.
Development: Reverse-engineered existing uncommented code in C and 68HC11 assembly. Documented, repaired and enhanced its function. Added new modules to improve performance or to meet customer requirements. Created a Visual Basic application to speed ECU programming.
Test: Tested firmware using PC monitor or oscilloscope on bench, engine test stand, or customer facility. Validated new ECU hardware under extremes of heat and voltage.
Patent: Co-inventor on a patent application for vehicle ground speed control.
(Public Company; CSCO; Computer Networking industry)
May 2000 — November 2000 (7 months)
Maintained C code for the Gigabit Ethernet family of line cards for the Cisco GSR 12000 family of routers.
Analyzed and resolved software problems. Thoroughly documented the problems and their solutions.
Configured several IP networks within my own test bed of three Cisco GSR 12008 routers. Used those networks for learning, problem determination, debugging, and test.
(Public Company; AME; Aviation & Aerospace industry)
September 1994 — September 1999 (5 years 1 month)
Responsible for design, development, release and maintenance of all embedded software for the Chatillon product line of force measurement instruments and material test stands.
Diagnosed, documented and solved more than 100 hardware and software problems across the entire Chatillon product line.
Reverse-engineered existing uncommented code. Documented it to meet FDA GMP requirements for Class II medical devices. Repaired and enhanced its function.
Researched and recommended leading-edge hardware and software technology to prototype and produce new products.
Designed new products. Created detailed specifications containing system block diagrams, keypad and display actions, menu trees, data flow diagrams, and communication protocols.
Coordinated the work of assistant programmers. Provided tools to them and merged their C or PL/M code with mine to create new software versions.
Exploited the processor architecture in one product to increase its performance four-fold.
(Information Services industry)
July 1994 — September 1994 (3 months)
Edited and proofread document images into machine-readable text using Sun OpenWindows workstations.
(Educational Institution; Higher Education industry)
March 1994 — June 1994 (4 months)
Secretary on contract for three departments: Music, Humanities, and Business. Recorded student data and prepared reports using WordPerfect 5.1 and dBase IV. Produced, recorded, and tracked messages and correspondence for student records, student recruiting, and federally-funded arts projects using WordPerfect 5.1 and InfoSelect.
(Utilities industry)
November 1993 — December 1993 (2 months)
At CP&L's Harris Plant, prepared lectures and examinations for nuclear reactor operators, including tables and equations, using WordPerfect 5.1, WordPerfect for Windows 5.2, and ABC Flowchart.
(Educational Institution; Higher Education industry)
August 1993 — September 1993 (2 months)
Secretary on contract for the chairperson of the Dvision of Business. Recorded student data and prepared reports using WordPerfect 5.1 and dBase IV. Produced, recorded, and tracked messages and correspondence for student records and student recruiting.
(Electrical/Electronic Manufacturing industry)
December 1992 — May 1993 (6 months)
As the software half of a two-man startup firm, selected optimal hardware and software technologies and then created embedded systems to meet client requirements.
Developed a Motorola 68HC05-based sensor to read electric utility meters.
(Public Company; IBM; Information Technology and Services industry)
August 1989 — October 1992 (3 years 3 months)
Developed and tested mainframe communications software. Provided customer support and maintenance for OS/2 Communications Manager software.
(Information Technology and Services industry)
May 1986 — August 1989 (3 years 4 months)
Recommended and developed computer system solutions for government and private industry contracts.
Developed an interactive graphical PC- and PLC-based climate control system for a local manufacturing plant, using Pascal and ladder logic.
(Electrical/Electronic Manufacturing industry)
April 1984 — March 1986 (2 years )
Developed and tested systems and subsystems for the company's line of radio paging controllers.
Reverse-engineered existing uncommented Z80 assembly code. Documented, repaired, and enhanced its function by using UNIX and CP/M development systems.
Developed a multitasking executive in C, and used it as the foundation for a new Z80 subsystem capable of supporting up to four RS-232 terminals simultaneously.
Quickly developed multitasking real-time software in C under QNX for a PC-based page forwarding terminal.
(Electrical/Electronic Manufacturing industry)
January 1979 — March 1984 (5 years 3 months)
As the sole programmer in a small startup firm, developed all embedded software for the company's product line of multimedia real-time control systems for theme parks, museums and planetariums.
Developed a successful prototype using Z80 assembly language to meet code size and speed constraints.
Enhanced the prototype by adding customer-requested features, including a file editor, disk operating system, and synchronization to time tracks encoded on audiotape. The resulting systems contained nearly 20,000 lines of heavily commented code and were still in worldwide use ten years later
(Public Company; NCR; Information Technology and Services industry)
January 1977 — January 1979 (2 years 1 month)
Developed and maintained microcode for the NCR Criterion mainframe systems to control instruction execution and virtual memory access.
I prepared and presented a lecture series for visiting clients that detailed the virtual memory architecture of the NCR Criterion series of mainframes. My manager received a letter from the clients commending my teaching performance.
(Electrical/Electronic Manufacturing industry)
May 1978 — October 1978 (6 months)
As the sole programmer in a small startup firm, developed all embedded software for prototypes of new signal averaging instruments.
* Worked with the project leader to design a pipelined multiprocessor architecture to sample and process EEG signals at rates of up to 10 kHz. The system used banked memory to pass data between inexpensive 8-bit microprocessors
* Developed and tested the signal averaging software for that system. The software included extensive system diagnostics to detect any wiring errors in the hand-built prototype hardware.
(Electrical/Electronic Manufacturing industry)
December 1974 — January 1977 (2 years 2 months)
Developed embedded applications in Motorola 6800 assembly language for a single-board computer manufactured by this small startup company.
Developed an application in Intel 8008 assembly language for tracking the daily production of ceramic substrates for integrated circuits. The program ran on a Datapoint 2200, the first computer to implement what would eventually become the Intel x86 instruction set architecture.
(Government Agency; USN; Military industry)
June 1973 — January 1977 (3 years 8 months)
Support of Naval Tactical Data Systems used on U.S. Navy ships.
Developed system programming utilities for the AN/UYK-7 based SHARE/7 time-sharing system,and an XDS 940 time-sharing system.
Co-authored system operations manuals, and trained operations staff.
Vietnam Era Veteran.
DC and AC circuit theory 2004 — 2005
Abingdon, Virginia
Object Oriented Programming (OOP) 1994 — 1994
Raleigh, North Carolina
M.S. , Computer Science , 1982 — 1984
San Diego, California
B.A. , Applied Physics and Information Science , 1968 — 1972
San Diego, California
English, Spanish, German, Physics, Chemistry, Calculus, Electronics 1965 — 1968
Scored 100% on SAT Math Level II exam.
San Diego, California
SAE, Mensa
Monarch Crown Award for Outstanding Performance, April 1994.