Consulting services specializing in the design, integration and debugging
of complex software systems.
Embedded Databases
Designed and implemented the C++ and Java APIs distributed with the Berkeley DB (BDB) package for Sleepycat Software. This was a portable, maintainable and efficient implementation to allow C++ and Java programmers to have class oriented access to this popular embedded database. Assisted in various parts of the development, testing and software support for this database, becoming an expert in its use. Contracted directly with numerous companies using BDB to develop applications and tune performance. After Oracle's acquisition of Sleepycat, I continue to be an independent 'go-to' guy to solve BDB issues for companies worldwide, referred and recommended by both the Oracle Sales and Technical teams.
Cross Browser Applications
Consulted with Laszlo Systems to modify compilers to support recent versions (SWF9) of Adobe Flash language. Added cross platform compiler support for try/catch/finally, added line numbering support for debugging and error messages and addressed numerous other compiler bugs and issues. Improved documentation toolchain, picking up responsibilities from another developer on short notice, and completing an aggressive schedule for delivery of these components on time.
Windows System Programming
Consulted with ISS/Riskmetrics to create a framework for developing a large financial analysis application using Shell Extensions. This includes recognizing the need for and creating a test harness that can also be used for debugging the extensions. Implemented a Windows service for offloading CPU bounded parts of an analyst's workflow.
Internet Servers
Consulted with HighPoint to develop Hpx, a multithreaded HTTP server that arbitrates requests from Palmtop clients and web browsers to various grocery store databases, which may have widely different schemas. Written in Java, using JDBC, servlets. Refactored a large subsystem of the PatientKeeper server (in Java) to provide better modularity, throughput and maintainability. Added server support for various features, such as Code Edits to reject inconsistent patient charges, for PatientKeeper. Refactored and largely rewrote major portions of ISS's VoteX server (C/C++), introducing infrastructure changes to allow VoteX to run nonstop.
Internet Applications and Tools
Product architect and technical manager during development of two major products at SourceCraft. Designed an object oriented language and implemented an interpreter, debugger, C++ code generator and most runtime libraries for ObjectCraft, a C++ application builder on Win/NT and Win/95. Led a team that produced NetCraft, a Java application design tool from concept to shipment in 6 months, while simultaneously overseeing Japanese and English releases of ObjectCraft. NetCraft is built primarily in Java, and individual contributions include a UI builder that generates code from flexible templates, Java to C++ socket communications and the product installer.
Shared Libraries
Chief architect of shared library strategy for UNIX based systems at DEC. Ported a shared library loader to the Mips and Alpha platform to implement SVR4 shared libraries while retaining backward compatibility with OSF/1.0 shared libraries. Added and developed features and increased performance to make the new loader a successful part of the product line. Consulted with OSF to develop next generation shared library loader.
Language Tools and Extensions
Created extensions to a BASIC-like language for Cognex. Developed compiler components including an object file formatter to produce COFF and a.out outputs for Compass. Designed UNIX object file extensions for Teradyne, Apollo, HP, DEC to support dynamically loaded libraries, compressed debug information and position independent modules. Modified System V, Berkeley, Mips and OSF linkers and loaders to implement these features. Wrote a Java class file dumper for personal use.
Relational Databases
Created an XML driven database object manager for HighPoint, as well as a custom layer of database classes to extended the functionality of JDBC. Implemented a set of C++ access classes for ODBC and language features to support joining at SourceCraft. Added a database triggering mechanism in Java using JDBC at SourceCraft.
Palmtop Systems
Developed FlashDataMgr, a special purpose database library for reading and writing flash memory on a Palm Pilot for HighPoint. It features a two level cache, sorted indices, variable length records and consistency checking. All this within the rather bizarre restrictions of Palm Pilot coding. Changing the application from using the builtin Palm database to FlashDataMgr sped up the application and gave it access to high capacity flash memory.
Custom System Design
Designer of system software architecture and technical leader for developing a multiprocessor simulation engine with custom hardware in a joint project with Teradyne and Sequent. Selected compilers, wrote system libraries and modified UNIX linker. Key developer in integration and debugging of hardware, kernel and application. Designed and built prototype system using third party hardware.
UNIX kernels
At Bell Labs, made changes to various UNIX kernels to increase performance, add features. Built an overlay memory system to increase the address space in a PDP-11 UNIX system. Did system design, integration and application development. System administrator and toolsmith for a community of 30 developers.
Porting
Provided UNIX expertise at Teradyne in porting a large simulation system from VAX/VMS to a variety of UNIX targets. Ported numerous other programs including GNU emacs and gdb debugger.
User Interface
Created a syntax aware programmer's editor in Visual Basic for Cognex that highlights and navigates errors, automatically formats and indents code, supports breakpoints and compiles text to internal representation. Wrote and extended dialogs, property sheets and various kinds of views in MFC for SourceCraft.
Miscellany
Wrote product, performance and feasibility studies for various companies. Performed kernel modifications and wrote, adapted and debugged device drivers. Taught courses in LAN networking and C-shell programming. Developed and presented workshops on Berkeley DB architecture and performance. Invented various tools as needed on my own initiative: VMS tar tape program, miniature debugger, UNIX profiler replacement, test case reducer, several application specific test frameworks, httpd log file analyzer, flexible net proxy. Acknowledged in the Prefaces of The Standard C Library by P.J. Plauger and Applied C++ by Philip Romanik and Amy Muntz.
November 1996 - Present. Independent Contractor.
Numerous companies for Berkeley DB (BDB) consulting (2003 - present)
including:
New York Stock Exchange (SIAC),
Chicago Mercantile Exchange,
Nokia,
Motorola (China),
Siemens (China),
NextPage,
Ironport,
StorageTek,
CSB Systems,
Marconi,
Wachovia,
Telcontar
Laszlo Systems, San Mateo, CA (2007 - 2008)
Laszlo Systems home page
Institutional Shareholders Services, Gaithersburg, MD (2003 - present)
ISS (now MSCI/RiskMetrics) home page
PatientKeeper, Brighton, MA (2001 - 2003)
PatientKeeper home page
Sleepycat Software, Concord, MA (1997 - 2006)
Sleepycat home page
HighPoint Systems, Cambridge, MA (1998 - 2001)
HighPoint home page
Cognex Corporation, Checkpoint group, Natick,
MA (1996-1997)
Cognex home page
July 1993 - April 1997. Technical Lead and Manager, System Architect.
SourceCraft, Inc., Burlington, MA
January 1984 - August 1993. Independent Contractor.
Primary clients include:
Open Software Foundation, Compiler tools group, Cambridge,
MA (1992-1993)
Digital Equipment Corporation, UNIX language group,
Nashua, NH (1990-1992)
Hewlett Packard, Debugger group, Chelmsford, MA (1987-1990)
Compass, Inc., various groups, Wakefield, MA
(1987-1990)
Apollo Computer, Computer tools group, Chelmsford,
MA (1987)
Sequent Computer Systems, Kernel driver, Beaverton,
OR (1987)
Teradyne, Inc., Data group, Boston MA (1984-1987)
June 1979 - January 1984. Member of the Technical Staff.
Bell Laboratories (later renamed Lucent), RMAS group, UNIX
kernel developer, Columbus, Ohio.
Java (including generics, servlets, beans, JDBC, J2EE), C++ (gcc and MS), C, C#, Javascript, Perl, PHP, Ruby, BASIC, FORTRAN, PASCAL, LISP. Assembly language for DEC Alpha, Mips, M68K, X86, VAX and others. UNIX/DOS shells, makefiles, awk, yacc, lex. UNIX (BSD/OSX/SunOS/Solaris/SysV/HP/DEC/etc.), GNU/Linux (Redhat, SuSE), Windows/XP/2000/NT/9X.
Experienced with all these systems at the systems programming level and UNIX variants at kernel programming level. Familiar with network administration and system administration on UNIX/Linux variants. Familiar with web technologies and protocols, such as HTTP, HTML, XML, Flex, REST APIs.
Master of Science in Computer Science, Stanford University, 1980.
Bachelor of Arts in Computer Studies and Mathematics, Phi Beta Kappa,
Northwestern University, 1979.
World traveler. Professional trumpet player. I speak some
Spanish and Mandarin Chinese.