Extensive experience as a software engineer and architect with an emphasis on system architecture, J2EE distributed computing and database systems, and Unix/Linux.
Languages: Java, C++, C, Perl, HTML, XML (including XSLT), Unix shell scripting
Operating Systems: Linux (RedHat 5.2 through 9, Fedora, Mandrake 10), Sun Solaris, Compaq Unix, IBM AIX, HP/UX, Windows (XP, 2000, NT 4, 98, 95, 3.11)
Java J2EE Application Servers: IBM WebSphere, JBoss, Borland AppServer, Oracle OC4J
APIs and libraries: JDBC, SQLJ, J2EE EJB, Hibernate, various flavors of embedded SQL for C, RogueWave DBTools.h++
Servers: Oracle (8.1.5 through 9), IBM DB2, Postgresql, MySQL, Informix
Networking and Distributed Computing: SOAP (Java Axis 1.1), CORBA (Visibroker, Orbix), Java RMI, IP and UDP sockets, IP multicast, Java JMS, Tibco message oriented middleware (Rendezvous and financial suite), RogueWave Net.h++ (portal C++ sockets api), DCE, Encina
Java Packages: XML (Xerces – both SAX and DOM, Saxon (XSLT), Skaringa), Log4j, Axis, Regexp, Swing, JDBC, EJB, JMS, JTA & JTS, JAAS
C++ Libraries: RogueWave Tools.h++, Net.h++, Money.h++, Threads (Threads.h++, posix, Linux, Solaris and Windows)
Development Tools: Eclipse (2.x and 3), Borland JBuilder Enterprise 7, Visual C++, Borland C++, Sun SparcWorks C++, IBM xlC++, Gnu C++
Design Tools: Borland Together/Enterprise, Rational Rose
Methodologies: UML, OMT, Coad-Yourdon
Configuration Management: CVS, Rational ClearCase, SCCS, Continuus
December 2003 -- Present
BT Conferencing (a subsidiary of British Telecom)
Worked with another Team345 member (Dave Wood) to develop a Hibernate-based persistence architecture and framework for a rewrite of an existing teleconferencing system. Retooled the development organization with Eclipse and several other Java-based tools, and helped to deliver the system to production in a very short timeframe. Implemented a Xdoclet-based code generator for generation of redundant pattern code. Tools: Java JDK 1.4.2, Eclipse, Hibernate 2.1, Apache Tomcat 4.1, Oracle OC4J J2EE container, JDBC, Xdoclet, Ant.
Designed and developed a global security layer for BT Conferencing. Initially targeted for the SOAP interface, but also to be deployed company-wide.
Worked with Dave to develop a SOAP-based API for the system. Integrated Checkstyle into the project to provide code consistency and conformance to standards and best-practices. Implemented an Xdoclet-based code generator for the web-service deployment descriptor and a common service. Tools: Apache AXIS 1.1, Java JDK 1.4.2, Checkstyle, Xdoclet, Ant.
August 2003 -- December 2003
National Leisure Group
Part of a 3-person development team responsible for interfacing an existing system to a new service provider for an online vacation packaging system. This highly successful project involved a set a new modules in a JBoss application server for communicating via XML over https to the service provider. Total time from start to release was a little over a month. Tools used: XML, XSLT, Skaringa, JBoss 3.2.2, JDBC, Eclipse.
Developed a web-based administration tool for the above project. Tools: JBoss 3.2.2, Apache Struts, JSP, JDBC, Eclipse.
Developed a scaleable, fault-tolerant prototype for asychronously processing auto rental manifesting. Prototype used JMS to a local JBoss queue using a Hypersonic local database, and a MDB (message-driven-bean) to move messages to an Oracle-backed JMS queue when available. Tools: JBoss, JMS, Oracle, JDBC, EJB message-driven-beans
March 2003 -- June 2003
Foxboro, MA (offsite, onsite)
Developed a rules engine administration tool based on an existing prototype using JDK 1.4.1, Swing, JDBC, IBM DB2 and IBM WebSphere Application Developer Studio.
Developed complex rules for execution in server-side of web application using SQL (DB2).
March 2003 -- July 2003
Liberty Mutual Insurance Company
Portsmouth, NH (offsite, onsite)
Created code-generators used to generate C++ code for existing client applications to communicate via XML over Http (similar to SOAP) to servers. Generators completed in Perl and run on Linux and IBM AIX.
March 2000 -- Feb 2003
Blackstone Technology Group, Inc. (Now TurboWorx)
Worcester, MA (offsite)
Part of a 4-member Team345 team devoted to architecting and developing a high-performance grid/cluster computing solution for Biotech and EDA customers. The solution is all Java J2EE, and runs on Linux, Solaris and Windows.
Designed and developed a grid/cluster server called the “powersquid” that provides all persistence and task-tracking for the system. Server makes use of IP multicast for high throughput, close-to-realtime delivery of current object status. All persistence was done via EJBs and JDBC using Borland's AppServer. Designed and developed a high performance in-memory database for transitory data. Developed a client API to facilitate use from other services.
Created a set of SOAP based services for accessing grid/cluster resources. Implemented in Java using Apache Axis and Apache Tomcat. Included private UDDI server used for service lookup.
Tools: Borland Together/Control Center, Borland JBuilder 7, Java JDK 1.3.1, RedHat Linux 7.1 and 8, Solaris 7, 8 and 9, Apache Jakarta project products: Ant, Log4j, Xerces., Borland Visibroker, Team345 IP multicast package for Java.
June 1999 – present (ongoing)
Team345 consultant tasks
Designed and developed a Java IP multicast publish-subscribe package. This package has been released by Team345 under an open-source license.
Installation and maintenance of local and wide-area network (VPN) and several Linux server machines, including the webserver, mail server, and development and test environments.
October 1998 – June 2001
Londonderry, NH. (onsite/offsite)
Created XML DTD and tools for exchange of logical and physical electronic designs between vendor design products.
Architected an XML-based data pipelining hub to act as a data mapping and exchange tool between electronic design tools.
Built a Perl interface to the C++ system using Perl-SWIG.
Retrofitted object-model with several architectural enhancements in order to provide scalability, reusability and low maintenance costs. Enhancements included implementing smart-pointers for memory management, templated smart-lists that provide high-speed lookups and copy-on-write semantics. Development was done in Microsoft Visual C++ and ported to various Unix flavors.
Tools: Borland Together Control Center, Microsoft Visual C++, RogueWave Tools.h++, XMLSpy, Borland JBuilder, MS-Windows (98, NT), RedHat Linux, Sun Solaris, HP/UX.
February 2000 – June 2000
Exeter, NH. (offsite)
Created merger and acquisition SEC financial document intellegent parsing application for adding corporate financial information to a database
Tools: RedHat Linux, Perl
March 2000 – September 2000
Needham, MA. (offsite)
Upgraded web application (HTML, Apache, mod-perl) to use an Oracle database for storage of customer, vendor and transaction data.
Provided CTO-level consulting for technology direction.
Tools: Apache http server on Linux and Solaris, Perl, mod-perl DBI:Perl, DBD:Oracle, Oracle 8.1.5.
March 1999 – March 2000
Liberty Mutual Insurance Company
Portsmouth, NH. (onsite)
Part of the Customer Acquisition server team. Provided enhancements and performance improvements to the auto-insurance sales tool. Responsible for the development of RPC interfaces and development of server-side capacity and testing framework.
Designed and developed XML-based remote interfaces – both server and client-sides (Solaris, AIX).
Provided automatic generation of DCE RPC interfaces for clients and server via Korn shell scripts.
Worked with object-management team to develop higher-performance access to DB2 (on MVS) database. In many cases resulting in a 30 to 50% performance improvement (for code that has been in production for over 1 year).
Tools: IBM AIX, IBM xlC C++ compiler, RogueWave Tools.h++, Rational Rose, Perl, Korn shell, IDL, DCE, Encina, Continuus.
September 1998 – March 1999
Fidelity Investments – Enterprise Products and Services Division
Principle role on the architecture definition team. Defined an entirely new, enterprise-wide, distributed processing system for handling Real-Time market pricing data. A major issue on this project was insuring adequate performance. To alleviate this concern, Team345 (two of us were on this project) designed and implemented high performance simulation in C++ targeted to Sun's Ultrasparc architecture running Solaris 2.6 on multi-processor hardware. The focus of this effort was strictly on the distribution and communication aspects of the project. Underlying communication protocols of this effort were multicast UDP and TCP.
Distributed processing was acheived through the use of Tibco's middleware, The Information Bus (TIB). An Object-Oriented isolation layer was designed and implemented in order to wrap the Tibco 'C'-only API. This not only decoupled the application from future third party changes, but also presented a tailored interface specific to the local domain.
Reviewed existing requirements, developed a design document, produced C++ code, and provided extensive testing for the system. Most of the software developed was communciation specific (i.e. Messaging, synchronization, UDP). However, market feed handlers and client application simulations were also produced. Some market data analysis tools were also created in Visual Basic.
Designed and developed a generic distributed message-volume-testing tool.
Designed and developed a Perl-based tool for collecting stock-market data from various sources and correlating them in order to provide accuracy statistics. The tool was designed, developed and tested entirely on Linux (RedHat 6) and ported to Solaris for user testing.
Tools: Solaris 2.6, Linux (RedHat 6.0), Sun SparcWorks C++, RogueWave Tools.h++, Perl (5.x), MS-Visual Basic and Excel Basic, UDP datagram sockets, multicast, TibCo financial suite including ciServer, TIC, API, and tibRouter+.
December 1997 – August 1998
Liberty Mutual Insurance Company
Portsmouth, NH. (onsite)
Engineered a soft-transactions based high-performance persistence engine & code generator. Provides a cliean object-oriented interface to a relational (DB2) database running on a mainframe. Aproximately 250 C++ classes are generated using Rational Rose scripting (Basic); generated code compiles and runs on IBM AIX.
Developed a test suite for the persistence engine and generated code.
Tools: IBM AIX, xlC C++ compiler, RogueWave Tools.h++, C++ standard library, Rational Rose and Rose Basic, IBM DB2, Continuus configuration management.
1995 – 1997
LitleNet LLC (later changed name to OrderTrust)
Architect/Principal Software Engineer
Lead engineer for AppFramework - a multithreaded C++ framework for building electronic commerce applications. Provided an event-driven, message-oriented API for distributing applications. (Tools: Solaris, NT 4.0, Sun SparcWorks C++, RogueWave (Tools.h++, Money.h++, DBTools.h++, Threads.h++), Solaris, Posix & NT Threads, PureAtria ClearCase, TibCo Rendezvous, Informix, Rational Rose)
Modeled and built a CORBA-based solution for distributed architecture. Compared performance with message-oriented solution. (Tools: Solaris, NT 4.0, Sun SparcWorks C++, Iona Orbix, Tools.h++, ClearCase, Visual C++)
Designed and developed a framework for CORBA-based applications. Included an interface to the OMG trading service for locating network-based services by property-set.
Installed complete development environment (compilers, libraries and tools) on Solaris and NT for 60+ developers.
1994 – 1995
Litle & Company, Inc. (now FirstUSA PaymenTech)
Designed and built a high-performance transaction loader for credit-card transactions. Utilized parallel processing on a Sun SMP to achieve high throughput. (Tools: Informix 5.03, ESQL-C, Sun SparcWorks C, Sun Solaris, SCCS).
Built specialized credit-card chargeback application for client; Updated credit-card payment applications to reflect new payment association rules.; Built database-sampling utility for developers that would take an appropriate sample of the large transaction database for testing purposes. (Tools: Informix, ESQL-C, Informix 4gl, Sun SparcWorks C, SCCS, Solaris)
1988 – 1994
Keystone Mutual Funds (now Evergreen)
Team Technical Lead/Senior Software Engineer
Designed and built a mutual funds sales information system - an individually customizable and extensible GUI for both salespeople (telemarketers and field sales) and executives. 3 team members. (Tools: Borland C++, Windows 3.11, RogueWave Tools.h++ and zApp, Intersolv DataDirect ODBC Library, Novell Btrieve, Informix, Popkin System Architect)
Designed and implemented mutual funds reporting system. Provided automatic and manual generation of sales and performance reports. Client report-designer application ran on MS-Windows; server on Digital UNIX (DEC Alpha). 2 team members. (Tools: Borland C++, RogueWave Tools.h++ and zApp, Intersolv DataDirect, Informix 5.02, ESQL-C, DEC C++)
Designed and implemented an ordering and distribution system for sales literature. Consisted of a MS-Windows GUI client, Informix database, and a distribution server on a Digital Alpha running UNIX.
Designed and built a sales call-tracking system for senior management. Client built on MS-DOS; Novell Btrieve database server. (Tools: Borland Pascal, Novell Btrieve, MS-DOS, Novell Netware 3.1)
Designed and implemented a mutual fund information viewer. Provided current and historical fund information via a web-style interface. (Tools: Borland Pascal, MS-DOS, Novell Btrieve & Netware 3.1)
1988 College of William & Mary – Williamsburg, VA.
BA Economics, sequence in Computer Science
CORBA (Orbix), Rational Rose, TibCo Rendezvous and ETK, Informix, Rational ClearCase