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.