Stephen Lee
Summary
● Highly qualified professional with over 15 years experience in the full life cycle of software development using agile
methodologies testdriven development, continuous feedback, refactoring and integration. Proficient in object oriented
design (OOD/OOA) using UML, Use case analysis, collaboration, and state and interaction diagrams. Possess expert
level programming skills in Java, C and C++.
Technical Skills
Languages: Java 7, C++, C#, Perl, Python, PHP, Shell Scripts, SQL, PL/SQL, Transact SQL, Flex, Scala
UI Development: Swing, SWT, VC++, dot NET, JavaScript, AngularJS
J2EE: RMI, EJB, JDBC, JNDI, LDAP, JMX, JTA/JTS
Operating Systems: Windows 2000, UNIX (Solaris), Red Hat Enterprise Linux
Servers: WebLogic, Websphere, WebMethods, Netscape WebServer, Apache, Tomcat, Tomee, Nginx, Nagios, Puppet
Web: HTML, XHTML, Javascript, JSP, ASP.NET, Webservices, Struts, JSF
SOA: WDSL, JAXRPC, CXF, JAXWS
Databases: Oracle, Sybase, Microsoft SQL Server
Tools: Maven, Ant, Jindent, ERWIN/ERX, OptimizeIt, Power Designer, Rational Rose, TogetherJ, Jira, CruiseControl,
Hudson/Jenkins, Crucible, Apache Commons SCXML
IDEs: Eclipse, RAD, JBuilder, MS Visual Studio, Visual Café, UML, RUP, Akka Scala
Messaging: JMS, SonicMQ, MQSeries, Talarian, Tibco RV, Websphere MQ, ActiveMQ
Middleware: Spring Framework, Hibernate, Spring Batch, Mule ESB, Castor, Ehcache, ObjectGrid, Gemfire
Rules Engine: JESS, Drools
Protocols: TCP/IP, FIX, SelectNet, SNMP, QuickFix
XML: SAX, DOM, XSL, XSLT, Castor, XMLBeans, SCXML
Cloud : IAAS providers AWS, Azure, IBM SoftLayer
Hypervisor :VMWare VSphere ESXi 5.5, VCenter Server
Professional Experience
Alpha Omega (aofs.com), San Francisco, CA, Architect/Lead Developer (Consultant)
09/13 –
Present
● Designed and developed an abstraction layer for transforming post trade messages to Java domain objects and vice versa
in a transparent manner such that different protocol providers and protocol versions for FIX and SWIFT can be
supported (Java, Spring, Hibernate, Tomee, QuickFix)
● Implemented messaging architecture using High Availability (HA) cluster, automatic failover and Message Groups,
which enables guaranteed ordering of processing, load balancing across an optimal number of consumers using a
message group partitioning based on specific attributes of the trade message. (Java, JMS, QuickFIX, Tomee, ActiveMQ)
● Implemented the production environment for post trade processing with HA clusters for messaging brokers, web traffic
load balancing between multiple instances of Tomee using Nginx, Fix Engines and databases. Configured and developed
Perl, Python and shell script plugins for Nagios for monitoring Windows and Linux machines. Also, installed and
configured Nginx for SSL reverse proxies to Tomee upstream clusters. (ActiveMQ, Nagios, Nginx, QuickFix, MS SQL
Server)
● Developed handlers for processing AllocationInstruction, Confirmation, ConfirmationAck, AllocationReport and
TradeCaptureReport messages in a STP fashion for both buyside and sellside post trade processing engines. (Java 7,
JMS, QuickFix)
● Developed REST Services for handling UI interactions in display and filtering of trades, linking of trades and
cancellation of trades. (Java 7, CXF, REST)
● Developed UI modules for the display and filtering of trades, forced matching,trade rejection and export using HTML,
CSS, javascript and AngularJS
● Implemented virtualization environment using VMWare VSphere ESXi and VCenter Server comprising of Linux and
Windows VMs.and automated deployment of application artifacts using Puppet.
● Evaluated IAAS hosting providers like AWS, Azure and IBM Softlayer and made recommendations based on support
for Messaging, RDMS, Security(IPSec, Network ACLs), Storage( Block, Object), Scalability(Auto scaling) , Bare Metal
Page 2
Server, VPC, Network connectivity(DNS), Monitoring and Disaster Recovery; provided detailed costing based on
different configurations.
● Developed a Finite State Machine (FSM) of the buyside post trade processing engine using both Akka Scala and Apache
Commons SCXML for the purpose of evaluating which of these will suit our requirements better.
● Develop, implement and deploy automatic infrastructure configuration management using Puppet for managing the
configuration and deployment of Nginx, Nagios, Tomcat, Apache, ActiveMQ and internal software applications for both
Linux and Windows platform.
JP Morgan, New York, NY, Senior Developer (Consultant)
01/13 – 09/13
● Designed and developed an abstraction layer based on the Apache Commons Chain of Responsibility framework which
is used in the Securities Lending matching logic to automatically match returned securities requests from borrowers and
lenders to eligible securities based on complex rules, criteria and allocation logic. (Java, Spring, Mule, Eclipse EMF,
EhCache, GemFire, JMS, Qpid)
● Designed and developed a service implementation for fulfilling request for the creation, update and cancellation of
borrowed Securities that were requested for return. (Java, Spring, CXF, Webservices, Mule, Eclipse EMF, JMS, Qpid);
developed a reusable Junit test used to bootstrap CXF webservices that is integrated with Concordian test framework
thereby strengthening the TDD process by providing additional test results artifacts that Business Analysts and Managers
can easily validate via Junits tests driven from HTML page and test results rendered back to HTML page.
● Implemented Compuware Dynatrace, which is a Performance Management tool, by evaluating performance criteria,
defined custom entry points, measures, incidents and integrating it with JMX monitoring.
VMWare/StateFarm, Bloomington IL, Senior Developer (Consultant)
02/12 – 11/12
In this position, I was responsible for the development of a request framework used in the processing of Insurance quotes,
application and change of insurance policies in a virtual cloud environment. (Mule, Java, Gemfire)
● Developed a cache abstraction framework that allows an application to easily switch to a different cache provider
through configuration without having to change application code. It also exposes an DAO layer that is configurable to
look in the local cache before doing a network search for the domain object in the distributed cache, before hitting the
persistence data store in the event that there’s a cache hit miss. (Java, Gemfire, Spring AOP, splunk)
● Developed business rules validation for search and summary feature set so that relevant search options specific to the
users line of business when procuring a policy quote for instance can be correctly persisted away for future retrieval.
(Java, Webservices, CXF, SOAP, splunk)
● Developed a framework for optimistic concurrency involving multiple access to the same payload using a versioning
technique applied to the payload of the cached information, therefore achieving high concurrency without restricting
access to the data if locking is used. (Java, Spring AOP, Annotation Processing, AspectJ)
Barclays Capital, Trade Capture Workflow, NYC, Senior Developer (Consultant)
09/11 – 02/12
In this position, I was responsible for the development of components used in the automated processing of Fixed Income
Derivative trades (Swaps, Cap/Floor, Options, Swaptions) as it goes from the initial trade input (Silverlight, C#, JSON,
REST, XFire), validation, enrichment, cash flow generation (Java, XFire, SOAP), persistence and transformation (Java,
XSLT, Saxon) to FpML compatible format for downstream systems for settlement in a STP environment.
● Developed an enhancement to the current system of transformation to FpML compatible format because of changes to
Trade representation schema in support of Fixed Income Rates derivatives products like Inflation Asset Swaps,
YearOnYear and ZeroCoupon Cap/Floors. This was implemented using Core Java 1.6, Spring, XSLT and Saxon.
● Developed booking, settlement and other enrichers for trade representing Fixed Income Rates derivatives Inflation
related products using Core Java and Spring.
● Developed enhancement to the trade persistence framework in support of Fixed Income Rates derivatives Inflation
related products using Core Java, Spring, AOP around advise on trade workflow action to effect the execution of pre and
post persistence committals actions.
CitiGroup, CITIDirect Project, NYC, Senior Developer (Consultant)
12/09 – 04/11
Page 3
CitiDirect is an online global banking platform that provides multiple banking functions like payments and disbursements
through a single secured access point. The underlying framework is make up of building blocks of technology stack that
enable the plug and play of services, which provides realtime access to transactional information, reports generation,
automation of banking activities, reconcilement and multicurrency transaction services. The aforementioned generic
framework is marketed as a whitelabeled product to other financial institutions.
● Designed and developed an autorefresh mechanism for object caching framework (ObjectGrid) based on object dirty
and aging rules. This was implemented using Spring Framework bean that subscribe, filter, aggregate and transform the
payload of Spring Events into TIBCO messages that are consumed by ObjectGrid refresher mechanism running on a
cluster of WebSphere J2EE Application Servers.
● Designed and developed an enhancement to object data persistency (JPA) backed by either Hibernate 2 nd
Level Cache or
ObjectGrid for nonJTA and nontransactional data persistence units. This is achieved via a parallel hierarchy of Spring
Framework beans involving various Entity Manager components, Persistence Units and DAOs.
● Designed and developed a Spring Framework based Integration Test harness for testing J2EE Messaging application
components consisting of JMS message producers and consumers using a locally defined Atomikos based Connection
Factories and message container. This test harness coupled with frequent automated build process, enables continuous
integration, resulting in better cohesive software that is less error prone.
● Designed and developed enhancements and abstraction to the Quartz Scheduling Framework running in a clustered
WebSphere environment, to support various complex rollover policies, job triggers definitions and listeners; JMX based
monitoring system to dynamically control job scheduling, job profile and workflow behaviors by using Spring’s
MBeanExporter, InterfaceBasedMBeanInfoAssembler, annotationdriven MBeans, MBean NotificationListener and
ConnectorServerFactoryBean for remote MBean based on RMI protocol.
● Designed and developed an Asynchronous Batching Framework for Payments and Receivables using Spring Batch as a
provider for configuring, launching, monitoring and rerun of jobs that execute in a J2EE environment.
Broadridge Financial Solutions, NYC, Senior Developer (Consultant)
12/08 – 12/09
● Provided technical leadership in the design and development of a fixed income liquidity seeking system to improve
trading and processing efficiency for MBS, ABS and CMO. This provides institutional investors and brokerdealers with
an anonymous negotiation model, whereby buyers submit stipulation requests for Fixed Income instrument attributes and
sellers post inventories from Broadridge’s IMPACT and MBSE systems settling via STP, thereby reducing risk. The
system is implemented based on J2EE running on Websphere clusters, collaborating with workflow logic to make real
time trading and routing decisions in a multitasking environment with a supporting cast J2EE components like EJBs,
MDBs, JMS MQ, Spring, Hibernate and Oracle.
● Developed the Controllers for the handling of GUI calls from JSF (Oracle ADF AJAX Framework); developed a generic
DAO layer using JPA backed by persistent data store (Oracle 10); designed and developed the database schema, queries
and stored procedures written in PL/SQL; devised and carried out Oracle database performance tuning strategies
particularly for large datasets using pagination for front end queries, in addition to Oracle’s data partitioning,
compression and materialized views; developed UNIX shell scripts to handle daily maintenance of trading operations.
● Designed and developed the security authentication, entitlement and preference system used to administer clientele and
traders that was written in core java. Specifically, I designed and implemented database schema, DAOs, GUI handlers
and the interactions with Broadridge’s Impact and MBS Expert Inventory Management System.
● Designed and developed a JMXbased monitoring system for managing trader profiles and system preferences using
Springbased MBeanProxyFactoryBean with a remote MBeanServerConnection so that remote MBean can be managed
as if they are configured locally.
JP Morgan Chase, NYC, Senior Developer (Consultant)
03/06 – 12/08
● Provided technical leadership in the design and development of a system to promote intraday data exchange between
multiple global enterprise applications, based on data consumers’ matrix of rules specifying how it wants its data to be
enriched, transformed, filtered and projected. These large datasets were throttled by PL/SQL stored procedures using
pagination in combination with Oracle’s data partitioning or materialized views. In general, the system uses an
enterprise message bus architecture based on WebSphere MQ operating in a network of WebSphere Application Server
Page 4
Clusters, with a supporting cast of J2EE components like Spring Framework, Hibernate, EhCache, Castor, EJB Stateless
Session Beans and MDB listeners which provided the endpoints implementation for content manipulations using
XPATH, XSLT and XSL. Using agile methodologies, I analyzed business use cases, and designed XML schema based
canonical data models, which were parsed against each consumer data requirements to derive its final form. This solution
enables plug and play of different frontoffice package; facilitates business and regional autonomy; permits Middle
Offices' consolidated client reporting and portfolio accounting and allows ease of integration of new line of business.
● Provided technical leadership and guidance in the design and development of a SOA based Security Entitlement System
for the global Investment Management resources. This system was integrated with SiteMinder for SingleSignedOn
authentication using dynamic client and server side Web Services Handlers pipeline. The endpoints were implemented
by EJB Stateless Session Beans, which delegate to service components objects that were Spring Dependency Injected,
which perform finegrained authorization enforcement via policy determination decision process through ORM layer
managed by Hibernate, which provided the 1 st
level Session caching and 2 nd
level caching provided by EhCache; Spring
based AOP pointcut handlers were defined for crosscutting security entitlement concerns; Spring based MBean
NotificationListeners were notified of security exception and work in conjunction with a priority based support
escalation workflow component to filter, dedup, transform and aggregate notification messages.
Bank of America, NC, Lead Java Developer (Consultant)
10/02 – 03/06
● As Project Leader for the Public Finance Technology Group, I was responsible for the development of solutions to
support the Municipal Bonds origination process, Auction Rate trading, and the taxfree trading desks. I analyzed the
requirements, designed and developed The Municipal website, and also the database schema implemented in Oracle to
enable the efficient recording, categorization, and characterization of the deal as it evolves to its final stage. This was to
facilitate fast and easy retrieval of deals and artifacts associated with the deal using customizable search options that can
be personalized, enabling the high reusability of artifacts saving invaluable time and money. The highly optimized search
was made possible by Oracle SQL tuning, pagination, data partitioning, compression of read only data and index tuning.
This solution was implemented using the cocoon framework of XML, XSL and XSLT components; the transformation
architecture was later ported over to a STRUTS framework on Weblogic implemented as Web Services endpoints
serviced by EJB Session Beans that were backed by service components dynamically injected during runtime by Spring
Framework. Hibernate provided for Object/Relational (Oracle) mapping. This project was iteratively developed with
continuous testing, user feedback, and integration using SDLC. Artifacts like Use Cases, UML, Collaboration and State
diagrams were produced as part of the SDLC deliverable.
● Designed and developed a scalable, multithreaded Trade Processor used to receive and process trade orders from the
Short Term Auction Rate Trading (START) system. This was written in Java, load balanced with fault tolerance using
JBOSS clustered library and contained in a lightweight container architecture integrated with Spring Framework and
Hibernate. I also designed and implemented reporting database in Oracle using data partitioning, and materialized views.
Linx LLC, NYC, Senior Java Developer
07/01 – 09/02
Linx’s mission was to improve the listed equity block trading market by providing an anonymous, confidential, electronic
blocktrading platform that would be integrated with the New York Stock Exchange.
● In this project, I analyzed block trading business drivers and financial models to determine technical architectural
requirements using Use Cases, UML, Collaboration, State diagrams; designed and developed the core Linx System
which used custom light weight J2EE container architecture providing shared services like in/outbound Fix Protocol
translation; XA transactions; threading pool; database connections; objects pooling and workflow management.
● Designed and developed the Frontend Trade Entry System in Java Swing. (Java, UML, TogetherJ, Rational Rose, J2SE
1.4, Swing, JNDI, JMS, JTA/JTS, JOTM, SonicMQ, JMX, RMI, JDBC, XML, DOM/SAX, Oracle, PL/SQL, JBuilder,
Jdeveloper, FIX, OptimizeIt, Ant, Jindent, Solaris Unix).
Page 5
Wofex Inc, NYC, Senior Java Developer (Consultant)
07/00 – 06/01
Wofex was to be an electronic equitytrading platform that provided a singular entry point and centralized seeker for
liquidity for institutional buyers and sellers of shares.
● Developed enhancements to the continuous matching logic for block trades of NASDAQ bound securities to find
liquidity for both sides of the equity trade. The architectural framework included reusable application objects for
security order entry, processing, order routing, clearing and settlement of equity trades and FIX Protocol translation.
This was to achieve the least cost/best execution, maximum liquidity and trade anonymity for buyers and sellers of
shares. (UML, J2EE, JNDI, JMS, Talarian, EJB, Persistent EJB Server, SQL, TransactSQL, Sybase, FIX, JBuilder)
GE Small Business Solutions, CT, Architect/Lead Java Developer (Consultant)
04/00 – 06/00
This division of GE Capital needed to build a web site (www.gesmallbusiness.com) that fulfills the objectives of centralized
support for the business and operational needs of its diversified small business partners and customer base. Requirements
included automated matching of customer needs and service partners' offerings; automated data collection for CRM
application; and automated allocation and distribution of commissions to partners.
● As a Project Leader for a team of 10 developers, my team was responsible for the translation of system requirements into
detailed design, working with business process/analysis team, 3rd party tools and product vendors on technical solutions
to build the web site in a J2EE platform. The architecture enabled session tracking that was closely integrated with
application level tracking and customer information management utilizing state management control flow object
methods, EJB Stateless and Entity Beans, in collaboration with application objects in JSP. (UML, TogetherJ,
RationalRose. (Java, Swing, JSP, Servlets, EJBs, WebLogic, JNDI, LDAP, TIBCO, Siebel, Oracle, SQL, PL/SQL,
Interwoven, HTML, XHTML, XML/XSL, XSLT, DOM/SAX, Visual Café, OptimizeIt, ERWIN/ERX, IPlanet, Solaris
Unix)
Singleshop.com, VA, Java Architect/Developer (Consultant)
01/00 – 04/00
This site offered the user the ability to do real time product search, comparison, order fulfillment and tracking from different
participating merchants using a then new concept of “internet wallet”.
● Analyzed, designed and implemented the core technology to enable realtime online searching, comparison, execution of
order fulfillment to partnered merchants using B2B communication protocols based on XML, in a J2EE
environment.(UML, Rational Rose, Java, XML/XSL, DOM/SAX, JSP, Servlets, WebMethods, EJBs, Weblogic, Oracle,
SQL, PL/SQL, HTML, XHTML, Swing, Javascript, Visual Café, IPlanet, Solaris Unix)
AT & T Herndon, VA, Lead Developer (Consultant)
01/98 – 12/99
AT&T wanted to build a Universal Account Management (UAM) platform to provide its customers with bundled services, a
level of integration they never had before by enabling personalized Web Sites for ordering, trouble shooting, usage tracking
and also to review and pay bills online.
● Produced detailed design specifications for the construction of the Billing Hierarchy of Customer Account structure and
service components, which formed the core engine.(C, C++, Oracle, SQL, XMotif, HPUX Unix, DecMessageQ)
● Designed and implemented the main portion of the Views and Controllers in an MVC (Model View Controller design
pattern) structured application originally written in C++ and latter converted into the EJB architecture in a J2EE
environment. (Applets, Swing, Javascript , JNDI, LDAP, JSP, Servlets, EJBs, Weblogic, Java, C++, JNI, HTML, Oracle,
SQL, Netscape WebServer, ClearCase)
● As a result of my work, I received an AT & T Excellence Award for “Leadership in using Object Oriented Technology”.
Dun & Bradstreet Canada, Senior C++ Developer (Consultant)
01/97 – 12/97
● Designed and developed the RAM (Risk Assessment Manager a top selling commercial product) core services and
made enhancements to the User Interface that formed the integral part of the Object Oriented Framework. (C++,
COM/DCOM, ActiveX, StingSoft’s Objective Grid, Codebase, Inso’s QuickView SDK, Crystal Report, InstallShield,
RougeWave, VC++)
Page 6
● Normalized the Database, designed and implemented Database Referential Integrity, Stored Procedures, Functions and
Triggers.(SQL, TransactSQL, Sybase)
EDS Canada, System Engineer
03/94 – 12/96
● Designed and developed Messaging System and Network Monitoring Processes for North America, which included
configuration tools, used to remotely monitor Microsoft Exchange Servers. As a result of this project, EDS gained
productivity and cost savings by consolidating Email into one (VB, Access, RPC, VC++, C, COM, Win32 SDK, ODBC
SDK, MS SQL Server, TransactSQL)
● Designed and developed a monitoring and reporting System in a distributed system environment for monitoring a
distributed Stock Brokerage Application, which was later used for global deployment. .(ERWIN/ERX, VB, Access,
VC++, C, COM, Win32 SDK, ODBC SDK, MS SQL Server, TransactSQL)
Education
Bachelor of Science, Computer Science, Brock University, St. Catharine