|
|
I've been participating in Internet-related development projects since 1995.
The projects have covered a range of applications from sports information
distribution to medical monitoring systems, and have involved all major aspects
of Internet technology. Many projects have been concerned with performance
issues, where I've generally taken the approach of evaluating the data flows
through the system to find the bottlenecks, and then addressed the problem areas
with design changes. This approach to performance has allowed me to solve many
seemingly intractable problems, in one case increasing the
performance of an enterprise-critical distributed system by a factor of greater
than 100 times in order to meet delivery requirements.
This page lists my major commercial projects
over the last few years. It does not include many other projects where I've only
consulted on particular aspects of the project without taking on a major
development role.
-
Worked with client lead personnel to implement a Web services interface to
existing mainframe applications supporting advertising sales. To best meet their
requirements I designed a flexible structure for the XML message exchange,
allowing them to return the equivalent of dynamically generated rowsets from a
client query. In order to improve performance for clients accessing the server
over low-bandwidth lines we later extended this structure to support merging
multiple column values into a single XML element per row of the response. This
change resulted in a several times increase in throughput. Advised the client on
transitioning to a SOA architecture supporting both their internal applications
and those of partners.
-
Worked with the architecture team for a leading financial services company to
design and implement an architecture for their Web services requirements over
the next two years. Developed extensions to the Apache Axis Web services
framework to work with JiBX data binding for fast and flexible conversions
between external XML representations and internal object models. Designed and
developed tools to automate the processes of building the Web services clients
from WSDL descriptions, and enabling Enterprise JavaBeans (EJBs) as Web service
providers. Mentored client personnel on the proper use of Web services in a SOA
context.
-
Assisted development team for a time-sensitive contract development project
with both technology selection and actual development efforts. My technology
evaluations included database persistence, message queuing, and XML processing
areas. Development efforts included XML message queuing, timer-based scheduling,
configuration-driven code for processing a variety of financial transaction
records, and overall system configuration through an applet front end to a
servlet manipulating XML configuration files for the entire server cluster.
-
Commissioned by the manufacturer of an XML processing appliance to analyze
and improve the performance of the Java interface. The original implementation
used standard XML text document exchange between the XML appliance and the
application systems, resulting in a high communications overhead that largely
negated the benefits of offloading processing to the appliance. I designed and
implemented an improved interface using a binary-encoded XML representation,
resulting in a several-fold increase in performance and making the appliance
much more attractive for use with Java applications.
-
Worked with CTO and senior development personnel in a startup company to
establish an application architecture supporting high throughput and
availability for online presentations. This company provides mass-market
multimedia capabilities, so performance is a critical concern. The selected
architecture provides essential growth potential in terms of both features and
scalability. I implemented the server portion of the architecture using open
source tools and platform.
-
Architected a secure authorization and usage tracking system for a Java Web
Start (JWS) application that allows limited offline operation with periodic
reporting to server. This system uses both public key and private key
encryption, as well as digital signatures for client usage authorizations
constructed by the servers. Implemented the security architecture using MySQL
database for tracking all usage information, including invalid access attempts.
Configured secure deployment of Java server on Linux production systems, using
both operating system features (iptables, chroot) and Java server features
(authentication and authorization via database, etc.).
-
Designed and implemented combined HTTP servlet, JavaServer Page (JSP), and
TCP/IP socket system for controlled printing of medical records on dedicated
printers. Investigated and programmed PDF output generation from XML as supplement to
browser display of information, allowing consistent cross-browser printing of
records. Worked with partner company to specify a direct XML servlet interface
to backend medical record retrieval systems, then implemented and tested the
interface using XSLT to convert between internal XML formats and the external
interface.
-
Participated in the design and development of an interactive illustrated parts
catalog for aircraft. The catalog presents full assembly breakdowns and parts
reference information, all in the form of XML, customized for each model,
customer, and individual aircraft.
I provided expert assistance on the overall architecture, and also implemented
search facilities and automatic linkages to web sites supplying related information
for each part.
-
Led the restructuring of a mission-critical Java application to meet
performance requirements. This distributed application was intended to process
tens of gigabytes of text per system per day and be scalable to at least tens of
systems, but was falling dramatically short on both these goals. I worked with
the client company to analyze system data flows and
measure the performance of key subsystems, and to implement the changes
I recommended based on information collected. Through design changes and
limited code rewrites to enhance performance we achieved more than a 100
times improvement in base performance while also gaining scalability. The end
result exceeded the original performance goals for the application.
|