Home

Overview

Skills

Recent Projects

Experience
At A Glance

History

Clients

Rates

Contact



Consulting Experience (1996–2012)

Alpha Flying, Inc.
Portsmouth, NH
Aug. 2011 – Present

PlaneSense Fractional Aircraft Ownership
  • Troubleshoot and fix various bugs in the Gantt Chart custom control used for scheduling
  • Gantt Chart 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

PC-based VME CPU Module
  • Create 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

PC-based VME CPU Module
  • Follow-on project to add features to driver for PCI-VME bridge chip developed previously.
  • Make driver more resilient to application mistakes.
  • Fix crash bug in VME interrupt generation code.
  • Implement 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.
  • Hardware is ARM7-based MCU (LPC2468). Software implemented in C using Keil MDK and RTX RTOS.
  • Rework original microcode for new product line (new boards containing new hardware and additional capabilities).

XEmbedded, Inc.
Ann Arbor, MI
Dec. 2009 – Jun. 2010

PC-based VME CPU Module
  • Follow-on project to add features to driver for PCI-VME bridge chip developed previously.
  • Extend 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.
  • Troubleshoot hardware lockup and flash CRC issues.
  • Fix 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.
  • Hardware is ARM7-based MCU (LPC2468). 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

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 is primarily C++; LUA is used for some scripting
  • Client runs on Windows; uses OpenGL for graphics, OpenAL and DirectX for audio
  • Server runs on Linux; uses PostgresQL as back-end database
  • Project leader; act as resource for programming team, assign tasks, track progress, etc
  • Analyzed performance of client start-up using Vtune; increased speed by 50%
  • Fix build issues for server code on Linux (Fedora Core 5 and Debian 3.1), and get servers up and running for development use
  • Trace various database issues on server, using PostgresQL and related tools
  • Create and support 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
  • Debug 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 receives reports from wireless modems, and updates DNS record if IP address of modem changes.
  • Written in C++, using STL (plus ATL/WTL in the GUI)
  • Service uses Microsoft DnsModifyRecordsInSet API function for DNS Update and Remove operations

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

COM Port Redirection Software
  • 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
  • Review 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 has 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
  • Review development plan and schedule for new video conferencing codec board
  • Review 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

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 conjuntion with the EPF Bridge.
  • Pilot “Bridge” to allow legacy RIS Application Manager 6.2.1.0 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<
  • Port 16-bit image display, annotation, print to Win32
  • Implement Active Document Server (ADS) for display and annotation
  • Use IPrint interface to implement printing of compound documents
  • Fix 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.)
  • Port OpenSSL 0.9.6b to Windows Kernel Mode
  • Windows kernel-mode TDI client drivers (Compuware/Numega DriverNetworks)
  • Modify routing table; listen for incoming connections; retrieve DNS servers
  • 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
1992–1996
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
1989–1992
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
1988–1989

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
1985–1988

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
1983–1985

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

Nixdorf Computer Corp.
Burlington, MA
1980–1983
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