Professional Experience

Full Time Jobs

LMAX Group
Senior Software Developer
June 2023 - Present
A global financial technology company which operates multiple institutional execution venues for electronic foreign exchange (FX) and crypto currency trading.
CLS is an industry initiative to eliminate the settlement risk in foreign exchange transactions. By settling trades immediately you reduce risk of to one of the parties defaulting. This project focused on allowing currency instruments to be marked as eligible for CLS if both settlement parties had such a relationship in place. In such cases those trades could be excluded from daily risk calculations, allowing for a trading member to complete a greater number of trades before hitting their risk limit.
VueJS Java MySQL
Increased the performance of market data. Found bottlenecks using profiling and benchmarking of the mark data feed. Used a probe to stream FIX messages to a separate process and used histograms to calculate inter-message timing statistics. Added these latency results to a performance tracker UI to have a real-time view of the effects of code changes on the latency.
VueJS Java
Adding features and expanding testing for LMAX's cryptocurrency custodian portal. The portal is three interfaces, divided by platform, member, and customer. Each has its own set of features focused toward LMAX's operations team, clients, and individual users. Each interface has its own separate api gateway that share a collection of backend services.
VueJS Java MySQL gRPC
WalletConnect is a protocol that enables digital wallets and DApps to connect. Our goal is to allow holders of Pyth on the LMAX Custodian to vote in governance.
VueJS Java
A separate venue within the exchange that is configured for price check (last look) functionality. Makers provide quotes to the execution venue instead of firm pricing. This allows makers to reject matches or execute a trade.
Java
Adding support for Ethereum custody. Required spinning up an Ethereum node, writing a monitor to watch for contract creation and transactions in tracked addresses. Initially support Eth native and ERC20 tokens.
Java MySQL
Time Weighted Average Price spreads an order out into a number of smaller orders over a given time period.
Java
Automated Mining Operations Software
Founding Engineer
May 2022 - April 2023
Startup focused on developing applications to help mining companies meet their MSHA regulatory requirements. First releases were focused on workplace safety and equipment training.
Designed and bootstrapped a new mobile application for mines and quarries, focusing on critical regulatory functions such as tracking operator training and daily equipment inspections.
Golang Dart Flutter Postgres SQLite
Configured and maintained Gitlab CI/CD pipeline to build, version, test, deploy, and conditionally promote services through three environments.
GCP Docker
Bootstrapped multiple supporting frameworks for the team, including database migrations on both the server-side and mobile app, error handling, logging, and the initial OAS documentation.
Golang Dart Postgres
Created backend for React web app that enables users to query MSHA’s weekly data and compare violations and other safety statistics across comparison sets configured by the user.
Golang GCP Postgres
Designed and implemented data synchronization between the mobile app and backend server via an offline queue to ensure seamless coordination between users working at the same site.
Golang Dart SQLite Postgres
Incorporated Firebase push notifications to alert users of dangerous conditions and upcoming regulatory deadlines and to trigger background processes in the mobile application.
Golang Dart Firebase Postgres
Developed backend of a console for clients’ safety officers to configure their user, training, and inspection data. Ability to generate PDF documents from existing inspection and training data.
Golang Postgres
Engineers supporting the mobile app need to be able to see the logs and current state of the database on the device. We have added an method for users to push their device's logs to our servers, where we can read them at our leisure. We've also added a way to directly upload the database to our google cloud storage, as those files are too large to do it via api on our backend servers. We use a signed url, which is a pre-authenticated url generated to upload a file to a specific location in cloud storage. The signed url is sent to the device, when then uses it to upload the database file.
Golang GCP Dart Javascript
Automatic Data Processing / Lifion
Senior Software Engineer
September 2019 - May 2022
Software Engineer
October 2017 - September 2019
As a member of the Lifion Identity Management team, I was responsible for security of user accounts, authentication, federation, and session resolution for a large metadata driven human resources platform.
Implemented impersonation functionality, allowing support team members to act as specific users, which led to a large reduction in issue resolution time and faster bug fix turnaround.
NodeJS MySQL DynamoDB
Developed email, SMS, and voice call mechanisms to step up users to a higher level of assurance. Implemented access control based on level of assurance, providing higher security for sensitive data.
NodeJS MySQL DynamoDB AWS
Designed and implemented a rules engine that applied policies based on client configuration, allowing clients to differentiate authentication methods across user groups.
NodeJS MySQL
Allow European Union users to request that their data be removed from the system and provide support functionality to perform those actions.
NodeJS MySQL DynamoDB
Implemented the ability for long running processes to request refresh tokens that would allow a session refresh if the process ran longer than session expiration.
NodeJS MySQL DynamoDB
Developed a search framework that could be configured by database model to paginate records based on specific fields and ordering.
NodeJS MySQL
Designed and implemented functionality to lock users out of the system until specific conditions were met. Only pages and apis required to meet the obligation were available to the user.
NodeJS MySQL DynamoDB
Designed and implemented a feature toggle system and an admin console to manage configuration, which enabled incremental rollouts and was adopted by multiple teams across the organization, allowing immediate rollbacks of problematic features.
NodeJS DynamoDB
Developed a Java service, using Spring Boot, to handle SAML responses, allowing our platform to integrate with legacy and external systems and enabling the sales team to target additional clients.
Java Spring Boot NodeJS MySQL DynamoDB
Expanded on the SAML Java service to handle SAML requests, allowing our platform to become an identity provider for other applications across the company and external clients.
Java Spring Boot NodeJS MySQL DynamoDB
Credit Suisse
Software Engineer III
January 2015 - October 2017
Software Engineer II
May 2013 - January 2015
Developed and maintained Java web services and C# desktop applications for persisting OTC derivative trades to multiple data stores, and conditionally triggering downstream events
Led team in the creation of automated regression and integration testing tools that significantly reduced the need for QA testing on multiple legacy applications. This saved days of testing time each release.
Java Teamcity
Our persistence service was heavily coupled to external services, which made automated testing difficult. Refactoring to introduce dependency injection allowed testing of code changes on the local workstation, saving hours per change. This also enabled greater unit test coverage by enabling the mocking of external services.
Java
Project to add support for commodities trades into an existing trade store, with the goal of decommissioning third party product Endur. This saved the firm over $2 million a year by enabling the continued trading of profitable products while retiring the others. My work included new database schema, surveillance reports, regulatory reporting flows, and persistence service enhancements.
Oracle DB Sybase Java Drools
I work directly with Equities traders and middle office to determine pain points and develop corresponding solutions. Examples include extending existing APIs with new functionality, developing automated processes to reduce manual intervention, and simplifying flows to allow retirement of legacy services and processes. This is my day to day work alongside the larger projects.
Java Drools Oracle DB Sybase
I added a new API to allow listed trades to be switch ticketed automatically, which reduced reduce manual intervention of these trades by seventy-fiver percent. I introduced Spring into the persistence service layer for this project as the first step in a larger initiative to convert the entire service from EJB.
Java Spring Framework
The existing exception flow was hard coded for the requirements of the Credit desk. I refactored the main flow to make use of the adaptor pattern, which allowed me to easily incorporate the conflicting requirements from the Equities desk. I also applied the dependency injection pattern which enabled mocking of external services and more complete unit and flow test coverage of the application.
Java
The College of New Jersey
Adjunct Professor of Mechanical Engineering
August 2011 - December 2012
Writing lesson plans, preparing presentations, designing examinations and projects, lecturing, and evaluating student work. Taught freshman level design lab (ENG142) and sophomore level statics (ENG222).
Designed a biomedical/electrical engineering lab project for freshmen students. The students were provided a circuit diagram with missing values and the equations needed to solve for those values. In groups, the students would need to apply those equations to figure out resistances required in their amplifier circuit. They would then need to fabricate it and test it using a signal generator. The goal was to have an LED blink along with the signal peaks
Circuits Medical Devices
Put together two coding projects as part of the ENG-222: Statics course work. Students were allowed to use MATLAB or C++ to accomplish these. The first project was to write a program that could find the resultant of three (or more) forces. The second was to write a program that could find the equivalent force-couple system at any point for a given system of forces and/or moments applied to a structure or machine part.
MATLAB C++ Statics
The College of New Jersey
Biomedical Engineering Research Assistant
June 2007 - May 2009
Worked under Dr. Brett BuSha performing research into heart rate and breathing rate patterns in human test subjects. Required writing proposals to regulatory bodies, collecting data from fellow student volunteers, analyzing recorded data, and reporting on the results.
Submitted and got approval for recording data from test subjects for heart and breathing rate research.
Medical Devices
Record heart and breathing signals from test subjects under differing conditions. Data was record while at rest, performing exercise, and breathing through either the mouth or the nose exclusively.
Electronics Medical Devices
Analyze the collected data using detrended fluctuation analysis to remove any non-stationary underlying statistics (mean, variance, etc.). Lab group published two papers, the first compared variability in human breathing between gender and breathing route, while the second compared it between gender and level of physical activity.
MATLAB Electronics Medical Devices
Friendly's
Line Cook
October 2004 - May 2005
Prepared and cooked a variety of dishes, ensuring the highest level of quality and consistency. Gained a thorough understanding of kitchen operations, including food handling, portion control, and inventory management. Required the ability to work under pressure in a fast-paced environment, while maintaining a positive and cooperative attitude with team members.
Berkeley Sweet Shops
Manager
May 2006 - September 2013
Kitchen Supervisor
May 2002 - May 2006
Kitchen Staff
June 1997 - May 2002
Started as staff in the kitchen, assisting with prepping, cleaning, and assisting making candy. Promoted (2002) to kitchen supervisor and duties grew to include ingredient and product inventory tracking, supervising kitchen staff, and making candy. Promoted to manager (2006) of over 20 customer service associates. Handled scheduling, registers, bookkeeping, managed customer complaints, and resolved disputes. Ran the entire business while the owner was indisposed on multiple occasions.
`

Consulting Gigs / Side Work

Red White & Brew Beer Company
Software Engineer
July 2016 - Present
Design, develop, host, and maintain the company's website as well as software to track production, streamline sales, notify users of regulatory requirements, and generate regulatory and tax reports.
A website for a new brewing company, written in NodeJS on the Express framework, using Bootstrap 3, deployed as a Docker image, with MySQL persistence. The application is hosted on a cloud server and content is accessed through a reverse proxy.
HTML5 CSS3 Bootstrap JQuery NodeJS Express MySQL Nginx Docker Digital Ocean
Developed highly secure authentication and authorization systems to control access to different tools.
HTML5 NodeJS JQuery
Digitized tap list as a web page, and built an admin tool to allow authorized bar staff to control it in real time.
HTML5 NodeJS MySQL
Implemented keg tracking and beer inventory tools to assist in sales, production, and regulatory reporting.
HTML5 NodeJS MySQL JQuery
Created event management tool to allow event coordinator to track customer event requests and schedule private parties, space rentals, and public events
HTML5 NodeJS MySQL JQuery
Cannonball Company
Software Engineer
December 2014 - May 2015
Developed a desktop application for a hunting outfitter in North Dakota.
App tracks bird harvests by location, date, and group size, and allows flexible querying of stored data to generate real-time reports for earnings distribution to land owners.
C# SQLite