Download PDF

Professional Experience

Apr 2015Mar 2016

Software Architect

Xerox Litigation Services

Responsible for the overall architecture of OmniX, a large scale, web-based document review platform designed to help law firms sort, redact, and produce legal documents. Proven ability to rapidly utilize emerging technologies and build reliable, enterprise systems.

  • Deployed and maintained a distributed messaging platform using Apache Kafka and Zookeeper. Used at-least-once message delivery to ensure reliable service communication and provide strong consistency guarantees for mission-critical data.
  • Eliminated costly manual server configuration from sys admins with Ansible playbooks. Server provisioning became significantly more consistent, overall turnaround time was reduced from days to minutes, and deploying services became more streamlined.
  • Road-mapped a move from a monolithic web app to microservices. New services were deployed in a fraction of the time, requiring fewer resources and with less scheduling overhead.
  • Designed, developed, and maintained a new Python service to provide an asynchronous task queue for long-running batch operations. Utilized Kafka partitions to allow for easy horizontal scalability.
  • Trained other developers on Ansible. Identified common provisioning tasks and refactored them into Ansible roles, which could be shared among team members.
  • Worked with the Project Management and Release department to design feature releases that could be easily rolled back and deployed without long outage windows.
  • Improved Kafka testing and debugging by building a push-based Kafka consumer app using Node.js and WebSockets.
  • Added JSON web token (JWT) authentication support for new services.
  • Used supervisord and systemd to auto-restart dead processes and maintain high up-time.
Jan 2012Apr 2015

Development Team Lead

Xerox Litigation Services

Lead the research, design, development, documentation, testing and roll-out on dozens of application development projects.

  • Collaborated with project managers to create detailed feature specifications from high level requirements.
  • Lead a team of 10+ on the design and development of a multi-year project allowing users to automate significant portions of their workflow by creating pipelines of connected tasks to be executed asynchronously.
  • Code reviewed pull requests from other engineers to catch potential bugs and design issues. Mentored junior developers on software design patterns (e.g. null object, CQRS, etc.).
  • Interviewed and evaluated candidates for development positions, helping to grow the development group to nearly triple in size. Helped design interview tests and questions used to evaluate potential new hires.
  • On-boarded new engineers, both locally and abroad. Frequently trained junior engineers on new tools and systems.
  • Helped secure a major new client by adding OpenID integration.
  • Refactored legacy code to reduce technical debt, improving test coverage and maintaining high code quality.
  • Used Splunk for log analysis, error reporting and performance monitoring.
  • Set up continuous integration and automated testing for many projects, both production-facing and internal.
  • Created an Oracle development environment using Vagrant, which enabled developers to have sandboxed unit testing databases and removing the dependency on a central, shared database.
  • Helped the QA department evaluate and introduce an automated testing system using Selenium.
Jun 2007Jan 2012

Application Developer

Xerox Litigation Services

Added new features and functionality to OmniX utilizing PHP, Python, Oracle, and MySQL.

  • Added new features and functionality to a PHP web application built
    with a custom MVC framework, utilizing Oracle on the back end.
  • Improved performance across the most heavily used features by consolidating data analytics into fewer optimized queries in PL/SQL, often bringing down page load times from minutes to milliseconds on data sets of half a million records and greater .
  • Worked on a team supporting and add feature enhancements to a multi-threaded Python daemon for running user searches.
  • Use Oracle's aggregate and windowing SQL functions to provide custom reports on document sets numbering in the tens of millions.
  • Collaborated with Oracle developers on the design and creation of indexes, triggers, materialized views, and packages.
  • Quickly diagnosed and resolved user issues on the site to maintain high availability requirements, both during normal work hours and on-call during support rotations.

Volunteer

20092014

CS Alumni Speaker

Siena College

Gave talks on software development best practices to senior-year CS students. Discussed a wide variety of topics, including version control, unit testing, MVC, domain modeling, SDLC, etc.

20052007

Siena Programming Contest

Helped run the annual Siena programming contest, where teams of high school students competed to solve challenging, time-based programming problems.

Education

20032007

B.S., Computer Science

Siena College

Software Engineering, Design Analysis of Algorithms, Object-Oriented Design and Programming, Database Design, Database Management, Data Structures, Assembly Language and Computer Architecture, Discrete Structures, Calculus, etc.