Objective
To obtain a senior software engineering position that will utilize my twenty years of experience building high performance back-end enterprise software, and exercise my problem solving skills, aptitude for algorithms and coding, and passion for learning and creativity.
Experience
Boulder, Colorado
February 2013 – February 2019
Google
Software Engineer
- Google Drive –
Worked on next generation back-end infrastructure layer for Google Drive, designing and implementing algorithms for core business logic, as well as contributing to server configuration, security, and automated test infrastructure. Responsible for Java thread safety across the product, including analysis, auditing, and team training.
- Google Groups –
Contributed to Google Groups and Google Product Forums front-end server Java code using GWT framework. Designed and built python tools for analyzing GWT split points and bundle sizes. Developed and implemented algorithms for determining user reputation and mitigating spam in a massive distributed environment. Co-inventor of US Patent 10,049,138, "Reputation and engagement system for online community management".
Sterling, Virginia
May 2008 – February 2013
Metron Aviation
Senior Software Engineer
- Metron Harmony for Airlines –
Developed algorithms for predicting surface traffic conflicts based on projected schedule data; and for predicting surface saturation and adjusting flight schedules to accommodate the predicted capacity. Built components for parsing web-based FAA data from XML and flat text, extracting traffic management and airport configuration data using Java and extensive Regular Expressions. Implemented a metadata framework to allow the flexibility to import data from new sources without the need to rework existing data structures for each new set of data, and a fully featured compiled query and aggregation language for extracting data from the framework. Responsible for use of Spring Framework within the product, as well as Tomcat and Java runtime configuration and performance tuning. Also responsible for Linux systems configuration, ActiveMQ integration, and data interoperability.
- Software Community of Practice –
Founding member of Metron Aviation's Software Community of Practice, responsible for identifying development and implementation best practices, providing training on advanced software topics, and maintaining a repository of shared knowledge and frameworks, in a way that has impact across all aspects of software development within the organization with specific measurable results.
- Noise and Operations Management System –
Created Java framework for noise contour modeling in environmental compliance management software, including task scheduling, crash recovery, thread management, database persistence, and event notifications. Developed Java interfaces to access and parse XML from external web services, and created web services for external use, using Java and JSP on Tomcat. Built utilities to convert between various GIS formats, including ESRI Shape files, MapInfo TAB files, and Google Earth KML files. Responsible for investigating and applying grid computing for use in distributing tasks across multiple computing resources.
- Enhanced Substitution Module (ESM) –
Implemented a practical linear assignment problem solver in Java, based on academic research, and verified the correctness and optimality. Also investigated an alternative approach using a stochastic beam search algorithm, which could optimize generalized assignment problems where the cost function of each assignment depends on each of the other assignments.
Fairfax, Virginia
January 2010 – May 2012
George Mason University
Adjunct Professor, Department of Applied Information Technology
- IT 306 – Program Design and Data Structures –
Taught advanced problem solving and Java programming to undergraduate students, focusing on design using UML; more sophisticated object oriented techniques, such as inheritance, exception handling, and polymorphism; the implementation and usage of data structures, such as linked lists, trees, stacks and queues; and algorithms such as searching and sorting.
- IT 206 – Object Oriented Techniques for IT Problem Solving –
Taught problem solving and basic object oriented design and Java programming to undergraduate students, providing a bridge between basic structured programming and more advanced algorithms development.
- IT 108 – Programming Fundamentals –
Taught problem solving and basic computer systems architecture, and Java programing to undergraduate students, focusing on design and structured programming, with an introduction to object oriented design.
Fairfax, Virginia
August 2007 – May 2008
Graduate Teaching Assistant, Department of Computer Science
- Operating Systems – Assisted in the teaching of the graduate introduction to Operating Systems, primarily concerned with threading, scheduling, and distributed systems. Responsible for Java aspects of the course.
- Software Engineering – Assisted in developing course materials and assignments, reviewed and graded student papers, and helped students with software engineering topics.
Charlotte, North Carolina
June 2007 – August 2007
TEKsystems
Senior Software Engineer
- Database Management Tool – Gathered requirements, performed analysis, then designed and built a tool for managing and deploying versioned application specific database instance configurations using Ant and Perforce with Oracle and MS SQL Server. Also provided client with knowledge and training on advanced Java Threading, including Java 5 Concurrency Package.
Vienna, Virginia
November 2006 – February 2007
Novell
Senior Software Engineer
- Sentinel Alert Feed – Rearchitected the database and XML schemas used to collect security alert data and distribute it to customer installations, in order to increase the throughput of the feed by over six hundred percent, and developed the associated code in Java and SQL using Eclipse under SUSE Linux Enterprise.
Fairfax, Virginia
May 1997 – October 2006
webMethods
Senior Software Engineer
- Clustered Job Scheduler – Designed and built a distributed task scheduler for webMethods' flagship Integration Server product, using Java and SQL, and developed public Java APIs, webMethods services, and an HTML user interface for manipulating the scheduled tasks. Acted as project team lead, writing feature and technical specifications, and coordinating quality assurance and documentation, in addition to building the feature.
- Broker Filter Converter – Developed Java code to convert from Integration Server filter language to Broker filter language, including regular expressions, using a table driven parser to translate the filter, while recognizing segments for which there are no equivalent instructions, and replacing those segments with boolean values that allow the filter to execute properly.
- SAP Integration Module (Walldorf, Germany) – Acted as technical lead on webMethods' SAP Integration Module product. Implemented lowest level connectivity in C using the SAP RFC Library and built a JNI interface and high level API in Java that provided the base functionality for the product. Wrote extensive design analysis and documentation, including functional requirements, flow diagrams, use cases, performance analysis, and scheduling requirements.
- Quality Assurance – Designed and built from scratch, an interactive bug/support/account tracking system, in Java and SQL with an HTML/Javascript user interface. Acted as Quality Assurance Lab systems administrator, managing users, various applications, and a variety of hardware running Linux, Unix, and Windows. Also responsible for creating test scripts and software prototypes using Java, Perl, and other technologies.
- Agent Discovery – Developed "Agent Discovery" application, used as a case study in The XML Handbook (First Edition) by Goldfarb, et al., 1998, Chapter 17. Agent Discovery allowed the Discovery Design Group to have a single unified interface for searching across a number of different stock image catalog web sites. It was implemented using Java and webMethods' Web Interface Definition Language (WIDL).
- Other projects included building and maintaining public Java APIs and XML services, server invocation path design and implementation, and high performance LDAP integration.
Indiana, Pennsylvania
September 1997 – May 1998
Indiana University of Pennsylvania
Research Assistant, Department of Mathematics
- Surface Modeling – Assisted in the analytical solution of complex real world boundary problems, and implemented the associated mathematical models in the C programming language.
Indiana, Pennsylvania
January 1997 – May 1997
Research Assistant, Department of Physics
- Monte Carlo Simulations in the RPμ Ensemble – Assisted in computer modeling of the molecular behavior of silicon using Monte Carlo techniques, developed visualization techniques on Solaris workstations using Xlib and C, assisted in the drafting of academic publications in collaboration with scientists from Oak Ridge National Lab, and presented the project results to the American Physical Society (American Physical Society, Annual March Meeting, March 17-21, 1997, abstract #M11.07).
Skills
Programming and Mark-up Languages: Expert Java programmer, including threading/concurrency, data structures, and networking. Extensive experience with Regular Expressions, Bash Scripting, HTML, CSS, and SQL. Experience with C, XML, PHP, Python, and others.
Operating Systems: Current user and administration experience on Ubuntu and Debian Linux.
Applications, APIs, and Environments: Proficient with vi, Guava, JUnit, Mockito, Eclipse, GNU tool set, and MySQL. Experience with Spring Framework, Perforce, SVN, Git, Ant, and others.
Languages: Native speaker of English. Proficient in German.