An experienced software engineering professional and author with a high level of expertise in web technologies, and a proven track record of using current technologies to bring software products from inception to deployment.
Pace Americas, Inc.
—
January 2011 - present
Responsible for the direction and implementation of the web-based user interfaces for the line of Pace gateway and set-top hardware.
Pioneered moving processing off the low-power gateways, and onto client systems, by the use of a RESTful API and client-side templating.
Technologies used include JavaScript, Ajax, HTML, CSS, jQuery, Java, JavaBeans, Java Servlets, JSP, JSTL, EL, et al.
Rêv Worldwide
—
July 2010 - January 2011
Responsible for the implementation and delivery of a set of web applications creating a global network designed specifically to facilitate world-wide end-to-end payment solutions.
Technologies used include Java, JavaBeans, Java Servlets, JavaServer Pages (JSP 2.0), JSTL, EL, Ajax, HTML, DHTML, XML, JAXB, JAXP, XML Schema, JAX-RS, Hibernate, and more.
Univa UD
—
October 2008 - July 2010
Responsible for design and implementation of the family of web applications and web services that make up the Reliance product line. Includes multiple GUI web applications as well as a RESTful web service API that publicly exposes the underlying operations.
Technologies used include Java, JavaBeans, Java Servlets, JavaServer Pages (JSP 2.0), JSTL, EL, Ajax, HTML, DHTML, XML, JAXB, JAXP, XML Schema, JAX-RS, Hibernate, and more.
Works.com
—
July 2002 - October 2008
Responsible for design and implementation of the web application infrastructure used for the Works.com Payment Manager, Card Manager, ActivePay, and other enterprise-level, high-volume web applications. Further responsibilities include: delivery of application features, training and mentoring of engineering staff, usability analysis, in-house training and educational materials.
Technologies used include Java, JavaBeans, Java Servlets, JavaServer Pages (JSP 2.0), JSTL, EL, AJAX, HTML, DHTML, XML, more.
Digital Motorworks, Inc.
—
February 2001 - July 2002
Responsible for the architecture and delivery of the Digital Motorworks Sales Assistant Web Application; a CRM tool for automobile dealers. Led a team of java web developers and coordinated with corporate shared resources to add new and enhanced features to the application on an ongoing and frequent basis. Hands-on role responsible for delivery of technologies from the user interface to the backing relational database. Also responsible for a set of related server tools (daemons) providing back-end, concurrent processing for the application data.
Technologies used include Java, JavaBeans, Java Servlets, JavaServer Pages (JSP), HTML, DHTML, XML, Java RMI, JavaMail.
Agillion, Inc.
—
March 1999 - February 2001
Responsible for the design, architecture, coding and delivery of the User Interface for the Agillion CRM Web Application. Led team of three web developers, an interaction designer, a graphic designer, and production artist (served as Acting Manager of this group for a time). Hands-on role responsible for the delivery of JavaBeans, JSP pages, JSP custom tags, DHTML, HTML and XML components.
Technologies used include Java, JavaBeans, JavaServer Pages (JSP), HTML, DHTML, XML.
BMC Software
—
November 1997 - March 1999
Responsible for the design and development of database and data migration tools and utilities for the Windows 95 and Windows NT platforms. Also responsible for internal intranet tools used in project tracking and management.
Technologies used include HTML, CGI, JavaScript, MFC, OLE Automation, COM, and other 32-bit Windows sub-systems and standards.
Dragon Systems, Inc.
—
October 1996 - November 1997
Responsible for the design and development of speech recognition tools and utilities as part of Dragon System's NaturallySpeaking suite of speech recognition products for the 32-bit Windows platforms. These tools are used to adapt the recognition engine's vocabulary and language modeling user speech files in order to tune them to a speaker's specific dictation topics.
Contributedto development of other utilities and applications within the product, and provided much of the digital artwork (icons, splash screen bitmaps, easter egg photos, etc.) used in the application.
Technologies and tools used include Visual C++, MFC, OLE Automation, COM, SAPI, and other 32-bit Windows systems and standards.
Co-inventor of United States Patent 616737: "Speech recognition language models".
Lightbridge, Inc.
—
March 1993 - October 1996
Responsible for the architecture, design, and development of the object-oriented implementation of Lightbridge's proprietary client/server network operating system and related components. Extensive coding in C++ of various multi-platform, production-quality applications for the Windows 3.1, Windows 95, Windows NT, Digital UNIX, RS6000/AIX, DEC ULTRIX, VAX/VMS, and OpenVMS platforms.
Highlights include directing the object modeling, design, and implementation of: An application framework class library to easily and quickly create programs that plug into the company's proprietary client/server network operating system as servers; an object-oriented SLR parser generator and parsing engine; an extensive class library of low-level, reusable C++ classes to serve as a base library for all object-oriented projects; and a variety of Windows-based user-interface-intensive projects requiring extensive data validation, using Visual C++ and the Microsoft Foundation Classes. ODBC and DAO classes were utilized to connect to PC relational databases.
Digital Equipment Corporation
—
July 1979 - February 1993
Responsible for system-level planning, design and implementation of a wide variety of software components in ANSI C for the OpenVMS and UNIX platforms, as well as technical leadership of the DECforms for OSF/Motif product (a multi-platform User Interface Management System).
University of Massachusetts/Lowell
—
June 1984 - November 1997
Adjunct faculty in the Graduate Electrical Engineering Department responsible for the development and instruction of such courses as: Systems Programming, Data Structures, Compilers, Assembler Language Programming, Programming Languages, Advanced Programming for VAX/VMS, various specialized topics, and the Seminar in Electrical Engineering. Served as faculty advisor to Master's Thesis candidates.
This resume site is a small J2EE web application utilizing Java Servlet, JavaServer Pages™ and XML technologies.
All formats of this resume, be it HTML, PDF or the other available formats, are derived from a single content source in XML format.
When the web application is loaded, the XML source of the resume document is parsed using a SAX parser and converted into an EL-friendly proprietary-format document object model. This model is cached at application level for future reference.
This cache is sensitive to the timestamp of the XML file, and will reload the document from file automatially if the XML file is updated. This allows changes to be made to the document content without the need to restart the application context.
A dispatcher servlet mapped to the pattern '/as' helps to keep the URL's readable. This servlet uses the remaining path info to determine the format to render (HTML, PDF, and so on).
How each format is rendered is as follows:
HTML:
A scriptless JSP page references the cached resume using JSTL tags
and the EL to produce the HTML output.
XML:
The raw XML source is served with no rendering.
PDF:
Portable Document Format
is produced using the services of
iText, a Java-to-PDF
library created by Bruno Lowagie. The resume document object model
is traversed, and the iText API is used to generate the PDF.
The response context type is set to allow the file to be displayed in whatever PDF reader is available on the user's system; usually Adobe® Reader® on Windows, or Preview on Mac OS X.
Word:
For Word, the services of iText are once again leveraged. The same document
layout as used for the PDF format is generated, which is serialized as RTF
rather than PDF.
The content type of the response is set such that Word is launched to display the result, if available. The file may also be saved to disk at the user's discretion.