Matt Gerrans

Bellevue, Washington

Summary
I have more than twenty years experience in developing flexible, long-lasting software solutions.

Technical Summary

Areas of strong or recent experience:

  • C#
  • C++
  • Python
  • Object Oriented Programming
  • JavaScript, JScript, HTML

Areas of past experience:

  • Windows OPK and Win32 System Programming, COM
  • Borland Delphi
  • SQL/Relational Database; ODBC
  • Java, Swing

Relevant Work Experience

Microsoft, August 2010 – Present
Senior Software Engineer – Microsoft CRM 2011 (Customer Relationship Management)

·         Lead developer on refresh BCM for Office 2013; including work with C++, C# Interop, build process (building downloadable patch and slipstream installer).

·         Developed database layer in JavaScript/ScriptSharp for CRM slate/phone HTML5 application.

·         Resolved significant memory leaks in IE related to AJAX components.

·         Planned application infrastructure improvements considering patterns such as MVC, MVP and MVVM to allow CRM to begin supporting disparate platforms.

·         Contributed to bug fix effort on the final release push for CRM 2012

Microsoft, March 2008 – August 2010
Lead Software Engineer – Outlook 2010 with Business Contact Manager (BCM)

·         Owned the customization feature of BCM, including WSIWIG drag and drop form customization.

·         Was the lead for product areas including build (including signing localization, packaging, x64/x86, build automation, automated check-in gates), service packs, mobile, customization, projects, setup and Microsoft Office integration.

·         Successfully built and delivered the service pack (AKA patch) for BCM 3.

·         Managed schedules and bug triage to successfully deliver the product.

Microsoft, February 2005 – March 2008
Senior Software Engineer, Lead Software Engineer –Windows Driver Kit and Windows Logo Kit

·         Led the software development team developing the DTM (Driver Test Manager), which is the test automation infrastructure used by device driver developers to test their drivers for logo certification.   Led development of improvements to the Windows Logo Kit, working with the Windows core build team, the WTT infrastructure team, DTM team and many device teams (Display, Storage, Networking and all other device categories).

·         Designed and implemented the WDK “KitGen” build system that builds the WDK and WLK.   This included coding in C#, C++, Jscript, VBScript and Python.   KitGen is a scalable and pluggable build system, with status web pages and notification systems.

·         Designed and implemented the signing system for the WDK/WLK build; this is a multi-pass system that allows for signing at different points in the build process to enable nesting of signed files inside other signed files.

·         Led effort to create a simple installer front-end for the WDK and WLK; this allowed improved componentization of the kit and helped customers to choose different installation configurations without needing to read lengthy installation instructions.

Hewlett-Packard Company, May 2002 – January 2005
Senior Software Engineer (contract)

Designed and developed all of the following features for the HP Image Zone Plus (HPIZ), a digital image management software package:

  • The Memories Disc feature, which creates a slideshow disc that can be used in multiple contexts (in DVD players, on PC and Mac, etc.).
  • Disc labeling with LightScribe (probably the first publicly released use of LightScribe).
  • The "Digital Negative" feature; this allows users to revert an image back to its original state (as it came from the camera, for example) after any number of editing changes.
  • The Backup to optical disc feature, which allowed for both full and incremental backups of all images, as well as digital negatives.
  • The Sync-to-iPAQ feature, which synchronizes image sets between the PC and a handheld device.
  • Designed and developed a dramatically simplified localization strategy and tools, in C# and Python.   These tools were used and greatly praised by the localization team as well as other developers on the project.
  • For all of the above I worked closely with program managers, usability experts, quality assurance engineers and localizers to work out the design.   I developed the user interface as well as the underlying object models in C#.    I also created a COM automation object to handle a few things requiring system access and performance (like calculating file hashes) and this in turn was called from C#.   Releases were automated with Python scripts that created a cache of releases, version information and release notes.
  • Along with the above accomplishments, I continued to develop various tools, upon request for other teams in the lab.

Artima Software Company, May 2001 – March 2002
Senior Software Engineer (Contract)

  • Developed XML-processing code in Python (using pyxie, pyexpat, sax, etc.) and Java, using JAXB.
  • Developed some miscellaneous tools, for example a "comment formatter" that will format the commented sections of code to look good in printed format (for publishing in a book).
  • Participated in the design and development of a Java unit test kit called SuiteRunner; developed most of the user interface using Swing (the Java Graphical API).

Hewlett-Packard Company, June 1996 - May 2001
Senior Software Engineer / Team Lead (Contract)

  • Championed and then developed a System Recovery on bootable CD for restoring (i.e. re-installing) all or part of the software on the system. The bulk of this project was written with C++, with some utilities written in assembly.   This system included security to prevent the CD from being used on non-HP systems (a BIOS-lock).   This system greatly increased productivity by replacing the previous system that was used for recovery; in comparison it requires fewer CDs, was dramatically faster and is much more flexible.   Not only did this recovery system save HP many millions of dollars, it proved to be the best System Recovery in the industry at the time.
  • Developed a Windows 9x/Millennium Application Recovery program for re-installing selected applications and drivers from the Recover CD, while in windows.    For this software, as well as the System Recovery software, I designed and developed the underlying implementation as well as the user interface.
  • Developed more than 50 separate applets, tools and utilities; many were used in the Windows OPK (pre-installation) process and some were delivered as part of the HP Pavilion system, most were written with C++ with inline assembly as needed. If you have used an HP Pavilion PC, then you have already seen my work.

Fujitsu (FPSI), June 1997 - October 1997
Software Engineering Contract

  • Implemented Microsoft Windows NT 4.0 OPK + SP 3 on Pen-based computers.
  • Wrote utility applications such as an application for power management verification.

Saratoga Systems Inc., October 1995 - June 1996
Senior Software Engineer - Research and Development Group

  • Developed Designs for Windows 95 CRM (Customer Relationship Management) product written with Microsoft Visual C++.
  • Developed product prototypes using Borland Delphi with relational database and presented the results internally and to selected customers for review and feedback.

Multidata Corporation, February 1994 - October 1995
Software Engineer - Core Technology Group

  • Developed C++ code for insurance business automation software applications written with the Microsoft Foundation Classes (MFC) and using SQL.
  • Solved long-standing problems dealing with printing, database performance, and custom controls.
  • Was instrumental in all aspects of releasing several versions of the OpenAccess product and the associated System Administrator software.

TGV Inc., October 1994 - June 1995
Software Engineering Consultant (Contract)

  • Designed and implemented keyboard mapping utility for Telnet application in C++.  This required trapping all Windows keystroke input messages, looking up their resulting emulator equivalents in dynamic, user-configurable tables and sending those results to the emulation library at run time.
  • Designed and implemented visual layout descriptions for both PC keyboards and various target emulator keyboards, such as VT300 and TN3270.  Special Windows keys (such as Ctl-Esc, Alt-Tab, etc.) were supported via windows hookprocs.   Provided an easy-to-use drag-and-drop configuration interface for users, with a storage and retrieval mechanism for keyboard mappings and macros.

Software Publishing Corporation (SPC), June 1990 - September 1993.
Software Engineer - Information Systems Software Development

  • Developed and maintained code for a platform-independent layer for Windows 3.1 and Macintosh, in C and C++. This layer was used by Harvard Graphics for Windows and other SPC products.
  • Redefined the default C++ new and delete operators to use SPC's internal cross-platform memory management API and added conditional memory debugging features, resulting in large savings of engineering debugging time on the project.

IBM / Siemens-ROLM Systems Inc., July 1988 - June 1990.
Associate Engineer - Redwood Product Test

  • Developed detailed strategic and technical product test plans, schedules and task assignments for myself and four other engineers.

Redwood Test Tool Hardware and Software Development

  • Developed hardware and software (in C) for the Redwood Automated Tester (RAT).
  • Coordinated and directed engineers in software script writing for the RAT.

Education

References available upon request.