Michael Cowperthwaite

Accel Biotech (Now a subsidiary of Ximedica.)

Development in C# of image-processing for a customer instrument, recognizing 2D barcodes on microscopic glass beads. The bead positions are correlated with a fluorescent intensity map, providing keyed detection of potentially hundreds of biomarkers in a single image. Image processing was built on the AForge library and included a custom high-performance (unmanaged) variance filter. Also implemented full support for 16-bit and monochrome PNG image file I/O under Windows.

Development of a multithreaded library in C# to provide a simple device API for customers of Accel's AsysTek™ USB motor and thermal control boards. Library software includes a unit test suite, using the Visual Studio Unit Test Framework and the Moq mocking library.

Key team member in facilitating customer meetings and technical documentation, including requirements collection, project documentation, and scheduling.

Support of legacy client project, addressing problems with custom AC generator board control and interprocess communication between control system (in Python) and UI client (in C#).

Lead software developer for high-resolution slide imaging system with 40X microscope and 300um stage resolution. Architecture of an instrument library, in C#.NET, used by both an engineering GUI program and a web-server responding to a remote browser client. Implementation of an extensive array of camera-control and image-processing techniques for autofocus and sample imaging. Numerous algorithmic approaches to maintaining focus across the slide. Control software objects for strobed LED, distance sensor, and barcode reader.

Contributor to client's FDA submission documentation, including extensive work on the FMEA and FTA, Software Requirements Specification, and Software Design Document.

Assumed and completed development of a customer system, in Java, to control reagent delivery in a tissue-imaging system. Ported the AsysTek™ motor control code (and tests) to Java; implemented a simple 3-axis fluid-delivery robot integrating to a multi-port syringe pump. Reviewed and updated the existing protocol library for complete coverage of the fluid processes described in the product requirements.

C# wrapper library to a centrifuge API, as part of a larger multi-component plate handling system.

Ventana Medical Systems

Development of a generic, multithreaded device framework in C++, utilizing Boost.ASIO. The extensible framework supports various communications channels as well as devices that are controlled via an API. Framework development included a suite of unit tests.

Development of a uniform image-filter interface, to handle simple adoption of different transformations of camera data before display or transfer.

With the above framework, implemented an interface for a scanning microscope and robotic slide-handling system, based on dual motor control boards. Devices were implemented as plugins; emulating plugins were also developed, to allow exercising client software without needing to be connected to the instrument.

Implemented plugins for the above instrument controlling two separate cameras, one a triggered CameraLink Bayer camera operating at high magnification and one a wider-field USB-controlled RGB camera. In addition to the basic functions (live video, captured to file), the macro camera dumped its data into a shared memory pool for processing by a consolidating client application. Implemented automated calibration routines to optimize exposure time and white balance for each camera.

Created a set of filters, using high-performance IPP functions, to provide alternate views of the cameras, including views to highlight saturated pixels and to separate the Bayer quadrants into individual quarter-frame panes.

Encouraged the adoption of improved development techniques within the group, such as using development branches within the version control system, developing unit tests early in the process, and a formal code review process.

Lathrop Engineering (Now a subsidiary of the Paramit Corporation.)
Additional work at Lathrop (in-house) included:

Development of a multi-platform device-control system, with the same software compiling and running under both Windows and Linux. Used as a basis of controller program to drive an in-house (proof-of-concept) robot project. The three-axis robot interfaced via RS-485; the only platform-specific code was the internals of the serial-communication object.

A proof-of-concept embeddable web-server, in Python, for an instrument with a limited physical interface. The browser presented instantaneous feedback via an AJAX-like technique. (AJAX-like because the system used JSON rather than XML.)

Support for customer projects with in-house test programs (in LabView). Instituted a LabView class hierarchy for custom devices.

Provided patch to OpenCV, the open-source image-processing library, fixing multiple problems with the Hough Circle Detection function.

Instituted development tools environment using Subversion and Trac.

Precision Instrument Design (P.I.D. is defunct.)
Specific tasks performed at P.I.D. include:

Development of a LabView-based control system for a high-precision quality-assurance instrument, measuring the circularity of large ceramic disks.

Numerous enhancements to an existing laser surface profiler used to characterize carbon-tube deposition.

Beckman-Coulter (This branch of Beckman was formerly part of Sanofi Diagnostics.)
Specific tasks performed at Beckman include:

Proposed, designed, and implemented a sizeable refactoring in the database object subsystem. Performed numerous other consolidations of duplicated code. Eradicated one of the seven different string classes used in the system; enhanced another to integrate improved wide-to-narrow character functionality (this was preliminary work for eventual full Unicode support).

Resolved numerous memory leaks and system-crashing bugs as part of a concerted pre-release stability-bugfix marathon.

Instituted streamlined code-review methodology.

VISX, Incorporated (VISX is now owned by Abbot.)
Specific projects worked on at VISX include:

Technical lead for implementation of a stereoptic eyetracker used to steer the laser beam to follow movements of the pupil: design and implementation of tracker device and coördination objects; of the beam-steering criteria within the treatment sequencer; of the tracker UI, utilizing proprietary input and indicator devices and a high-performance on-screen tracker monitor indicating the pupil center. Primary responsibility for generation of the eyetracker software requirements. Directed one other engineer; closely interacted with the Research scientist running the project.

Technical lead for porting the Windows 3.1 surgical application to an upgraded platform (Windows NT 4.0), maintaining a common source pool for 80% of the codebase. Directed four other engineers.

Undertook major refactoring of the treatment algorithms library to implement a consistent, virtual interface to each of the object hierarchies, to lay the groundwork for planned expansion, and to consolidate duplication of code and functionality.

Technical lead for development of the NT-based UI and algorithm library for a new instrument with non-standard input (i.e., no pointing device, minimal keyboard, limited display resolution) and an entirely different beam-delivery apparatus. Consolidation of requests and requirements from various sources into the requirements document; development of prototype software; creation of the design document; and final development. Contributed to architectural design of near-real-time hardware control server process and client surgical applications, interacting via NT's IPC mechanisms such as shared memory and pipes; also contributed to design of NT device driver for the new digital/analog system board. Directed two other engineers.

Project manager for development of the first production release of the instrument, managing the very dynamic requirements list and scheduling the efforts of four other engineers over the nine months of development.

Design and implementation of the object model of the instrument's hardware components: optics motors, excimer laser, and various small devices such as valves, lamps, and fluorine-leak detectors; these devices are controlled via the system digital & analog I/O board, serial port and vendor-supplied DLLs. Integration of the objects into the Windows 3.1 environment to provide reliable interrupt servicing and uninterrupted device polling. Design and implementation of the surgery sequencing object and the safety interlock object.

Development of pre-treatment energy calibration, daily system calibration and system self-test routines, including the user interface. Development of hardware diagnostic application programs. Design of system hardware calibration program.

Substantial contributions to the writing, compilation and proofing of the software documentation package submitted to the FDA for medical device approval, including the Requirements Specification, Design Description, and Hazard Analysis documents.