Recent Employment History

July 2001 to Present

My wife and are are semi-retired and spend much of the year traveling. I still keep up with the current technologies and develop my own tools in C#/Mono, C++, ASP.NET and other languages on both Windows and Linux.

December 1993 to July 2001

Microsoft Research, Microsoft Corporation

Began working with the original Decision Theory Group late in 1993.   Initial focus was construction of editing tools for Bayesian belief networks.   Soon began working on collaborative filtering algorithms, utility-based recommendations and troubleshooting, database retrieval.   Programming in a research organization required using all available tools, both from inside and outside Microsoft, keeping current with emerging technologies, blending the requirements of mathematical algorithms for memory and speed with the realities of existing platforms.

As Microsoft Research expanded rapidly, several new related groups were spun off.   I continued as the senior developer in the set of associated groups including Adaptive Systems and Interaction, Machine Language and Applied Statistics, data mining and other areas.

Performed continual enhancement to various research toolkits running on all Windows platforms.  Pioneered usage of XML and in the groups.  Build several applications designed to monitor, record and analyze user activity, including process activation, keyboard usage and graphical text rendered.

Projects required extensive, in-depth knowledge of C/C++, Visual Basic, COM, ATL, HTML, XML, ODBC, SQL and many other core industry and Microsoft technologies.   Wrote many hybrid applications using Visual Basic and C++ for maximum flexibility and performance.

July 1990 to December 1993

Windows NT Group, Microsoft Corporation

Began working with the original LAN Manager group.   When Microsoft decided to focus development on what became Windows NT, I joined the Network User Interface group and was in charge of the installation and configuration of all networking components, both hardware and software.    I helped design the overall setup process for Windows NT.

Designed a "no questions asked" network setup protocol involving (insofar as was possible) auto-detection of all hardware components and automation configuration of the network stack.   The auto-configuration algorithm was written in Prolog (see  Papers for more information).  I ported a small Prolog interpreter into NT and built the necessary software bridges.