A creative, reliable software engineer with expertise in all phases of software development. A team player who loves to encourage people and work with them to solve their platform issues. Seeking an individual contributor role where my expertise can be leveraged to increase production across the team.
Strong technical experience in:
• Platform Bring-Up
• Firmware Development
• System Troubleshooting
• Application Development
• Documentation & Training
• Customer Support
Strong technical skills in:
• Target Platforms AMD and Intel x86 firmware, Linux, Windows, DOS, BIOS, coreboot, etc.
• Languages C, C++, 80x86 Assembler, Java, JavaScript, php, HTML, etc.
• Tools Eclipse, gcc, git, Subversion, Bugzilla, TestLink, Visual Studio, etc.
Strong personal strengths:
• Empathy
• Communication
• Positivity
• Teamwork
• Connection
Principal Software/Firmware Engineer @ As a member of the SageBIOS team, delivered and maintained commercial firmware products based on coreboot. Personal contributions: support for new CPUs, enhanced debug code, added dynamically generated text to the splash screen at runtime, and extended ACPI support. It was not uncommon to be debugging at every level in the system: chip, bus, firmware, driver, OS kernel, driver, and application.
Our Release Notes originally took 20 man-hours per platform to construct; I improved the process to take less than one man-hour per platform.
Developed and maintained training material for a three day course to help engineers become familiar with the process of developing/extending SageBIOS. Taught up to 40 students at a time in locations around the world for Fortune 100 companies. This helped managers and engineers understand the workings of SageBIOS so they could maintain their own projects, removing dependence upon outside resources.
Developed an x86 firmware package to allow a binary from a 100 MHz Pentium-class processor to run on an AMD G-series APU in order to enable the customer to update the underlying hardware without incurring the expense of rewriting/recompiling the software (saving the additional expense of requalification). Learned Verilog and wrote firmware-level tests to help debug FPGA/PCIe/memory implementation (including memory alignment/access issues, interrupts, etc.).
Developed an Eclipse-based product for developing/debugging x86 firmware with extensions to enable features specific to x86 devices, enabling both internal and external engineers to develop & debug firmware on x86-based platforms, saving them time and money (no royalties, no waiting for a BIOS company to make changes). Wrote the documentation. Added a JavaScript-based script engine to allow end users to customize the debugger’s functionality.
Primary contact for Customer Support, working to satisfactorily resolve customer issues. From January 2010 to Present (5 years 10 months) Longmont, COSenior Software Engineer @ Windows CE engineer for whatever project comes my way. Specialization in new silicon/new platform hardware. Recent projects include:
WinCE 5 on ARM9 derivative CPU, including EBOOT, SDIO, SPI, Ethernet, KITL, and Profiling.
WinXP mouse filter driver.
WinCE 6 on ARM9 derivative CPU, including USBFN, EBOOT, OAL development, KITL, and RNDIS (Ethernet over USB)
WinCE 5 on ARM9 derivative CPU, including OAL, EBOOT, and SPI. From October 2006 to January 2010 (3 years 4 months) MTS @ With minimal management oversight, was responsible for the design, development and maintenance of low-level silicon design verification tools and BIOS porting/development for partner platforms. From April 2006 to September 2006 (6 months) Section Manager (BIOS, Windows, Linux) @ Managed a group of Software Engineers for BIOS development; took on added responsibility for managing device driver development for Windows and Linux. Worked with the Technical Marketing, Applications, Software Validation and Systems groups to ensure that products were defined, designed and delivered in a timely manner. From October 2005 to April 2006 (7 months) Section Manager (BIOS) @ Managed a team of Software Engineers for BIOS development. Worked with the Technical Marketing, Applications, Software Validation, Silicon Engineering and Systems groups to ensure that products were defined, designed and delivered in a timely manner. From April 2004 to October 2005 (1 year 7 months) MTS, Project Lead @ Took over as Smart Display Project Lead; took over as acting Section Manager for the BIOS Team. Responsible for the design, development and maintenance of BIOS software for various silicon validation platforms while coordinating the development and delivery of the full software load (BIOS and WinCE) for AMD’s Smart Display project. From August 2003 to April 2004 (9 months) BIOS Software Engineer @ Responsible for the design, development and maintenance of BIOS software for various silicon validation platforms. Designed and developed the BIOS for the Smart Display project, including developing 32-bit protected-mode BIOS Option ROMs built using the WinCE 4.x development tools. From September 2002 to August 2003 (1 year) BIOS Software Engineer (Contractor) @ Developed, debugged and maintained BIOS software as required by the BIOS Team manager. From March 2002 to September 2002 (7 months) Development Engineering Manager @ Led a team of eleven engineers eight local engineers, two remote engineers and one intern through the design, development, release and maintenance of multiple complex shrink-wrap utility software for Windows (95 through XP). From July 2000 to October 2001 (1 year 4 months) Senior Software Engineer @ Participated in the design, development, release and maintenance of six complex shrink-wrap utility software products for Windows (95 through XP). Developed this software in C, C++ and 80x86 Assembler using the SDK. COM was used extensively throughout the projects. From July 1999 to July 2000 (1 year 1 month) Senior Software Engineer @ Designed, developed and maintained shrink-wrap utility software written in C, C++, and 80x86 Assembler languages for Windows platforms. From January 1998 to July 1999 (1 year 7 months) Senior Software Engineer @ Low-level 80x86 Assembler, C, C++ programming, Windows, X Window. From December 1995 to April 1997 (1 year 5 months) Program Manager @ Project Management, Software Engineer From May 1995 to January 1996 (9 months)
BS, Computer Science @ South Dakota School of Mines and Technology From 1981 to 1987 Steve Goodrich is skilled in: C++, Firmware, Software Development, Device Drivers, x86 Assembly, C, Embedded Systems, System Architecture, Operating Systems, Embedded Software, Subversion, Debugging, Eclipse, USB, Software Engineering, Hardware, Programming, Processors, Windows, Unix, Software Design, ARM, Agile Methodologies, Object Oriented Design, PHP, Linux, X86, Shell Scripting, Bios, Visual Studio, Architectures, Android, Java, Git, JavaScript, Software, Program Management, Product Development, TCP/IP, Perl, HTML, SoC