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 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
- 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
|