10/27/08 -- Click here to see my latest project: a pebble mosaic by my sauna.
11/3/08 - If you have an interesting job for me, read my resume below and send me an email. I'm currenly ending my sabbatical and am in the job market.



 

Dirk DiGiorgio-Haag

San Rafael, CA

dhaag23@gmail.com 

Overview

I'm a professional software engineer that's proud of the products I create. I work hard and can balance getting things done fast with getting them done right. I have fun writing elegant, simple, and powerful software and have a proven ability to get all of the details of a task just right, be it first and foremost coding, but also planning, documentation, tools, testing, or whatever it takes. As my career has progressed, I have also enjoyed taking on a leadership role, including both as a technical leader and as a mentor and teacher to junior engineers.

When needed, I can work alone, however I usually collaborate with engineers, management, QA, and marketing and have universally established good rapport with other team members. To make even the strongest teams work well you need the right software development processes and tools. I have worked using a variety of development processes and can shape them to fit the tasks at hand and the company culture.

My strongest technical areas are in Windows, C++, C#, COM, threading, and UI. However my career has covered a large variety of technologies and work environments. Industry experience ranges from HD video compression, to networking (.NET remoting, TCP-IP, SNA, AppleTalk), to instrument control (gas and liquid chromatographs, typesetters), and from enterprise to desktop products.

Work Experience

                 6/03 to 7/07      Sonic Solutions, Inc                                       Architect/Technical Lead

Architect, Technical lead, and lead engineer of the team developing the next generation HD encoding software. At its peak the team was comprised of 7 developers and 6 QA members.

The main function of this product is to compress raw video into AVC, VC‑1, or MPEG‑2 video streams for use in Sonic’s DVD authoring products. Encoder professionals use the many different settings to fine tune the encoding process in order to optimize between high quality and high compression.

Major components of this product include:

·  An extensible generic encoding engine. Only a few small specialized classes are needed to add the ability to encode new streams. Use of threads allows encoding to proceed while the display is updated.

·  A legalization engine. Since there are so many settings that sometimes conflict, a major challenge is to produce legal video and audio streams that conform to the Blu Ray (and HD-DVD) specifications.

·  Data visualization. A window displays the video that provides frame stepping, slow motion playback, frame accurate seeking, and A/B comparison of source and encoded video. A movie timeline graphically displays stream meta-data such as bit-rate, picture structure, and PSNR.

·  Segment based re-encoding. This provides the ability to re-encode just a short segment of the video at higher bit rates for improved quality.

At Sonic I advocated and worked to implement better development methodologies, and closer cooperation with QA, documentation, support, and field representatives.

               12/99 to 6/03      Kenamea, Inc                  Principal Software Engineer/Technical Lead

A fast paced startup, Kenamea combined a high throughput enterprise messaging system with light-weight Windows and heavy weight Java clients. I was sole owner of the mid-tier Windows COM, C#, and JavaScript APIs as well as a Web Browser host application, and I worked extensively in the multi-threaded communication code.

•  Designed and implemented Win32 based UI for Kenamea application management and, using ATL and Win32, for a WebBrowser container application.

•  Designed and implemented new APIs:

o        In-process .NET API providing reliable messaging services.

o        In-process COM API providing reliable messaging services.

o        Out-of-process COM API for the Windows platform to interface to our messaging platform. Implemented the multi-threaded API, management, and UI components in C++ using a variety of synchronization and advanced COM techniques.

o        JavaScript API exposed through two different WebBrowser containers one through an ActiveX control the other through an application as an ActiveX control container. Implemented Asynchronous Pluggable Protocol handler to provide additional security for DHTML based applications.

•  Lead multi-function development teams on a large variety of projects.

•  Involved in many process related activities including adapting Agile/Extreme programming methodologies to Kenamea's needs, adapting and integrating .NET and C++ automated test frameworks into our development infrastructure, writing makefiles and installation scripts, and designing the bug/project tracking system.

•  Wrote technical design specifications, product requirements, and end user documentation.

•  Worked on a Java based IDE for developing web portal solutions using Eclipse.

               2/99 to 12/99      Fair, Isaac and Co.              Senior Software Engineer/Technical Lead

•  Technical Lead for a team of five software engineers to produce an n-tiered client/server credit application processing system on Windows NT. This used COM components under MTS, a VB front end, MSMQ for server side workflow, and an MS SQL Server 7 database.

•  Design challenges include high throughput of up to 50K applications/day, client configurable forms, workflow, and database extensions, and short time to market. Management challenges include coalescing a new team and coordinating with a development partner.

•  Used UML and use case driven design techniques.

                 5/98 to 2/99      Varian Associates                      Manager, Data Handling Product Line

•  Lead a team of four software engineers to produce Varian's Liquid and Gas Chromatography software. Responsible for all aspects of product development including software specification, design, and some coding as well as non-technical aspects such as manuals, on-line help, and product structure.

•  Responsible for the release of three products: control of a new instrument, a maintenance release, and a full release of the Star Workstation.

•  Interfaced with various groups including product and field marketing, software evaluation, documentation, customer support, and sales.

                 2/95 to 5/98      Varian Associates                                         Senior Software Engineer

•  Designed and implemented a new C++ class library for displaying and manipulating chromatographic data. Six products each with quite different requirements used this one code base. Containing over 175 classes, unusual for the time was that it also used C++ exception handling, the STL, and provided a multi-threaded interface. I wrote the primary client, an MFC based SDI application.

•  Significantly enhanced usability of 16 bit Windows graphics program for display and reprocessing of chromatographic data. Added graphical events programming, direct manipulation of on screen elements, printing, and clipboard support.

•  Added numerous data reduction features including integration algorithms, baseline calculations, and weighted least squares regression.

•  Used Contextual Inquiry to evaluate the user interfaces.


                 3/94 to 2/95      Rainin Instrument Co.         Senior Software Engineer, Project Leader

•  Responsible for all aspects of a two-year Macintosh based $1,500,000+ software project to interface with a variety of Rainin and OEM laboratory instruments. This included specifying features, hiring and managing test resources, coordinating with the software developers, and some coding.

•  Quickly learned Neuron Data cross platform framework, new code base, and customer requirements so I was an immediate asset.

•  Improved programmer productivity by: creating a FileMaker database for bug tracking, implementing a source control system, and instituting more rigorous development and test cycles.

                 3/88 to 2/94      Apple Computer                                           Senior Software Engineer

•  Designed and implemented a C++ multi-threaded framework to support a terminal emulation API for SNA•ps 5250 project. This framework communicated with AS/400s using the SNA LU 6.2 protocol. It has been used as the basis for three other derivative products, including an AppleTalk to AS/400 connection, and a tn5250 connection using TCP/IP.

•  Technical lead programmer in Apple 3270/5250 API project. Defined architecture for widely used standard IBM terminal emulation API.

•  TCP/IP, SNA, & AppleTalk networking. 3270, 5250, & telnet data streams.

                 8/87 to 3/88      Bio-Rad Laboratories                           Scientific Systems Programmer

               8/83 to 11/86      Xenotron                             Senior Software Engineer, Project Leader

                 1/83 to 8/83      Bruker Instruments                                         NMR Software Specialist