Detail oriented software developer with experience building real-time security trading systems. Recent development efforts involved building middle tier infrastructure with ASP.NET Web API and ADO.NET for an electronic health records system.
- Proficient in C under .NET
- Experienced writing Web API controllers version 1 and 2 and ASP.NET MVC
- Full life cycle business application development experience with strong architecture, design, and development skills
- Proponent of SOLID design principals
- Able to use design patterns such as: Dependency Injection, Decorator, Factory, etc.
- Strong database development skills using MS SQL Server and Sybase
- Currently independently developing applications using AngularJS, Twitter Bootstrap, and node.js
- Experience as small development team project lead
- Professional verbal and written communication skills
- Developed numerous repository classes utilizing both Entity Framework and ADO.NET in the data access layer and model factories to transform the data entities to and from data models.
- Developed a C proxy library that wrapped the HttpClient class allowing clean access to Web API controller from a C client or other controller.
- Utilized LINQ with .NET collections and ADO Datasets.
- Designed several data base schemas for various apps using MS SQL Server 2008.
- Skilled at troubleshooting and finding bugs during QA phase of projects.
Senior Software Developer
Software developer for the desktop portion of an institutional retail order trading system called ARIES which is used by 50 traders and support personnel. Sole designer, coder, and release manager of this product since January 2008. The system handles both listed OTC orders and allows traders to route slices of these orders to the street through various trading strategies.
Projects successfully completed:
- Aggregation unit separation Programmatically separated traders into cash and retail aggregation units from a single firm unit and presented a view to traders of order activity and position data based on the trader's unit visibility. Then in a second phase, modified the system so that any number of aggregation units could be added and assigned to traders solely through table driven configuration changes.
- Pair trading Wrote screens and frontend infrastructure to facilitate pairs trading. Loads target/acquirer pairs and price information and allows traders to create pairs, modify parameters and activate and deactivate orders. The target/acquirer order legs are displayed as one merged row in the order blotter.
- Share location When a sell order is sliced while the aggregation unit position is negative the server sends a locate message to ARIES. ARIES allows the user manually enter or query the locate server for shares and then automatically resubmits the slice request with this locate information.
- Optimized performance of market data subscriptions Modified code to subscribe for market data only when an order for particular stock was received instead of pre-subscribing to stocks. Also reference counted a stock's subscriptions so only one request would go to the server the subscription would be removed when no users referenced it.
- Trade correction Wrote a component to allow mass trade correction by loading trade modifications from an excel spread sheet. Support personnel can then interact with loaded trade modification requests, and submit to sever in batch. This saves support from manually entering possibly hundreds of changes by hand.
- Ported the frontend to C /.NET 2.0 Replaced many internal collections with generic type-safe collections.
- Other tasks - Implemented major modifications to many components of the institutional order management subsystem, like adding a slice view to the blotter, creating new request formats and routing slices of orders to various strategies and creating hot button panels on the order browser window. Wrote or redesigned several windows for static data maintenance, such as symbol maintenance.
Further responsibilities include:
- Speaking with traders to identify problems with trading system.
- Working with support team on release scheduling, bug investigations, creating intra-release patches and translating and implementing trader requested enhancements
- Working with QA to explain and organize testing
Senior Software Developer
- Designed, programmed, and certified trade clearing processes for all Lava ColorPalette.NET clients. Wrote clearing interfaces to several clearing firms including: Bear Stearns, BofA, Southwest, Pershing and Beta. Implemented code in C with ADO.NET using SQL stored procedures. Code concisely books principal, riskless principal, agency, customer cross and mixed-capacity orders as well as allocations. Code compresses street side executions based on configurable parameters to minimize client clearing charges.
- Wrote a buy side options order server in C , which processes single and multi-leg orders. Multi-threaded server maintains order and execution cache and persists and deserializes these entities. Interface to sell side order server is through a FIX gateway via message queues. The server communicates with client frontend applications via tcp sockets. Accepts orders from clients, routes them to the sell side order server and applies returned executions to the orders, then notifies client with order state changes.
Consultant with Hudson River Software
Designed/developed software for a newly released product called MXLib, which extends the capabilities of TimesTen by providing infrastructure for creating high-performance transaction processing applications. Coded in C on Windows Unix, primarily on the client and middleware layers. Rewrote portable Tibco Rendezvous based middleware layer increased throughput by 30 percent. Helped design transport independent interfaces for middleware layer, allowing the implementation code to be modified without need for client recompilation. Designed/created COM client components that cache data present it to the user, as well as components that initiate transactions.
Consultant - System Architect/Programmer
Researched and developed a proof of concept application for a proposed replacement to a message switching system for UBS Warburg. Utilized the Microsoft .NET remoting platform to develop a multithreaded web service that exposes a transactional queuing interface to the client. Code is written in C and makes extensive use of ADO.NET and SQL Server. Developed displays using Infragistic's UltraGrid and SyncFusion's EssentialTools.
Consultant with Hudson River Software
- Developed NT workstation components for a new NASDAQ order management system at Fleet Securities, Inc. Wrote ATL and MFC COM components using Visual C .
- Led workstation GUI developer. Designed/created numerous data displays using Stingray's ObjectiveGrid, contained in ActiveX controls.
- Designed/wrote the workstation data client data access layers of the system. Utilized ADO disconnected recordsets to develop a flexible, high-speed data cache. Recordsets were created at runtime according to the display object's requested data source, Level1 or LastSale etc. as defined through XML files. Recordsets offered a simple standardized inbound/outbound interface to the display. This made it possible for the display writer to access a real-time data feed with minimal coding, allowing more time for the visual aspects of their displays.
- Created a proof-of- concept application with the group's business analyst. It was presented to upper mgt traders at meetings to demonstrate the objectives of the new system in respect to layout the use of visual queues, etc.
- Rewrote several workstation components under .NET in C . Utilized ADO.NET Datasets for data caching. Developed displays with .NET DataGrid and Window Forms and created several GridColumnStyle derived objects. Used existing COM object from .NET to talk with Tibco data feed.
- Optimized an XML based benchmarking program that measures the system's TimesTen database performance
Consultant - Programmer/Analyst
- Led workstation GUI developer. Wrote over a dozen market data displays, including Market Monitor, SelectNet Order, etc., utilizing Stingray's ObjectiveGrid.
- Developed ActiveX and ATL COM components for NDB's new NASDAQ trading system installed on 150 workstations. Developed on front-end under Win NT using Visual C . Wrote the client-side data access caching layer of system utilizing an OLEDB provider. Wrote the data client level of the system, implemented as an ATL COM object. Wrote a configuration manager object to translate XML configuration files, also using ATL COM.
- Key member of project to develop an NT based front-end to an existing order management system. Created an expandable Order Rack display from which orders can be modified and transactions executed. In a similar manner, developed a Pending Order and Open Order display.
- Installed and customized a Securities Trading and position-keeping system, called Fidessa, at HSBC Bank. Worked primarily on the back-end of the system, called FTS, running on a Sun UNIX machine. Assisted client in designing and creating a Sybase static database, which feeds Fidessa real-time database. For instance, designed proper trading book structure. Sized product's real-time database tables position, instrument, counterparty, etc. . Sized and created Sybase database, which is fed from the real-time database and used for reporting. Configured system to update these Sybase tables.
- Designed and coded several Crystal Reports displaying position data, such as realized P L, average price net position and daily trade activity including trade date, price, volume and exchange rate, etc. Wrote various watch processes to react to system events, such as saving information about a trade when it breaches a predetermined position limit. Installed upgrades and patches to Fidessa. Modified configuration files and regenerated system after modifications. Responsible for day-to-day system operation during three-month user acceptance period. Produced weekly status reports and attended weekly project status meetings. Wrote design specification for an interface from Fidessa to an existing back office system. Supported customer in various areas of system testing, such as, volume testing, failover, and P L calculation verification.
Senior Systems Analyst
- Developed various parts of a middleware product written for Swiss Bank. This product provided a persistent queuing paradigm for use in creating high throughput transaction processing applications. Wrote a Microsoft OLE automation interface in C to this product's programmable queuing objects. This enables simple access to the system from automation controllers using scripts written in languages like Microsoft WordBasic or Delphi's Object Pascal.
- Wrote a lock manager for Advent's middleware product in C that mediates access to the various resources of the product. Use of the lock manager allows for locking that maps more directly to the queuing objects than the underlying database structures thereby promoting increased throughput. Wrote client interface to the database access component of middle-ware system using Microsoft Open Data Services ODS and Visual C .
- Wrote a customer profile maintenance application for customers of this system using Borland Delphi 2.0 accessing an MSSQL database. Worked on a project that developed a Letter of Credit system for a major international bank. Developed forms and reports using PowerBuilder. Helped to develop a component library in PowerBuilder, which was used in the development of several financial applications at a major financial bank.
Senior Systems Analyst
Designed and coded a transaction history relational database and database server for a SWIFT message switching system running on an IBM RS6000 under AIX. Database allows update and inquiry capabilities for current day transactions as well as inquiry capability for a configurable number of previous days. The interface to the database server consists of an update and an inquiry queue, implemented with TCP/IP sockets. The database supports range retrieval on keys defined in a parameter file interpreted at runtime. Access routines are written using native C I/O calls, i.e. lseek, read and write. The indices are maintained as m-ary b-trees whose nodes are paged from memory to disk and back when predefined memory thresholds are reached.
Consulted in New York's Transaction Processing Resource Center. Analyzed, configured and tuned customer Rdb/VMS relational databases. Aided sales support by sizing systems proposing hardware and software solutions to Digital customers. Efforts involved defining business needs and performance goals then using Digital sizing tools based on TCP benchmarks, proposing TP solutions that satisfied these requirements. Act as liaison between DEC various NYC customers to resolve software support problems with Digital's OLTP products.
Designed/coded a translator tool called Liberator used to migrate IBM/CICS code to Digital VAX. Translator uses a command syntax tree automatically generated from CICS command definition statements. Emulated CICS routines using DECIntact a transaction processing monitor and VMS system service calls. Programs were written in C. Support all company products. Debugged and modified various routines in the queuing and file management subsystems of DECIntact. Worked with Digital engineering to convert INTACT to DECIntact at Digital's facility in Marlboro Mass.