Recent Projects

At A Glance





Consulting Experience (1996–2014)

Acromag XEmbedded Group
Ann Arbor, MI
Jun. 2014 – Present

PC-based VME CPU Module
  • Debug system startup/shutdown problems in third-party driver
  • Windows 64-bit driver for several types of PMC I/O cards
  • Driver hangs on some systems during shutdown or startup
  • Fixed problem with interrupts being processed after board was powered down by Windows.

Venture Technologies, Inc.
Billerica, MA
Jan. 2014 – May 2014

Product Design and Development
  • Project for Water Analytics: Aquametrix 2400 controller
  • Embedded project to create new analyzer/controller
  • Written in C using IAR Embedded Workbench for ARM and Segger embOS RTOS
  • Ported lwIP stack to run on embOS
  • Ported GoAhead web server to run on embOS and to use lwIP Ethernet stack
  • Worked with client to design the web pages to interface to the analyzer/controller

Acromag XEmbedded Group
Ann Arbor, MI
Nov. 2013 – Feb. 2014

PC-based VME CPU Module
  • Modified existing driver for Tsi148 to support 64-bit Windows
  • Rewrote IOCTL interface to more easily support both 32- and 64-bit
  • Added support for RORA interrupts
  • Added support for canceling pending interrupt waits

Venture Technologies, Inc.
Billerica, MA
Apr. 2013 – Oct. 2013

Product Design and Development
  • Project for ilium Technology, inc.: 2100 Conductivity Meter
  • PC program to configure and control the meter over USB
  • Written in C# using .NET 4.0 and Windows Forms, to run on Windows XP and greater
  • Also collects data from meter, showing it in real-time on a graph and/or exporting to a CSV file
  • Wrote an installer for the application (including the .NET run-time and the USB device driver) using NSIS.

Acromag XEmbedded Group
Ann Arbor, MI
Apr. 2012 – Sep. 2013

PC-based VME CPU Module
  • Port existing driver for IntervalZero RTX to the 6300 board, which uses a different VME bridge chip (the Tsi148)
  • Written in C as an RTX task to provide access to the Tsi148 functionality
  • Rewrote sample Windows program to access the RTX driver
  • Created new utility programs running under RTX
  • On-going customer support

CRH Consulting
Agawam, MA
Nov. 2012 – Jul. 2013

Project for Aceso
  • Deliver movies, TV, and patient care information to bedside
  • Uses an all-in-on PC running Windows Embedded Standard 7
  • Created application-specific browser using Qt Webkit
  • Application is delivered from web server, runs in "kiosk mode" on bedside PC
  • Created Javascript API so application can access and control features on PC

Omnyx LLC
Pittsburgh, PA
Feb. 2012 – Nov. 2012

Integrated Digital Pathology
  • Helped refactor proprietary wavelet image compression software written in C++
  • Created functional tests and utilities to verify output of refactored code
  • Created unit tests for refactored code using WinUnit
  • Fixed various latent bugs uncovered by both unit and functional tests

PlaneSense, Inc.
Portsmouth, NH
Aug. 2011 – Nov. 2011
formerly Alpha Flying, Inc.

PlaneSense Fractional Aircraft Ownership
  • Troubleshooting third-party Gantt Chart custom control used for scheduling
  • Control written in C# using .NET 2.0 and Windows Forms
  • Test app written in VB.NET; scheduling app written in C#

Venture Technologies, Inc.
Billerica, MA
Nov. 2011 – Dec. 2011

Product Design and Development
  • Project for Hologic: design and implement an application to allow technicians to test and certify an Adiana Permanent Contraception unit
  • Written in C# using .NET 4.0 and WPF, to run on Windows XP and greater
  • Implemented as a navigation-style application, which walks the user through the steps necessary to verify the unit is operating properly
  • Communication with the device is via its serial monitoring port; application can detect certain user actions, and verify certain machine parameters

XEmbedded, Inc.
Ann Arbor, MI
Sep. 2011 – Oct. 2011
Acquired by Acromag, Inc. in May, 2012

PC-based VME CPU Module
  • Created driver for new 6300 board, which uses a different VME bridge chip (the Tsi148)
  • Written in C using KMDF (based on previous driver for the 6200 board)
  • New driver supports most of the same interface IOCTLs as the previous driver, with the internals rewritten for the new bridge chip. This allowed most existing applications to work with the new driver

XEmbedded, Inc.
Ann Arbor, MI
May 2011 – Jun. 2011
Acquired by Acromag, Inc. in May, 2012

PC-based VME CPU Module
  • Follow-on project to add features to driver for PCI-VME bridge chip developed previously
  • Made driver more resilient to application mistakes
  • Improved VME interrupt generation code
  • Implemented driver signing

Venture Technologies, Inc.
Billerica, MA
Jan 2011 – Feb. 2011

Product Design and Development
  • Project for Island Oasis: UI for configuring SB2100 frozen drink machine
  • Hardware controlled by an MSP430 from TI
  • Microcode written in C using IAR Embedded Workbench
  • Designed and implemented microcode commands on MSP430 on top of existing USB-CDC interface
  • Designed and implemented UI application in C# using .NET 3.5 and WPF to allow user to configure parameters for drink mixtures

Venture Technologies, Inc.
Billerica, MA
Feb. 2010 – Oct. 2010

Product Design and Development
  • Follow-on project for Hittite Microwave Corp.: Embedded software for GHz signal generator
  • ARM7-based MCU (LPC2468) hardware. Software implemented in C using Keil MDK and RTX RTOS
  • Reworked original microcode for new product line (new boards containing new hardware and additional capabilities)

XEmbedded, Inc.
Ann Arbor, MI
Dec. 2009 – Jun. 2010
Acquired by Acromag, Inc. in May, 2012

PC-based VME CPU Module
  • Follow-on project to add features to driver for PCI-VME bridge chip developed previously
  • Extended vmeAlloc to support allocations in VME A32 space
  • Support for Windows 7
  • New API support (vmeintWaitEx)
  • Various bug fixes

Venture Technologies, Inc.
Billerica, MA
Aug. 2009 – Oct. 2009

Product Design and Development
  • Follow-on project for Cynosure Inc.: medical laser treatment equipment
  • Troubleshooting hardware lockup and flash CRC issues
  • Fixed bugs in flash utility program
  • Designed and implemented diagnostic firmware for Lattice MICO32 embedded processor for testing interrupts
  • Designed and implemented diagnostic programs for PC to read and write PCI configuration space, and for testing interrupts on the MICO32

Venture Technologies, Inc.
Billerica, MA
May 2008 – Jul. 2009

Product Design and Development
  • Project for Hittite Microwave Corp.: Embedded software for GHz signal generator
  • ARM7-based MCU (LPC2468) hardware. Software implemented in C using Keil MDK and RTX RTOS
  • Designed and implemented USB-CDC interface
  • Designed and implemented Telnet and socket interfaces over Ethernet
  • Designed and implemented GPIB interface using TNT4882 chip

XEmbedded, Inc.
Ann Arbor, MI
Feb. 2009 – Jun. 2009
Acquired by Acromag, Inc. in May, 2012

PC-based VME CPU Module
  • Created device driver for Tundra Universe II PCI-VME Bridge chip on company's XVME-6200 CPU board
  • Driver written in C using KMDF 1.7
  • Replaced legacy driver written in C++ using Compuware/Numega DriverStudio
  • New driver supported legacy API, so existing user-mode interface library, test applications, and customer code would continue to run unchanged

Venture Technologies, Inc.
Billerica, MA
Sep. 2008 – Jun. 2009

Product Design and Development
  • Project for Cynosure Inc.: Device driver for PCI controller board
  • Product runs on XP Embedded, written in C# using .NET 3.5 and WPF
  • Designed and implemented a device driver in C using KMDF 1.7
  • Designed and implemented simple communications protocol to transfer packets between PC and microcode running on Lattice MICO32 embedded processor
  • Wrote several diagnostic programs to exercise and debug the hardware, software, and firmware

Venture Technologies, Inc.
Billerica, MA
Apr. 2008 – Aug. 2008

Product Design and Development
  • Project for Hasbro, Inc.: wireless command and control of target device
  • Designed and implemented an ActiveX control to allow application development in a variety of languages
  • Control API implemented in C++/ATL using Visual Studio 2005
  • Used WinUSB interface to communicate with device
  • Designed and implemented 8051 firmware for the wireless USB dongle which communicated with target device
  • Helped debug GP GCE001 firmware on target device

PhotoTelesis LP
San Antonio, TX
Aug. 2006 – Apr. 2008

High-performance Digital Imaging and Communications
  • Designed and implemented a Windows AVStream driver for a CardBus-based video capture card
  • Worked primarily in C++ using DriverStudio 3.2; some sample code and test code in C
  • AVStream filter provides a capture pin for an MPEG-2 Program Stream, a preview pin for raw video, and a crossbar filter for selecting one of three video inputs
  • Supports two simultaneous channels of scatter/gather DMA (one for preview video and the other for MPEG-2 data)
  • Assisted with hardware debug and integration with delivery platform and application software
  • The card also contains a serial communications device; created INF files for multifunction install (using the Microsoft MF.SYS driver)

Gamry Instruments, Inc.
Warminster, PA
Jun. 2007 – Oct. 2007

Electrochemical Instrumentation
  • Ported existing 32-bit Windows NT kernel-mode device driver to 64-bits
  • Also converted the driver from the Compuware DriverStudio Driver::Works framework to the new Microsoft KMDF framework
  • Ported 32-bit class installer to 64-bits

Chaos Game Engine
Loud Ant Software, Inc.
Portland, OR
July 2006 – Aug. 2007

Chaos Game Engine (for development of MMORPG games)
  • Work was primarily C++; LUA was used for some scripting
  • Client ran on Windows; used OpenGL for graphics, OpenAL and DirectX for audio
  • Server rans on Linux; used PostgresQL as back-end database
  • Project leader; acted as resource for programming team, assigned tasks, tracked progress, etc.
  • Analyzed performance of client start-up using Vtune; increased speed by 50%
  • Fixed build issues for server code on Linux (Fedora Core 5 and Debian 3.1), and got servers up and running for development use
  • Traced various database issues on server, using PostgresQL and related tools
  • Created and supported customer releases for the Chaos Game Engine

Cranite Systems, Inc.
Los Gatos, CA
May 2007 – Jun. 2007

Secure Mobile Networking Solutions
  • Work was in C and C++ on the Windows Mobile 5 platform, using Visual Studio 2005
  • Debugged a prototype port of the SafeConnect for Windows to the WM5 platform
  • Tracked down and fixed a host of porting issues (e.g. unaligned access, differences in driver implementation, and differences in NDIS architecure)
  • Got prototype working in time for demos to large potential customer

DataRemote Inc.
Ventura, CA
Oct. 2006 – Feb. 2007

Cellular Data Modems
  • Designed and implemented NT-style service, plus GUI configuration program
  • Service received reports from wireless modems, and updated DNS record if IP address of modem changes
  • Written in C++, using STL (plus ATL/WTL in the GUI)
  • Service used Microsoft DnsModifyRecordsInSet API function for DNS Update and Remove operations

Tactical Software, LLC.
Nashua, NH
Aug. 2002 – Aug. 2006

Virtual COM Port Redirectors
  • Ported driver to x64 (AMD64)
  • Researched Linux PTY implementation for Linux port
  • ODBC-based event logging system
  • COM-based configuration API
  • MMC snap-ins for controlling the TacServe serial port server and License server
  • Windows-based security in TacServe serial port server
  • License enforcement using UDP and OpenSSL Crypto library
  • Graceful (instead of abortive) TCP disconnect
  • Kernel-mode OpenSSL 0.9.7b
  • Asynchronous, multi-threaded, Winsock-2 based Windows NT Service
  • Fixed multi-threaded issues in License Manager service
  • Fixed SMP problems in client driver drivers
  • Work-arounds for differences in TDI on various versions of Windows (XP, NT, 98, ME)

Scotty Techology, Inc.
Atlanta, GA
May 2006

Video Phone
  • Project review for new version of video phone product
  • Reviewed status of new hardware, and the software to go with it

Cranite Systems, Inc.
Los Gatos, CA
Mar. 2006 – Apr. 2006

Secure Mobile Networking Solutions
  • Created export driver (a.k.a. kernel-mode DLL) containing common code

Corrent Corp.
Tempe, AZ
Feb. 2005 – Sep. 2005

Network Security Appliances
  • Designed and implemented a Windows NDIS Miniport Driver for a new dual-port Gigabit Ethernet Adapter
  • The adapter had on-board processing to support IPSec Offload and TCP/IP Checksum Offload
  • The driver was created by using an existing Linux driver as a reference; not strictly a port, but it did require an understanding of how Linux drivers work

Imera Corp.
Santa Clara, CA
Sep. 2004

Microsoft NetMeeting Pluggable Transport
  • Designed an implemented a pluggable transport for Microsoft NetMeeting which allowed access to the data stream for encryption and decryption
  • The project was completed well ahead of schedule and under budget

Scotty/Zydacron Inc.
Manchester, NH
Jun. 2004 – Jul. 2004

Video Conferencing Products for Windows 95/98/NT/2000
  • Reviewed development plan and schedule for new video conferencing codec board
  • Reviewed driver and system code to assess further schedule risks
  • Found and fixed a few driver bugs

Sentillion, Inc.
Andover, MA
Feb. 2004 – May 2004
Oct. 2003
May 2003 – Jun. 2003
Oct. 2002 – Mar. 2003
Acquired by Microsoft in 2010; transitioned to Caradigm, Inc. in June, 2012

Vergence Suite (strong authentication, single sign-on, context management)
  • Designed and implemented “Bridge” for legacy OASGold application on very short schedule, to support a customer demo
  • Designed and implemented “Bridge” for legacy ClinicalManager application (published from a Citrix server)
  • Adapter to allow LaunchPad to start, monitor, and control EPF in conjunction with the EPF Bridge
  • Pilot “Bridge” to allow legacy RIS Application Manager and Physician Desktop 1.0 to participate in CCOW context (completed in 3 weeks)
  • “Bridge” to allow legacy McKesson EPF to participate in CCOW context
  • C++ System Tray application using Vergence COM objects to implement CCOW
  • System-wide CBT hook, window subclassing to monitor events in EPF
  • FindWindow, FindWindowEx, SendMessage, PostMessage, AttachThreadInput, SendInput used to control EPF from Bridge

Avantware, LLC
Berlin, MA
Nov. 2003 – Mar. 2004

SccIP Network Service Provider (Internet-based serial comm.)
  • AvantWare is a consulting company under contract with Travellers Express/Moneygram; I was hired to address various problems in the client-side SccIP device driver, primarily a concurrency issue which resulted in lost data under heavy receive loads

Lexign, Inc.
Nashua, NH
Jun. 2003 – Oct. 2003
Sep. 2001 – Jun. 2002
Acquired by eiStream, Inc. in October, 2003; eiStream Inc. changed its name to Global 360, Inc. in January, 2005

Formerly icomXpress; formerly Keyfile, Inc.
  • Custom control using .NET (C++ and ATL 7.0) for KDS administation API
  • Ported 16-bit image display, annotation, print to Win32
  • Implemented Active Document Server (ADS) for display and annotation
  • Used IPrint interface to implement printing of compound documents
  • Fixed TIFF and CCITT Group 3 and Group 4 FAX decompression bugs

Dialout.Net, Inc.
Nashua, NH
Oct. 2001 – Oct. 2002

SccIP Network Service Provider (Internet-based serial comm.)
  • Ported OpenSSL 0.9.6b to Windows Kernel Mode
  • Windows kernel-mode TDI client drivers (Compuware/Numega DriverNetworks)
  • Wrote kernel code to modify routing table, listen for incoming connections, retrieve DNS servers
  • Added proxy server support (SOCKSv4, SOCKSv5, Web HTTPS Proxy)

Sophisticated Circuits, Inc.
Woodinville, WA
Aug. 2001 – Dec. 2001

Hardware and software for reliability, remote access, automation.
  • Windows WDM USB device driver for Kick-Off! product
  • Service to monitor hardware and OS
  • Control Panel Applet (CPL) to configure hardware and service
  • RPC interface for third-party integration

GeoTrust, Inc.
Wellesley, MA
May 2001 – July 2001

Internet identity, authentication, and security products

  • Microsoft Internet Explorer add-in COM objects
  • Browser Helper Object (BHO) to monitor navigation
  • ToolBand object with toolbar control to authenticate and display result
  • Explorer Bar InfoBand object hosting a web browser control to display additional details on request

Zydacron Inc.
Manchester, NH
Aug. 1996 – Apr. 2001

Video Conferencing Products for Windows 95/98/NT/2000

  • VxD, WDM, and NT Kernel Mode Device Drivers
  • TAPI 3.0 TSP and MSP
  • H.221 engine, supporting H.242, H.230, and HDLC.
  • DirectDraw, DirectShow, Video DMA, Win98 Kernel Mode Transport
  • NetMeeting 3 UI and IPluggableTransport; NetMeeting 2 T.120 Transport
  • RadVision H.323, RTP
  • H.261, H.263 parsing (for Microsoft’s Extended Bitstream Info)
  • Q.922, T.123, FECC
  • DTMF tone generation; NDIS WAN Miniport driver

Sonoma Systems Inc.
Marlborough, MA
Oct. 1999 – Apr 2001
Acquired by Nortel Networks Corp. in October, 2000

Sonoma Integrator
  • pSOS, Cygwin, Procomm
  • Flash File System
Sonoma Xchange PBX
  • Windows NT 4.0 Kernel Mode Device Driver for PCI Riser
  • SNMP Extension Agent
  • Remote Software Update Tool
  • System Monitor Service

Okena Inc.
Waltham, MA
Feb. 2000 – Jan 2001
Acquired by Cisco Systems, Inc. in April, 2003

Security products for Linux and Windows 98/NT/2000

  • VxD for Win9x, WDM Drivers for Win98/2000
  • Kernel Mode Device Drivers for Windows NT/2000

Factpoint Inc.
Burlington, MA
May. 1999 – Oct. 1999
Formerly NovaSoft, Inc.

Factpoint TrustValidator product
  • Browser Helper Object (BHO) for Internet Explorer
  • DDE client/server to monitor Netscape Browser
  • System Tray Icon object

Xevo Inc.
Marlborough, MA
Feb. 1998 – May 1998

Technology for Application Service Providers

  • Contributed technical and managerial expertise as company was forming
  • Produced prototypes and demos for prospective customers, investors

Network Engines
Randolph, MA
Sep. 1997 – Oct. 1997

MP-700 fault tolerant systems

  • Created a Software Development Plan
  • Evaluated SMX Modular RTOS; various SNMP Management Stations
  • NT 4.0 Service Troubleshooting

Telco Systems
Norwood, MA
Sep. 1996 – May 1997

Producer of network equipment

  • TELTRAC device simulator
  • Runtime error logging and exception handler subsystem
  • SNMP Agent DLL and Installer for Windows 95, NT 4.0

Work Experience (1980–1996)

Watermark Software Inc.
Slough, England
and Burlington, MA
Acquired by FileNET Corp. in August 1995; FileNET was acquired by IBM in October 2006

Founder; Director of R&D
  • Windows 3.1, 95, NT 3.51, 4.0

  • Manager and lead developer for Internet Product Development (ISAPI, Netscape Plugin)
  • Manager of Developer Services (PVCS, Atria ClearCase, builds, tools)
  • Project Manager for port of Watermark client to the Macintosh
  • Manager and lead developer for Watermark Image Server (NT SCSI Class driver for optical jukeboxes, folders, admin tools, backup/restore)
  • Manager and lead developer for Watermark Client (imaging, TIFF, annotation, OCR, display, printing, faxing, graphics import/export)

Keyfile Corporation
Nashua, NH
Keyfile became Internet Commerce Express (icomXpress) in April 2000; it was acquired in October 2001 and became Lexign, Inc. Lexign was acquired by eiStream, Inc. in October, 2003; eiStream then changed its name to Global 360, Inc. in January, 2005

Project Leader
  • Windows 3.0, 3.1 (16-bit)
  • TIFF 5.0, CCITT Group III and Group IV
  • Imaging, anti-aliasing, annotation, scan, print, fax
  • Source control (PVCS, T-Lib), software builds, install

Adra Systems, Inc.
Lowell, MA

Senior Software Engineer
  • 3D rasterization (AT&T DSP32C)
  • Tektronix 4109 display emulation (68K workstation)
  • MS-DOS coprocessor
  • Ports to VA GPX, Sun 3/60, and DEC workstations
  • SCSI driver for PC parallel port.
  • Mouse and tablet drivers for PC

Foxboro/Octek Inc.
Burlington, MA

Project Manager
  • Next generation Machine Vision System
  • OS9/68K, VME; MS-DOS, Magic/L
  • Hardware design and debug (Analog I/O, Frame Buffer, DSP boards)
  • Image processing microcode (TMS32020)
  • C Libraries for Image Processing
  • Demo applications for sales support

Infinet Inc.
Andover, MA

Senior Software Engineer
  • Network Management System
  • UNIX v7, BSD 4.2, Ultrix
  • Source control and system maintenance

Nixdorf Computer Corp.
Burlington, MA
Acquired by Siemens in 1990; Spun off as Wincor-Nixdorf in 1999

Project Leader
  • Multi-user word processing system
  • Data General NOVA, RDOS
  • Z80 Intelligent Terminals