Ravi Varadarajan
Basking Ridge, NJ 07920
E-mail: ****.************@*****.***
Phone: 908-***-**** (home) 908-***-**** (cell)
SUMMARY
Senior software developer with 15+ years of experience in server-side development and adept in using new technologies
TECHNICAL SKILLS
Languages/Technologies: Java JDK 7.x, Scala, C++, C, JDBC, JMS, J2EE 1.2 (JNDI, JSP, Servlet, EJB 2.0), XML, XSL, LDAP, RMI, JNI, SQL 92, Perl, JAXB, SOAP, Web Services Developer Pack, Excel VBA, Adobe Flex, Ab Initio ETL, Crystal Reports
Agile Development Tools: Ant, J-Unit, Mockito, Jenkins, Sonar, Maven
Software tools: UNIX utilities (e.g. make, nmake, lex, yacc, awk, shell script), Eclipse, YourKit memory profiler, JProbe, Visual Studio 6.0, CVS, Clearcase, Subversion, Apache Axis2, Google Guava, Log4j
Operating Systems: Solaris, Linux, Windows.
Database Servers: Sybase, Oracle, Informix, MS SQL Server
App Servers/Frameworks: WebLogic 6.0/6.1, Apache Tomcat, Spring, Hibernate, Eclipse RCP, Eclipse Jetty, Gemfire distributed cache
Network Programming: TCP/IP/UDP and multicast sockets, Java RMI.
Messaging Middle ware: TIBCO Rv, EMS, IBM MQ, Active MQ, JMS
EXPERIENCE
July 2015 – Jan 2016 Senior Software Engineer (Contract)
Morgan Stanley, New York, NY
Project: OTC Equity Derivative Trade Capture
C# GUI with a distributed server architecture (Java and Scala) that allows traders to
book vanilla and exotic equity derivative products and manage their life cycle events.
Role: Implement enhancements with development primarily on the server side.
May 2011 – Vice President
Jan 2015 Citi Group Inc., Warren, New Jersey
Project: Citi Velocity Derivatives Clearing portal
This web portal allows external institutional clients and internal business users to track the
status of derivative trades as well as to monitor notional and risk limits on the trades
cleared by various clearing houses (e.g. CME, ICE, and LCH). The users can view
margin/collateral, end of day mark-to-market and reports. The portal also has “what-if”
functionality that allows the users to create fictitious trades and evaluate their impact on
the margin requirements of a portfolio for a specific clearing house.
Role: Technical lead (for off-shore team) and developer responsible for the full product
life-cycle and for resolving production issues.
Client side uses Adobe Flex technology while the server side uses embedded Jetty server written in Java.
Implemented trade and limit capture facility using Gemfire cache and EMS message listener for live messages.
Used multithreading and caching for scalability.
Implemented trade xml processing using JAXB.
Implemented Java RMI service to provide trade and data to the Jetty server that services web clients (specifically Flex)
Implemented Gemfire distributed cache client for fund account reference data and RESTful web service to get user entitlement details
Implemented a Java persistence service process using Hibernate to store and access trade and other reference data
Contributed to the development of the what-if service that incorporates a Tibco message queue for requests and responses related to margin calculations required by the what-if functionality.
.
July 2005 – Vice President
Apr 2011 JP Morgan Chase, New York, NY/Bear Stearns (merged with JPM)
Project: Price marking tool for credit instruments
This application (TraderFuse) allows bond and CDS traders to price the credit
instruments and send the CDS marks to ICE. This tool uses Eclipse RCP based GUI and Java
server in the back-end.
Role: Senior developer
Implemented enhancements to improve user productivity.
Project: Price entry and reporting tool for hedge fund derivatives desk
This tool allows middle office users to implement the work flow for entry, approval and
signing off Fund NAV data. This tool is written in C# and uses Java server to implement the
work flow logic.
Role: Technical lead as well and the sole developer of many frameworks.
Implemented a middleware application (“Integration engine”) using Java SDK that allows different types of clients (e.g. Excel, C#, Java) to perform retrieval, processing and update of data from different sources. It has pluggable and reusable state-less service modules which can be chained together in a hierarchical fashion to process a request. Built-in modules include: (a) DB service module for retrieval and transactional update of data, (b) Generic cache module to look up data in configurable caches with periodic reloads, (c) Modules to perform union and join on data sets retrieved from different sources, (d) Module for journaling data updates. The engine supports JAAS based authentication and authorization as well as JMX based web admin interface to monitor engine resources, user sessions, etc.
Used NIO sockets for communication and multithreading for scalability in the Integration engine.
Implemented VBA XLA module that contains simple APIs for communicating to Integration Engine from Excel clients using Winsock and supports XML and CSV formatted messages.
Implemented Reporting framework in VBA for display of various report data sent by the Integration Engine. It provides VBA code automation to retrieve and display data for various reports. It is used by the Global Funds Reporting System which allows the Hedge Fund Derivatives desk to view the fund exposure, scenarios and guideline reports across all regions
Implemented channel framework in Java for abstraction of synchronous and asynchronous data transmissions using different communication protocols (e.g. JMS, socket). This is used by the price entry tool.
Project: Trade capture and risk reporting for structured hedge fund derivatives using Calypso.
This application uses Calypso Java platform and allows users to enter derivative trades with an underlying basket of hedge fund subscriptions. The user can enter NAV prices and subscriptions and redemptions for the constituent funds, price the trades and generate various risk and covenance reports.
Role: Technical lead as well as a major contributor.
Implemented DB Manager that performs persistence operations with Object Relational Mapping using queries described in XML configuration files. Query specification allows recursive pre and post loading of children objects and specification of attribute names in hierarchical notation (similar to JSP-EL).
Implemented Calypso Data Model and Java components for implementation of trading and pricing functionality for various Structured Hedge Fund Derivative products using Calypso, a vendor derivative trading platform.
Implemented a Calypso engine that dynamically creates snapshot records for the valuation of Structured Fund Derivatives on a daily basis. It listens to trade events, fund subscription/redemption events, fund NAV change events and cash events that change the leverage of the client’s investment. Snapshots are used for replay of events and during recovery of the engine. It has two innovative features: (a) an event time scheduler that guarantees the execution of scheduled events prior to execution of any external events that succeed in time-order and (b) replay of events from a specific date due to modification of earlier events that often happen with fund management.
Dec 2003 – Vice President
June 2005 Merrill Lynch, New York, NY
Project: Proprietary equity trading system
This application allows traders to implement strategies and to view the equity positions and
their mark to market values.
Role: Senior developer
Developed many Java components used in Portfolio and Proprietary trading software tools such as Position Keeping Service.
Designed and implemented a channel and messaging Java API for communication between different services of an application server. Provided specific implementations for TCP (using NIO socket channels), TIBCO, IBM MQ and In-memory queues for communication with Order Management System
Implemented a TIBCO based Position Publish Service in Java. It uses the channel framework outlined above.
Implemented a JNI Bridge that provides easy access to numeric libraries implemented in C/C++ such as NAG; this has been employed for optimum portfolio liquidation. .
March 2002 – Senior Software Consultant
Dec 2003 Ameritrade, Jersey City, NJ
Project: Alert Manager
This service allows Ameritrade users to receive notification on stock price alerts and also
trigger stop orders based on these alerts. It supports self-modifying rules such as needed for
trailing stop orders.
Role: Lead developer
Designed alter server architecture which consists of alert registrar, quote listener, rule evaluator and trigger components
Implemented alert registrar, rule evaluator and trigger components in Java using multithreading and blocking queues.
Implemented efficient data structures to support fast real-time evaluation of rules, which may be of the order of 100000 or more.
Implemented mechanism to fail-over to a hot backup server.
Implemented a Java library to provide an admin interface for Java server applications using
JMX. This library is based on MX4j open source implementation of JMX and is customized to support features for Http adapters such as attribute menu drop downs and XML encoding of result to be used in xsl templates. Customized JMX management console (MC4j) to provide a standard management console for Ameritrade order routing platform.
Project: NADAQ order router
This process routes orders entered by the user to be routed to NASDAQ
Role: Sole developer
Designed and developed a Java application that listens to new NASDAQ quote stream and publishes the extracted information in a proprietary message format to different service provider applications that are used within the organization.
Implemented a gateway application for transmitting trading orders sent by trading applications through NASDAQ Supermontage and transmitting back execution reports and other responses. This gateway implements message conversion and message persistence and also provides fail-over capability.
Feb 1999 – Principal Software Engineer,
Nov 2001 InterWorld Corporation, New York, NY
Project: InterWorld Commerce Exchange (CE)
This is an application framework for B2B and B2C sites that can be hosted on J2EE compliant application servers (WebLogic and WebSphere)
Role: Lead developer
Designed and implemented Object Model and the Persistence Engine that implements ORM. The implementation was done successfully in a short period of time using WebLogic 6.0.
Designed and implemented the persistent object model framework that includes Java primitive object types and collection types. This object model also supports generic Entity beans with Bean Managed Persistence.
Implemented data access layer of the persistence engine using JDBC 2.0 API (data sources and connection pools) and JNDI. The persistence engine supports complex relational to object mappings and query strategies. Caching is implemented to improve performance.
Project: Search engine for e-commerce sites
This component integrates textual search with the server.
Role: Sole developer
Implemented a C++ component that integrates with Fulcrum textual search engine. This runs on both NT and Solaris platforms.
Implemented Pre-processing of key word terms to facilitate implicit and explicit Boolean (AND, OR) searches as well as searches based on linguistic filters (spell checking, synonyms) performed by the search engine.
Implemented a mechanism for switching search requests transparently between primary and secondary search data sources to allow online preparation of search indexes as well as for fail-over.
Implemented refined and navigational (series of refine/back track steps) searches required in B2B commerce sites. Implemented multiple active searches (whose results can be browsed independently) for a user session as required in many B2C commerce sites.
Sept 1997 – Member of Technical Staff,
Feb 1999 ITM-PRM Department,
Lucent Technologies, Holmdel, NJ
Project: Network provisioning tool
Role: Senior developer
This product facilitates telecommunication service providers to do provisioning for the
design and installation of telecommunication links and facilities between offices.
Implemented new features required in the Order Management and the Link design component of the PRM product. These tasks involved programming in C++ and Oracle Pro*C for database access.
Contributed to the integration of PRM product with an in-house Operational System product using an ORBIX CORBA server.
Solely developed a flexible tool for parsing and automatic conversion of Oracle PL/SQL stored procedure code to efficient Pro*C client code; this tool can be customized for translation between different C-like target languages.
Feb 1995 – Principal Software Engineer,
Aug 1997 Informix Software Inc., Menlo Park, CA
Project: Database Replication product
This product allows Update Anywhere Data Replication across many instances of Informix
Online 7.X data bases.
Role: Senior developer
Technical lead of the project (involved 4-5 developers) that involved the design and development of hierarchical data routing between the servers and efficient support for data replication in the mobile environment.
Responsible for implementation of the queuer and network interface components
Project: Informix SMP cluster prototype
This prototype was done to evaluate the scalability of shared all Informix server cluster.
Role: Technical lead
Implemented enhancements in of concurrency control, buffer management and other mechanisms of Online 7.2 server so as to operate in a SMP cluster environment. This prototype has been implemented in C on a 64 bit UNIX platform and extensively uses the Informix multithreaded library (similar to POSIX thread library) and Distributed Lock Manager.
Evaluated performance scalability of the prototype with OLTP workloads.
July 1993 – Associate Professor,
Feb 1995 Department of Mathematics and Computer Science,
University of Puerto Rico, Rio Piedras, PR
Taught undergraduate and graduate computer science courses and conducted research in parallel and distributed processing.
Recipient of the Scholarly Productivity Award ($5000) by the NSF EPSCoR program in Puerto Rico.
Aug 1987 – Assistant Professor,
May 1993 Computer and Information Science department,
University of Florida, Gainesville, FL.
Taught several graduate and undergraduate courses including structured programming design, operating systems programming, data structures, analysis of algorithms, parallel algorithm design and computer architecture.
Conducted research in parallel algorithms, distributed databases, load balancing in parallel and distributed systems and computational geometry.
Published many papers in refereed international conferences and journals. Supervised 3 PhD. dissertations and 4 MS theses.
EDUCATION
PhD. in Computer Science (August 1987)
University of Pennsylvania, Philadelphia, PA.
Master of Science in Industrial Engineering (December 1979)
University of Texas at Arlington, Arlington, TX.
Bachelor of Engineering (with Honors) (June 1978)
University of Madras, India.
WORKSTATUS
US Citizen