Contact: fmitchell at acm dot org
- Programming Languages:
- Operating Systems:
- Linux (3 years), Solaris (5 years); familiarity with basic Windows and Mac tasks.
- ATG 6.3.0 (3 years), AJAX (4 years), CSS (4 years), DHTML (4 years), e-commerce (5 years), J2EE (5 years), JDBC (6 years), JMS (3 years), JSP (8 years), RDBMS (19 years), Spring (3 years), Struts (5 years), Tiles (5 years), Tomcat (3 years), XML (11 years), XSLT (1 year).
- Ant (7 years), CruiseControl (9 years), CVS (10 years), Eclipse (5 years), jMock (5 years), JUnit (9 years).
Mar 2007 - Feb 2009: Senior Programmer/Analyst, Hotels.com, Dallas, TX
Implemented architectural improvements to Hotels.com’s primary e-commerce web application, and wrote support services for QA and production improvements, and wrote support services for QA and production infrastructure. Gave technical presentations on architectural changes. Also evaluated technologies like Terracotta and Ehcache to remove infrastructure inefficiencies. Specific tasks include:
- Wrote a web application that caches results from an Expedia development web service, and emulates the booking portion of the Expedia web services API. This application allows testers to isolate a particular data set with minimal effort, and avoids round-trip traffic to Expedia for Hotels.com performance and stress tests.
- Removed all Java-side EDI calls to AS/400s that once provided inventory, but now returned zero or error results. By removing these calls, I allowed Operations to decommission a block of AS/400s.
- Removed long-standing code dependencies on ATG Dynamo, in preparation for deploying the Hotels.com and Web Sales Entry applications on Tomcat or another J2EE-compliant servlet container. Eliminating ATG dependencies sets the stage for deploying code currently tied to front-end web applications into independent middle-tier or back-end services.
- Evaluated caching solutions for database and web service query results. Candidates were Terracotta, Ehcache, and a home-grown solution.
- Implemented a simple A-B test between the US Hotels.com site and an equivalent in Europe.
- Evaluated Jira as a replacement for a home-grown issue tracking system.
Aug 2006 - Oct 2006: Senior Developer, AeroXchange, Irving, TX
Technologies/Environment: Java, Tomcat, J2EE, JSP, Struts, JDBC, Ant, Eclipse, XML, Oracle DB
Technical Lead for Aero AOG, a B2B e-commerce website allowing one member airline to borrow, loan, buy, sell, or exchange airplane parts for grounded airplanes. Application consisted of Java Servlets and JSPs running on Tomcat against an Oracle database; environment used CVS, Ant and Eclipse.
Oct 2004 - Aug 2006: Senior Programmer/Developer, Hotels.com, Dallas, TX
Designed and implemented various components of the Hotels.com e-commerce ebsite, including tools for maintenance and administration. Hotels.com used servlets, JSPs and Struts/Tiles running in ATG Dynamo 6.3.0 but using a minimum of ATG APIs, against Microsoft SQL Server and various SOAP and EDI interfaces; development used MKS, Ant, and Eclipse. Advised architects and developers on technologies like JUnit and Ruby on Rails. Specific tasks include:
- Wrote guidelines and examples for unit testing standards, and acted as mentor for developers writing unit tests. Gave technical presentations on unit testing. Also generated metrics on the adoption and effectiveness of unit testing, via Cobertura.
- Implemented uniform in-memory caching library for web application, and common independent service to clear all in-memory caches on all application servers. This caching system could be tuned by editing a single configuration file.
- Implemented Struts actions and underlying data structures for the current Hotels.com “booking path”, based on designer-provided wireframes and HTML. The Booking Path comprises all pages after hitting the “Book It” button through the Confirmation Page. Entailed a number of tricky issues, including Fraud Detection, BillMeLater handling, bookings handled by sister sites, and duplicate booking detection.
- Evaluated technologies for use within Hotels.com, including Ruby on Rails, Cobertura, CruiseControl.
- Designed and implemented From-Price calculation services, used to update “From $xx.xx” text for all properties and marketing promotions.
- Designed and implemented image upload for marketing template system.
- Maintained various parts of the web application, as needed, including cache optimization.
- Wrote small tool to detect unused classes in the Hotels.com codebase.
Jan 2001 - Jun 2003: Senior Software Developer, Bang Networks, Inc., San Francisco, CA
Developed both incarnations of Bang’s Internet messaging platform: an Internet service to feed data from a proprietary Java API to a web page in real time, and a network appliance using a Java Message Service API to send data over the Internet. Both incarnations could feed messages to a DHTML web page through a Java applet, and both delivered data through firewalls and proxies. Specific projects and responsibilities include:
- Designed, implemented, maintained, and extended multithreaded client
portion of a client-server JMS implementation. Product implemented
standard Pub-Sub functionality, except for transactions and
acknowledgement modes besides
AUTO_ACKNOWLEDGE, but including Durable Subscriptions and Persistent Messages. Client capabilities ouside the JMS specification included transparent reconnection if the server connection was lost and HTTP Tunnelling through firewalls. Client implementation evolved over the lifetime of the product, including a complete rewrite of key portions.
- Designed and implemented two automated regression testing systems for Bang’s network appliance and client APIs, first using Python and system calls, then using the pure Java interpreer BeanShell and Java APIs.
- Introduced JUnit testing in organization in 2001, and acted as “unit testing czar”. Wrote support code for unit testing, such as “TestAll” test to discover and run other tests in the class path, and “mock server” for classes using client sockets. Also reviewed others’ tests, and optimized slow-running tests.
- Gave technical presentations on unit testing and other subjects.
- Implemented prototype server-side adaptor for Tibco TIB Rendezvous in network appliance. Adaptor subscribed or unsubscribed for TIB Subjects based on JMS subscriptions. Implemented modified JMS clients to subscribe for Initial Images from a TIC or RV Cache.
- Optimized server code using JProbe.
- Hunted down garbage-collection bug in network service software.
- Implemented and maintained build system using Ant.
- Installed and maintained CruiseControl as a continuous build system.
- Wrote or maintained clients for network product, including standalone Java subscriber library. Also contributed to applet-based subscriber using Dynamic HTML to update an HTML page, and standalone publisher library.
- Maintained client programs to distribute financial data over our network to customers of GovPX.
- Prepared demos for customers.
- Intermittently maintained internal documentation web site, and wrote documents on build and test procedures.
Jan 2000 - Dec 2000: Senior Software Developer, E*TRADE, San Francisco, CA
Technologies/Environment: Solaris, Java, J2EE, JUnit, JDBC, Ant, XML, CORBA
Designed and coded parts of a customizable financial portal site, using Java Servlets. Worked with designers, project managers, and other developers to produce a beta version of the site to demo to high-level management and E*TRADE. Also developed prototypes for Clearstation portal site. Specific areas coded:
- A module to map classes to relational database table. The subsystem read the mapping from an XML file, constructed JDBC PreparedStatements, and used Java reflection to create result objects and extract object property values. A similar subsystem to convert lists of objects to HTML tables was written, but never used.
- Integrated mostly-real time Destination E*TRADE portfolios into the pre-existing portfolio system. Our link to E*TRADE data was extremely slow, so we had to cache portfolio data persistently, and refresh the cache periodially.
- Portfolio detail pages, including graphs and company data.
- Pages for news and quotes, and adaptors for multiple vendor-specific news and quote feeds such as Reuters TIC.
- Optimized the site for speed and memory usage, by using small refactorings of existing code.
- CORBA servants to wrap database access and object-relational mapping, to achieve locational transparency and caching among multiple web servers. Servants were implemented using VisiBroker for Java.
- CORBA-based applet clients, and XML-based Flash clients, for streaming quotes into a web page.
Sep 1997 - Dec 1999: Member of Technical Staff, Sun Microsystems, Inc., Cupertino, CA
Technologies/Environment: Solaris, Java, Swing, Servlets, XML, Rhino
Designed and coded a variety of Java-related projects, using Swing, servlets, XML, and sockets:
- Developed parts of a 100% pure Java multidimensional spreadsheet application (JDK 1.1.5), based on Quantrix for NEXTSTEP. Specific components include a parser for cell input, an iterator for all cells in the multidimensional model, and tile bars and draggable tiles to project cells of an N dimensional model along the horizontal, vertical, or “depth” (i.e. nested) axes. Implemented an debugged other UI and model elements as needed to bring the projuct to alpha.
- Used Java servlets and XML as a data format to co-develop an in-house requirement capture system. Primary responsibility for code to parse XML, store requested records from disk, retrieve those records, and generate XML-based summaries.
- Developer on a 100% pure Java browser, a prospective successor to the HotJava browser, which was shelved after the AOL-Netscape-Sun alliance. Designed and began implementation of the subsystem which forwarded URL requests to the network layer and coordinated parsers, script interpreters, applets, plugins, and other content handlers to produce one or more object models.
- Project lead and principal developer for a bridge between Java classes and the Mozilla browser’s components, using Mozilla’s component model XPCOM.
- Project lead and principal developer for a bridge between the StarOffice object model UNO and the Mozilla component model (XPCOM), as part of an effort to embed Mozilla in StarOffice. Implementation underway.
August 1991 - August 1997: Assistant Vice President/Business Systems Analyst, First Chicago/NBD, Chicago, IL
Technologies/Environment: Objective-C, NEXTSTEP, OPENSTEP, NeXT/Motorola, NeXT/Intel, Sybase
Key developer, implementor, and maintainer of a trading system written in Objective-C for NEXSTEP running on NeXT, Intel, and HP hardware. The system, MOATS, started as an interest rate derivatives pricing application but was later extended to handle risk management and middle-office functions. Responsibilities and accomplishments include:
- Co-designed ClassInfo, a simple object-relational mapping from Objective-C to Sybase tables which translated load and save operations into standard SQL transactions, queries and updates. ClassInfo was similar to, but predated, NeXT’s Enterprise Objects Framework and Sun’s JavaBlend.
- Designed and implemented MOATS’s interest-rate trade object model; maintained and extended initial design to include exotic options priced via RPC calls to a remote server.
- Wrote spreadsheet interface to MOATS pricing functions and trade objects; the spreadsheet addin called a simple server to provide trade data and interest rates.
- Worked on-site with London traders and marketers to debug the system, and customize it for their needs.
- Developed initial implementation of Trade Processing subsystem, to tie MOATS trade data to back-office entries and enforce auditing rules.
- Maintenance, extension, and optimization of central subsystems including interest rate curves calculation, volatility interpolation, trade capture, trade pricing, ClassInfo (see above), and low-level infrastructure.
- Ported ClassInfo and low-level infrastructure classes from NEXTSTEP to OPENSTEP.
Jan 1990 - Aug 1991: Programmer/Researcher, Continental National Bank, Chicago, IL
Technologies/Environment: Sun Sparc, SunOS, C, Sybase
Implemented and maintained trading systems for the foreign exchange and fixed-income trading desks; all programs used C/UNIX on Solaris, backed by Sybase databases. Collaborated with users to debug programs, expand functionality, and improve performance. Specific projects include:
- Developed a foreign exchange trade entry and profit/loss analysis system.
- Wrote XView-based interfaces to update databases and data files for fixed-income securities application.
- Automated Sybase nightly backups and maintenance, and warm backups during the day.
- As system administrator from June to August, 1991, performed SunOS 4.x installations, tightened network security, and performed general troubleshooting.
June 1989 - December 1989: Programmer/Researcher, First Options of Chicago, Chicago, IL
Technologies/Environment: MS-DOS, C
Rewrote portions of the a PC-based program written in C with MS-DOS batch programs. Acted as “software librarian” for application source.
Bachelor of Science in Applied Mathematics, University of Chicago, Chicago IL, June 1989. (Note: U of C had no undergraduate Computer Science degree until 1988.)