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.

  • Advertising Sales Service

    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.

  • SOA Corporate Strategy

    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.

  • Financial Services Support

    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.

  • XML Performance Enhancement

    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.

  • Multimedia Server Architecture

    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.

  • Usage Accounting Security

    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.).

  • Patient Information Management

    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.

  • Online Aircraft Parts Catalog

    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.

  • Server Performance Enhancement

    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.