Post Job Free
Sign in

C C++ Software Developer

Location:
Colton, OR
Posted:
January 18, 2024

Contact this candidate

Resume:

JOHN R. UNDERWOOD

***** *. ******* **** **.

Colton, Oregon 97017

Cell: 503-***-**** *******@*****.***

SOFTWARE DESIGN ENGINEER

PROFILE OF QUALIFICATIONS

Software developer with fifteen plus years experience in Linux, real-time operating systems, architecture, and firmware. Specialize in producing software that is user-friendly, well documented, tested, and maintainable using state-of-the-art software techniques and languages such as C/C++.

TECHNICAL SKILLS

Linux

C/C++

bash

Shell scripting

Assembly

Windows

Borland C++

MS Visual C++

debug

MKS Toolkit

Cygwin

Android

git

VRTX

RTOS

gcc

gdb

dbx

DDTS

Purify

Quantify

ClearCase

Intel I2ICE

32CG16 ICE

NetROM

makefile

Build env.

Logic analyzer

68030/68882

80386, 8051

8080, Z80

6800,6809,6502

320C30 DSP

GPIB

CAMAC

PROFESSIONAL EXPERIENCE

Infosys, India (Remote) Aug 2020 – Present

Unix Lead Engineer(Salary).

Lead for two other engineers working on analysis of existing scripts and programs in preparation for working on the design of new scripts to support transferring an Informix database to a Cosmos database in the cloud.

Scripts and programs analyzed: Shell scripts, Perl scripts, SQL scripts, XML files, C programs, Informix 4GL programs for Walmart.

Trained another engineer on debugging C programs with dbx on the AIX system.

Analyzed code working with SQL database for a warehouse management system for Dollar General.

Maintained a program for Verizon written in the go language. It was used to consolidate data from all cell site configurations in the US from the Ericsson, Nokia, and Samsung vendors. The differing data formats from the 3 vendors was output in a single .xml format. There was some good experience working under pressure a few times when bugs were escalated to top level management while I was the only one touching the source code.

Collins/UTC Aerospace, Hood River, Oregon Sep 2018 – Oct 2019

Embedded Software Engineer(Contract)

Developed a unique solution for manual control of camera focus from a GUI interface sending camera serial data in the Sony VISCA protocol.

Designed an automated laser boresight routine built into ViewPoint using MS Visual Studio and Qt using a fast calculation of the position of the center of the laser spot in the IR camera image.

Modified a program running on embedded Linux to make the display overlay images match up with a 1280x720 image format from a previous 640x480 format.

Mounted a deep investigation to find the cause of gimbals spinning out of control (known as the “Maytag” mode) with certain user inputs. It turned out that this persistent bug had been caused by errors in ViewPoint, the C++ GUI control program, so this fixed all 3 gimbal designs.

Worked on various embedded programs in C on both bare metal and POSIX Linux.

HP, Vancouver, Washington Nov 2017 – Jul 2018

Embedded Firmware Engineer(Contract)

Developed firmware for ARM-7 processors running ThreadX and Embedded Linux, communicating with each other through internal network sockets.

Debugged ThreadX code using Multi with a JTAG probe and Linux with gdbserver and gdb on the host.

Isolated hardware bugs while working on board bring-up.

Modified mechanical control scripts which were interfaced to C functions.

Intel Corporation, Hillsboro, Oregon Mar 2017 – Jun 2017

Windows 10 IoT Software Validation Embedded Engineer(Contract)

Wrote PowerShell, bash, and expect scripts for automated MTBF and Stability testing of the Windows 10 IoT operating system on the Joule 570x platform.

Analyzed a parallel port driver that failed to change to hi-z mode when changing to input.

Lam Research, Tualatin, Oregon Nov 2016 – Jan 2017

Senior Software Engineer (Contract)

Wrote a script using Python 2.7 to search for selectable value ranges in fields of log files and created excerpt files with entries of interest.

Added GUI interface to the Python script using the KIVY graphics library for Python.

Intel Corporation, Hillsboro, Oregon Feb 2015 – June 2016

Network Driver Development Engineer (Contract)

Converted existing vmkLinux driver code to Native mode driver for the VMware kernel for the Fortville 40Gb network card

Created small patches for peer review and checking in with git

Reviewed patches from other engineers

Tracked down root cause of PSOD (Purple Screen of Death) errors

Fixed bugs in the existing i40e vmkLinux driver code

Used Source Insight and vim in conjunction with cscope for existing code analysis

Built a version of the driver with memory check code linked in to check for memory leaks

Used vSphere from VMware to configure network switches and Virtual Machines

Intel Corporation, Hillsboro, Oregon May 2014 – Jan 2015

Cloud Security Software Engineer (Contract)

Automated installation of secure cloud server software using bash shell scripts on Linux systems. Designed scripts for both KVM and XEN hypervisors running in Open Stack.

Used gdb to debug some errors in cloud security layer.

Configured AMT on servers for remote console and power control.

Configured servers with tboot and TCB.

Worked with and debugged some existing Python scripts.

Intel Corporation, Hillsboro, Oregon Oct 2013 – Mar 2014

Embedded Linux Software Engineer (Contract)

Debugged multi-threaded code with gdb that set up a communication path through a named pipe and also through sockets on Linux.

Developed proof-of-concept code to send data from an Android App written in Java to C code through a socket and back to Java code from C at the other end of the socket using JNI.

Wrote low-level routines and unit test code in C++ to interface to a small database for Linux, Windows and Android. Wrote the program that creates the default database file.

Customized the checkpatch.pl code format checking Perl script for Intel’s coding style.

Room 5, Portland, OR Jan 2013 – Aug 2013

Android Software Engineer

Debugged Android Jelly Bean build error for BeagleBoard-xM using unique methods.

Fixed several difficult bugs using Eclipse in Java object oriented programming on an Android app that shares pictures over the AllJoyn peer-to-peer SDK and displays them across several smart phones or tablets. SCC was git.

Intel Corporation, Hillsboro, Oregon Mar 2012 – Dec 2012

Web App Software Engineer (Contract)

Developed javascript, jquery, and C# code for the AppUp Tizen Store for the Tizen phone. This included MVC, html, and css code as well as use of the REST API.

Qualcomm Corporation, Hillsboro, Oregon Jul 2011 – Mar 2012

Android Software Engineer (Contract)

Wrote a plugin using C and C++ for the Android Webkit browser used on the Qualcomm tablet. The plugin was used to get directories of music files and create short clips of each file for the record player DJ web app.

Designed object oriented Javascript and Jquery code for the DJ app.

Solved a serious problem of the audio clips taking too long to start playing by starting to play a short clip of the audio while the whole song was loading in the background and then switching to playing the file with the whole song before the short clip ended.

Intel Corporation, Hillsboro, Oregon May 2011 – Jul 2011

Embedded Linux Software Engineer (Contract)

Fixed bugs in C++ code of the multimedia section of the Android OS on the Cisco tablet.

Isolated a serious bug using the Intel Vtune profiling software. It turned out that the system slow-down was caused by some debug code that had not been disabled.

Intel Corporation, Hillsboro, Oregon Apr 2010 – Apr 2011

Embedded Linux Benchmark Engineer (Contract)

Worked in the Digital Home Group on benchmarking multiple simultaneous graphics workloads using OpenGL, streaming media, and standard benchmarks.

Built many different versions of the Intel CE (Consumer Electronics) SDK and the embedded Linux OS for different configurations including the version for the HyperThreaded Multi-core Atom System-on-Chip Media Processor (as used in GoogleTV).

Configured and built the multi-user version of DirectFB on the embedded target including the required changes in the kernel.

Ran extensive benchmark tests on Google TV and Android to test the Chrome browser and Flash performance as well as the CPU and memory performance.

Found the reason for a target SPEC2K software crash by using gdb on the host to analyze the target core dump file. Also configured remote gdb debugging on the target from the host over the target network connection.

Configured Ubuntu Linux and the embedded Busy Box Linux to boot the target from tftp and NFS. Also configured Ubuntu to act as an internet gateway as well as an Apache server.

Customized C, C++, Qt, and Ruby programs. The C program provided periodic statistics of processor usage for System and User. The C++ program captured HDMI video data and frame timestamp data from a PCI bus card. Added several buttons to sub-menus of the Ruby program and implemented the underlying scripts for different workloads.

Benchmarked Blu-ray players for competetive analysis by using Bash scripts to control capturing video and sending IR remote menu commands from an IR remote simulation on the Linux host to compare video response time to IR remote menu commands.

John Underwood Consultants, Inc. Mar 2009 – Oct 2009

Mobile Applications Developer

Developed an iOS app for iPhone that was in the Apple App store for several years, called MoodTunes. It enabled the user to assign music genres to moods and would quickly create a playlist to match the user’s mood and start playing from the list selected from the songs stored on the iPhone. MoodTunes, the fastest playlist creator, was written in Objective-C. This provided almost a year of Mac OS experience.

Intel Corporation, Hillsboro, Oregon Jul 2007 – Mar 2009

Mobile Wireless Group Design & Validation Engineer (Direct Employee)

Adapted Install tests written in Silktest to work on Windows XP 64-bit to reduce expensive manual testing. Used SVN (Subversion) for source code control.

In less than two months, I ramped up on Klocwork, developed the build scripts, obtained the source code from the repositories in Israel, saved money by obtaining permission to share a license for the hcac compiler in Israel, and got the builds running successfully resulting in valid Klocwork results. This resulted in fixing critical security issues along with numerous other issues in the Floresville WiFi source code base.

Generated install files of Bullseye builds for the group that can be used to determine areas of the source code that are not covered by existing test cases. This should help to increase the reliability of the driver and API software that is delivered to customers.

Verified that the WiFi driver antenna selection was selecting the wrong antenna output by using a spectrum analyzer.

Developed a way to save considerable time with manual testing by reloading the operating system on an extra hard disk partition while doing the test instead of reloading after the test.

Performed crash analysis by analyzing the stack frames from the memory dumps.

Analyzed log files to debug install scripts.

Intel Corporation, Hillsboro, Oregon Jun 2006 – May 2007

WiMax Software Development Engineer (Contract)

Designed the picoChip PHY-SAP WiMax protocol decoder in C on Linux for the Wireshark packet sniffer Open Source Software package. Also configured network ports and installed a kernel driver module on a Linux machine.

Added the M2M TLV protocol to the yzen Subscriber Station emulation software to replace the PHY-SAP protocol. Found several bugs in the sebsim Base Station software while testing yzen. Worked on optimizing the yzen code for speed using the 2.6+ OProfile Linux kernel interface.

Implemented the Ethereal decoders for RNG-REQ/RSP, REG-REQ/RSP, PRC-LT-CTRL, PMC-REQ/RSP, FPC, DREG-REQ/CMD, and ARQ-FEEDBACK/RESET/DISCARD WiMax messages. I thoroughly tested them by modifying existing WiMax capture files using the bvi binary editor.

Supported Wireshark in a lab environment with installation, training, debugging.

Created new usage models (configured smart Ethernet switch to capture several ports simultaneously).

Built and installed a device driver on Linux

Designed a special checksum algorithm from checksum results shown in the WiMax spec.

Also worked with TCP/IP packet network programming.

Maxim Integrated Products, Inc. Nov 2004 – Feb 2006

IC Test Engineer (Direct Employee)

Designed and ported C++ software in the test program for the MAX3812USA part

Worked with the Parallel Bit Error Rate Tester on the Agilent 93000XP test system to measure random jitter and deterministic jitter at a 1.488 Gbps data rate

Simulated an impedance transform network in PSPICE to obtain the best transient response in a 3 GHz bandwidth circuit

Cut the device test time in half on the second release for a substantial increase in profit margin

Employed MS Excel to set limits and prove the device test for the MAX3812USA cable driver chip using the data from the correlation, characterization, and gage study tests. Completed documentation to release the test to production

Debugged and completed the DUT test board for the MAX3810 cable equalizer test

Set up the x0vncserver on Linux and Unix systems to display the X windows console on a remote PC screen

John Underwood Consultants, Inc. Oct 2001 – Oct 2004

Senior Hardware Engineer

Designed a nerve and muscle stimulator using a narrow pulse up to 200 volts in amplitude. The narrow pulse width seems to minimize the electrical shock sensation but still stimulates the muscle

Met the low cost design goal by using a miniature audio transformer to step up to 200 volts from the 9 volt battery

The output is 2 seconds of 10 Hz pulses followed by 2 seconds off and repeat – all generated with one IC, a CMOS Hex Schmitt Trigger Inverter

Completed the schematic and PCB layout using Eagle CAD software

Designed an electro-mechanical module that contains the electrodes for a footspa machine used for body detoxification and help for diabetic neuropathy

Installed and configured Asterisk, a VOIP central office telephony application running on Linux.

Credence Systems Corp. Hillsboro, Oregon Feb 1997 – Oct 2001

Senior Software Engineer (Contract)

Accomplished a major overhaul of the data logging subsystem of the Vista/Duo Semiconductor Test System control software involving 8 million lines of code

Developed regression tests for the Test System control software using Expect scripts. These scripts were then integrated into a much larger automated testing, data gathering, and report generation system

Wrote device test programs using test vectors for Digital devices and analog capture board for Analog devices. Took a training class for Test Engineering from an expert in the field of Digital and Analog device testing at Credence using Credence test systems. Ran and modified large test programs from many customers while fixing bugs in the test system software.

Test systems were controlled by Sun Sparc 20 and HyperSparc workstations using software written in C and C++. Worked with makefiles and build environments. Used DDTS to track bugs, ClearCase for version control, Quantify to find software bottlenecks, and Purify to find memory leaks. Debugged with gdb and dbx on SunOS and Solaris versions of UNIX.

Fixing bugs on both the analog and digital sections of the test systems required considerable understanding of the hardware/software interactions

Fixed more bugs than any of the other nine engineers on one release of the Vista/Duo Semiconductor million dollar Test System control software

Wrote DSP data reordering routine to reconstitute an aliased sampled waveform to give customers the ability to perform more extensive tests without requiring purchase of additional hardware

Developed solution for recurring problem when customers purchased new faster Sun workstations that enabled software to test speed of processor thus eliminating hardware/software mismatch

Responsible for some RPC programming.

Intel Corporation, Hillsboro, Oregon Mar 1996 – Jan 1997

Senior Software Engineer (Contract)

Made the MON960 monitor for the i960 processor set position independent by having the C code move itself, which enabled users to place their code in the same address space as in the final system at the normal boot address and still be able to access print utilities, instruction and data breakpoints, etc.

Reorganized the assembly language boot code to enable the MON960 monitor to be repositioned on the fly

Conducted extensive automated tests on the MON960 monitor with practically all versions of the i960 processor using MKS Kornshell scripts

Compiled with gcc on an HP workstation running HPUX, downloaded the binary over the network using NetROM, and debugged using the MON960 monitor

Helped find root cause of a few i960 gcc compiler bugs

Tektronix Color Printer Division, Wilsonville, Oregon Jun 1995 – Aug 1995

Senior Software/Hardware Engineer (Contract)

Improved and debugged a real-time print engine control system. Compiled with Borland C++ in the MKS Toolkit Korn shell with MKS make. Debugged with the Borland’s Turbo Debugger running in MS-DOS.

Expanded a software/hardware servo control system based on a Xylinx chip

MECTA Corp. Tualatin, Oregon Jan 1994 – May 1995

Senior Embedded Software Engineer (Contract)

Designed hardware processor interfaces and software device drivers running in US Software’s MultiTask! Real Time Operating System for 320 x 240 LCD text/graphic front panel, touch screen, and chart recorder medical monitoring displays

Incorporated input queues and interrupt service routines on the 386sx processor

Streamlined critical code by tuning at assembly level

Borland C++ and Turbo Debugger. Used pvcs for source control. Preliminary debugging was done with the front panel and chart recorder interfaced to a PC running MS-DOS.

FLIR Systems, Inc. Tualatin, Oregon Jul 1991 – Nov 1993

Senior Embedded Software Engineer (Contract)

Developed software in C for two models of laboratory infrared radiometers using 68030/68882 processor sets with the VRTX real-time operating system

Designed software for the radiometer that integrated a 68030 processor with the 34020 GUI processor

Expanded the simple VRTX disk operating system to make it user-friendly by adding common file system commands. The SCSI interface was used for the hard disk and floppy drive

Combined and aligned the graphic image annotation overlay with the infra-red image into a common TIFF file for import into desktop publishing applications

Corrected a long-standing infra-red image uniformity and accuracy problem in the temperature measurement software

Acted as a resource to other programmers for issues related to DOS and BIOS system calls and device drivers

Compiled on Sun workstations, downloaded the binary from the network, and debugged using the monitor that was part of the VRTX real time operating system

Implemented an error correcting RS232 protocol for the camera mount gimbal control

Tektronix, Inc. Beaverton, Oregon Dec 1990 – Mar 1991

Senior Software Engineer (Contract)

Designed a streamlined method of generating test code for software primitives using sed and shell scripts with a pattern file. Compiled and ran the generated code on Sun workstations. Debugged using dbx.

Flight Dynamics, Inc. Tualatin, Oregon Aug 1989 – Aug 1990

Senior Software Engineer

Designed the software control system for a high-speed data acquisition system based on the 386sx PC, the CAMAC interface, and an Exabyte helical scan tape drive

Improved the design so that 1024 bytes of data could be stored on tape every 10ms with a total tape capacity of 2 gigabytes

Developed drivers for the 386sx interrupt and DMA controllers to facilitate the high-speed data transfers

Debugged using Borland's Turbo Debugger and an oscilloscope

Accomplished a code port from the data acquisition system on MSDOS to a program on a SUN 4 that converted binary data from tapes into floating point ASCII data in engineering units using calibration factors stored in headers on the tape

Economized by trading speed for simplicity when porting the data conversion program to the SUN SPARC workstation

ARNAV Systems, Inc. Tualatin, Oregon Mar 1987 – Aug 1989

Senior Embedded Software Engineer

Designed and tested for FAA certification, the position, ground speed, and track solution code in C for the New Generation ARNAV Dual Chain Loran sensor

Improved the accuracy and confidence level when flying in the Mid-continent gap area by designing and coding a unique algorithm for solving the Loran position

Restored viability of the Loran project by solving the problem of the solution cycle taking too long (>>5 sec) by porting all the C code and changing some assembler routines to use a different compiler with faster floating point math

Designed the front panel display driver in C for the R50i Loran using the National in-circuit emulator for the 32CG16 MPU

Edge Technology, Inc. Portland, Oregon Jun 1984 – Jun 1987

Senior Software Engineer

Three years experience in C and one year intensive experience designing a major user-friendly C program for the IBM PC. Gimpel lint was used to keep the source code clean

Wrote an 8086 assembly language COM port interrupt handler to interface with the C program

Gained experience with low-level UNIX utilities and start-up scripts when booting from floppy, mounting the hard disk manually to salvage files during an intermittent hard disk problem, and reformatting the hard disk and bringing the system up from scratch after the repair

Managed all aspects of customer interface, design, and production of low cost credit inquiry computer systems. The systems make the five major credit bureaus user friendly and minimize on-line time

Computer Development Jul 1982 – Jul 1984

Software Project Engineer

Adapted IMAGE, a user friendly word processor package written in Z80 assembly, to run on the CP/M based Florida Computer Graphics, Beacon system

Improvements added: Color text entry, configure file, new soft key display, cut/paste, extended search/ replace, file delete/rename, and automatic transfer of text to disk and back to memory

The Boeing Company, Aerospace Division Jun 1981 – Jun 1982

Electronic Design Engineer

Developed improved diagnostics for rocket booster avionics using a Z80 based test system

Found a major shortcoming in the tested device which resulted in a spec change

EDUCATION

Portland State University, Bachelor of Science in Applied Science and Engineering

Microsoft Windows Driver design one week course at Intel, Folsom, California

Kepner-Tregoe Management Course / Texas Instruments course in Microprocessor design / Tektronix Calibration School, Advanced Technician Training

Milwaukie High School High School Awards: Bausch & Lomb Science Award Mathematics Association of America Award



Contact this candidate