David P. Caldwell 8 Aurora Road East Greenwich, RI 02818 Voice: 401/484-8209 Text/SMS: 401/484-8209 E-mail: david@davidpcaldwell.com A version of this document is available in other formats. Summary Senior consultant with 20 years of experience and very strong software development, training, and coaching skills available to work full-time or part-time in Rhode Island, the Boston area, or remotely. Main software development skills include high proficiency in creating applications and frameworks using Java and JavaScript for a wide variety of environments, including the server, the web (server-side and client-side), the desktop, and mobile devices. Candidate has had second career as political consultant during which he has acquired and demonstrated unusual leadership and teamwork experience. Experience and Accomplishments Lead Developer, 1-800-MY-APPLE Led the development of software that answers the phone when customers call the Apple Store in the United States, Canada, the United Kingdom, and Ireland. Lead Developer, Finovate Conference Fall 2013 Best of Show Developed award-winning application to illustrate how financial services companies can provide better telephone-based support to their customers. (Coverage from: BostInno) Speaker, JavaOne Conference Authored a presentation titled Patterns for Integrating Java and JavaScript Technology: Tales from the Front Lines and presented it to a large audience at the 2008 JavaOne Conference, the major industry conference for Java developers. Authority on Java/JavaScript integration and Java/Cygwin Interviewed by Java publication JAXEnter.com about the deprecation of the Nashorn JavaScript engine and its potential replacements (full interview). Cited in the Apache Ant reference manual, and often consulted by developers with questions about Cygwin, Java, and JNI. Automated Testing Leader Drove the adoption of unit testing on two projects: first, for the Mozilla Foundation, creating a Java environment in which the Firefox JavaScript conformance tests could be run against the Rhino JavaScript engine, and then for Apple, creating a unit testing framework so that unit tests could be authored for the 1-800-MY-APPLE telephone system in order to ensure it conversed correctly with callers, provided correct information to them, and routed calls to the correct human call center at the correct time. Committer, Mozilla Foundation One of the three project leads on the Mozilla Rhino project, a JavaScript interpreter written in Java which is bundled with the Java SDK (until Java 8) and many other products. Author of the E4X support for XML processing bundled with Rhino as well as the software used to verify conformance with the JavaScript specification and the Firefox JavaScript implementation, known as SpiderMonkey. Oracle-Certified Java Enterprise Architect, Java Developer, Java Programmer Have been the lead architect on over a dozen Java-based projects, using a wide array of technologies. Java Instructor (Oracle-Certified), various schools Taught Oracle (then Sun)-developed curriculum (SL-275), as well as custom-developed curriculum using Object-Oriented Programming in Java as the primary textbook. Political Consultant Recruited, motivated, trained, and coached volunteers and staff with various organizations, especially those advocating on behalf of the LGBT (lesbian, gay, bisexual, and transgender) community. Friends of Justine Caldwell Managed campaign for Justine Caldwell (spouse), a first-time candidate running against the Rhode Island House Deputy Minority Leader, to an upset victory in the November 2018 election. Developed a technology stack to guide canvassers through neighborhoods, enable tracking of interactions with voters, enable "second contact" interactions (via phone, E-mail, or mail) with voters who had been canvassed, and develop voter target lists for paid follow-up communication, including Facebook integration. Managed successful re-election campaign in 2020. Los Angeles Gay & Lesbian Center, LGBT Mentoring Project, and other organizations Worked in a consulting role with the staff of several organizations interested in doing much more effective political work. Primarily responsible for identifying and mentoring promising current and potential staff members with campaign organizations in order to improve their leadership and analytical skills. Other roles ranged from managing ten paid field staff working to win an election surrounding marriage for gay and lesbian couples in Maine to managing a campaign to verify student provisional ballots in Bowling Green, Ohio. Heights Families for Equality Ran campaign in which Cleveland Heights, Ohio became the first city in the country to pass a pro-gay ballot initiative. Organized a massive field campaign by recruiting and training over 1,000 volunteers, resulting in one-on-one conversations with nearly half the voters in Cleveland Heights using only volunteers and raising $85,000. Recruited and trained leaders to assume volunteer leadership roles in this effort. Responsible for dealing with the campaign's vendors. Clients and Selected Projects * Maxar Space Systems November 2023 - June 2024 Worked to remediate cybersecurity flaws identified by NASA in ground software used for communicating with space assets and intended to be used on the Power and Propulsion Element component of the lunar space station being developed for the Artemis program. * Implemented OSGi updates across hundreds of projects for the Eclipse RCP platform and the Maven Tycho plugin to move away from MySQL JDBC driver, replacing it with the MariaDB driver. * Created tools to help inform stakeholders by reporting on OSGi-based dependencies, analyzing transitive dependencies, reporting on the contents of OSGi bundles, and reporting on intra-bundle dependencies. * Created automated script to convert approximately 300 Tycho-based projects to standard Maven projects by processing OSGi manifest files and generating the equivalent Maven constructs; created quality assurance script to compare two RPM installs in order to validate incremental changes to the build process. * Merged approximately 300 OSGi dependency graphs into two Maven dependency graphs - one for Eclipse Equinox applications, and one for ordinary Java applications - in order to simplify future dependency management. * Wayfair July 2021 - September 2023 Worked on company financial reporting and payments systems, initially on home-grown accounting systems but moved to support transitioning large portions to a major ERP implementation. The company's financial systems are primarily implemented in PHP, Python, and Java. * (2022 July) Moved to the Accounts Payable team as part of an effort to shore up an unstable payments platform with a very high defect density, both to address the immediate business need and to prepare for the impending ERP implementation. * Migrated invoice intake software from PHP that utilized Microsoft SQL server for invoice creation to Python that used Apache Kafka and Avro to create event streams representing incoming invoices for consumption by the ERP system. * Identified and remediated issue preventing company financial systems (mostly implemented in a monolithic codebase) from being upgraded from EOLed Python version. * Created a tool that pulls data from dozens of relational database tables and presents it chronologically, to aid in diagnosing issues. * Modified the Visual Studio Code Python extension in order to make its test autodiscovery mechanism compatible with homegrown testing framework. * Built an application to replace a home-grown ticketing system in order to process incoming email, including invoices. The system separates invoices and dispatches them to an offshore data entry team, while routing other correspondence to corporate staff. Worked with stakeholders across the company in order to choose a platform (we chose ServiceNow) and produce a solution acceptable to all and a go-forward plan for operation, including: * Corporate accounts payable staff (across multiple continents), * Engineering management, * Product management, * The internal ServiceNow implementation team * Created and/or modernized monitoring and alerting systems designed to proactively detect and report conditions requiring attention: * Built a Java system to monitor scheduled task execution (using various Jenkins APIs) and report the results to InfluxDB for consumption by a user interface and alerting systems. * Created a scheduled script that monitored incoming banking data files and used the Python Datadog API to alert users when expected files were missing. * Khoros February 2021 - July 2021 Technical lead for team working to provide a single login experience for multiple domains. Customer was created by private equity firm that bought several startups in related lines of business and created a single company to grow and integrate them. * Project used heterogeneous technologies for sessions and needed the ability to make cross-domain calls using incompatible session information. Primary server technology was Spring MVC (in which new services were implemented) and Google Play (with which the project needed to be compatible); REST APIs were provided to callers. * Inherited a project with no test environment. Untested code was being deployed to production because developers had no ability to test it. Creation of a test environment was inhibited by several considerations, including the need to use HTTPS and the need to interact with several domains. I created a test mechanism for developers using an intermediary Tomcat server that proxied requests to the underlying domains, along with automatically creating locally-trusted SSL certificates on developer machines and a customized Google Chrome to interact with the simulated and real infrastructures. * Guided the team through transitions between three different engineering managers and three different product managers (all within a five-month period). * IDEXX Laboratories December 2019 - January 2021 Joined ongoing project to write a worldwide system to operate reference laboratories on all six continents -- to process samples shipped by veterinarians for analysis, from labeling them upon receipt to scheduling and prioritizing test runs to releasing test results back to the practictioners. * Led the design and development of the subsystem responsible for medical review -- for the aggregation and display of test results from multiple departments in a patient-centric view, to be examined by in-house experts, who review, validate, and comment on the results before sending them to customers. * System used Google Cloud Platform and the Google App Engine datastore with the Objectify library to store data and a publish-subscribe architecture for communicating with other subsystems, and used Spring Boot with Java, Kotlin, and Groovy on the server and AngularJS, Karma, and Cypress on the client. * Developed a command-based design that used Kotlin's first-class functions to abstract out the handling of mutable state, eliminating classes of problems that had plagued previously-developed subsystems (transaction management, versioning and concurrency conflicts, correctly including mandatory audit information, making updates from external systems idempotent and batching them, making sure code determining whether an operation was permitted matched code implementing the operation). * Zipcar December 2018 - November 2019 Joined team working to update risk management and loss prevention practices for consumer firm with automobiles at risk of damage or theft by customers. Customer presently has a lengthy and rigorous applicant screening process but wants the ability to evaluate and approve applicants instantly without assuming additional risk that applicants engage in theft and/or fraud; project sought to use modern identity verification and fraud detection tools to accomplish these goals. * Implemented new end-to-end features on diverse platform, including Kotlin / Java / Groovy, Ruby, React/Redux, PostgreSQL, and RabbitMQ. * Led implementation of integration with Optimizely's industry-leading online experimentation platform in order to measure the effects of altering the application process on both consumer behavior and customer's overall exposure to risk, * Assisted with implementation of integration with Onfido's cutting-edge identity-verification platform to help customer ensure applicants actually were who they said they were, * Automated interactions with cloud-based deployment model including RabbitMQ, Vault, Bitbucket Server (Stash), Homebrew, and PostgreSQL. * Rearchitected and refactored React / Redux implementation underpinning the flow for the signup wizard, colocating Redux selectors with their reducers, implementing a new test framework for mocking server calls and adding test coverage for the Redux state, and fixing several defects discovered as a result. * Provided leadership in successfully urging the adoption of new practices to support closer collaboration between the product and engineering teams in pursuing the project's business objectives. * Shorelight Education July 2018 - December 2018 Joined implementation team in progress creating groundbreaking mobile application for Android and iPhone/iOS to support the needs of international students coming to the United States to pursue higher education. System used React Native to implement the user interface and Node.js as the primary server implementation platform. Server connected to several support systems, including Salesforce as the primary system of record, a WSO2 server for identity management, a Contentful server for managing the application's content, and a Matrix server for allowing users to chat with Shorelight staff and one another. Initial version of the software is now in production. * Provided leadership necessary to get the development team to communicate to management that the software was vastly behind schedule and initiate and then drive a discussion about how to respond. * Implemented various features, improved testing practices, and identified -- and provided prototypical fix for -- logical errors in Redux representation of application-level errors. * When product team was replaced, took a lead role in helping the product team come up to speed on the project. * Cengage Learning October 2013 - June 2018 Provided leadership as higher education publishing company re-oriented their business toward providing digital solutions during a period in which yearly usage grew from 75,000 to 1.3 million users. System uses distributed technology that incorporates embedded web components from multiple vendors, client-side software like jQuery, JavaScriptMVC, AngularJS, and ReactJS, and server-side software using Java (including ElasticSearch, JDO, JAX-RS, Google Guice) and Node.js. Project is deployed mostly on the AWS cloud and uses multiple backends, including MySQL, MongoDB, Cassandra, and Neo4J, along with several dependent systems accessed via HTTP and/or JMS, to provide content to students and grading and course authoring services to instructors in higher education. * Participated in hiring, onboarding, and mentoring dozens of developers. Many candidates were first-time developers who were interns, graduates of bootcamps, or graduates from academia. Achieved a strong track record of success in promotion, retention, and leadership from these developers. * Managed a fully-offshore team of developers in Ukraine, onboarding and training them to make an impact on the product. * Developed training curriculum for new developers that introduced entry-level developers to the spectrum of tools, technologies, and libraries necessary to contribute to the production online learning platform. * As company ramped up software development to deal with transition to digital learning technologies, provided tools that enabled developers to begin working on MindTap 12 times faster, saving the organization approximately $300,000 as of this writing. * Reduced startup time of application by 30% by developing JDO-compatible object-relational mapping software that allowed the specification of arbitrary multi-table queries in order to create domain objects capable of providing data to the web application. * Developed software to automate the previous manual and error-prone process of doing monthly releases. * Interactions Corporation September 2011 - October 2013 * Created software to model conversations with telephone customer service representatives to allow callers to communicate with an automated system using natural language. * Wrote Java development framework used by other developers to ease the creation of applications for external customers. * Implemented JavaScript API that allows the use of JavaScript to develop parts, or the entirety of, applications for the Java application development platform. * Designed and developed environment that allowed the use of JavaScript to implement interfaces between customer and external customer systems. * Authored an Apache Maven plugin to allow Maven builds to be implemented in JavaScript. * LGBT Mentoring Project (now part of the Los Angeles LGBT Center) July 2008 - August 2011 Consulted with several organizations, doing IT work from time to time as needed, but primarily coaching, training, and mentoring leaders and organizations to do much more effective political work on a larger scale. Work ranged from managing up to fifteen staff to analysis of polling and other data, but especially involved recruiting, assembling, and motivating large teams of people to engage in political work. Clients included EqualityMaine, One Bowling Green (Ohio), Equality Maryland, Vote for Equality (Los Angeles), Ask Cleveland, and SAVE (Miami). * National City Bank (now PNC) February 2007 - August 2008 Created server system for processing banking transactions and credit card transactions to implement bank's industry-leading rewards program, Points by National City. * Created business rule processing engine by embedding the Rhino JavaScript engine in a J2EE server, for ease of maintenance. * Built SOAP interface to server used by client application developed by another development organization. * Kroger January 2007 - August 2007 Created human resources system for allowing multilingual employees in high-turnover industry to maintain their own personal data in the company's server. System was still in production as of May 2016, but appears to have been subsequently replaced. * Created templating structure using Rhino JavaScript engine running inside Websphere Application Server that transformed mockups created by interface designer into dynamic pages. * Interfaced with client LDAP server using JNDI in order to read and maintain employee data. * Industrial Areas Foundation October 2006 - November 2006 * Penske Logistics November 2004 - November 2006 Developed software to support and track nationwide fleet using GPS-enabled cellular phone application. * Developed J2EE/servlet replacement for standalone Java daemon/ASP pages to serve incoming requests from J2ME cellular phone application. * Developed J2ME application with bar-code scanning and GPS capability to help automotive customers track shipments. Target device was a Motorola cellular phone with a bar-code scanning attachment from Symbol. * Developed SOAP interface to MapPoint which allowed easy examination of current and past state of fleet. * America Coming Together September 2004 - October 2004 Created tools for performing ad-hoc queries against a rapidly developing online database of voters in a swing state during the 2004 presidential election. Client was a political organization undergoing extremely rapid growth and its existing front-end system was incapable of performing the functions needed and too slow to be usable. * Built a user interface to the database which implemented an SQL preprocessor to allow the generation of extremely complex queries from component parts. The interface used an unreleased HTML templating engine authored by my firm, which improved the turnaround time for generation of data by 10-100x. * Worked to optimize SQL Server database by building instrumentation framework for executing ad-hoc queries and generating timing data. * Associated Software Consultants May 2002 - July 2004 * Jones, Day, Reavis and Pogue January 2001 - October 2001 * Cleveland State University and Cuyahoga Community College January 2001 - December 2001 Taught several Java classes as part of continuing education offerings at local colleges. * Realty One (now Howard Hanna) June 2000 - January 2001 * Boeing March 2000 - May 2000 * Sherwin-Williams September 1999 - March 2000 * KeyCorp January 1999 - August 1999 Provided web-based tools for clients engaging in international trade. Client's previous attempt to implement these tools had failed after nine months; my team cut implementation time by 70%, and implemented twice as many features as the failed project had attempted. * Responsible for overall application architecture; application was implemented using four tiers (a UI tier, a controller tier, a domain layer, and a database mapping layer), working around the limitations of the two-tiered tool (NetDynamics) the client had chosen as the application server. * Implemented the bottom two server-side tiers in the application. The database tier had an abstraction layer (essentially using dependency injection about five years before the term came into widespread use) allowing the use of several storage systems, including a memory-based storage system, a relational storage system, an object database, and the host filesystem. * Sherwin-Williams May 1997 - December 1998 Updated an existing freight payment system to implement new business rules and use more appropriate technology. * Replaced half of a $1.5 million system for under $60,000; replaced about 85,000 lines of code. * Targeted defect-ridden modules for replacement first. Dramatically lowered system's defect density. * Kept system running and iteratively improved it; created object-oriented framework for domain while maintaining procedural interfaces used by other modules. Proficiencies Java Java EE / Servers * Java Servlets, JSP * Spring (Boot, MVC, etc.) Platforms * Tomcat * Google Cloud / Google App Engine * Amazon Web Services (AWS) * RabbitMQ, Kafka, Google Cloud PubSub JVM Languages * JavaScript (Rhino, Nashorn, GraalVM) * Kotlin * Groovy JavaScript / Web * HTML (including HTML5, XHTML) * CSS (including CSS3) * DOM Frameworks, Libraries, APIs * React Native * React / Redux * AngularJS * jQuery * JavaScriptMVC * Google Chrome Extensions (with Native Messaging) * Node.js Engines * Rhino * Nashorn * GraalVM * SpiderMonkey (Firefox) * v8 (Google Chrome, Node.js) Architecture Web * REST / HATEOAS * SOAP * OAuth2 * Comet (HTTP server push) Internet Protocols * HTTP * SMTP, POP, IMAP Methodologies * Design Patterns * Dependency Injection * Functional Programming * Agile methods Data Relational Databases * MySQL * Oracle, including PL/SQL * Postgres (PostgreSQL) * Apache Derby * SQL Server NoSQL Databases * MongoDB * Salesforce.com (Force.com, Database.com) * Google App Engine Datastore Google Data APIs * Google Calendar API * Google Sheets API * Google Drive API * Google Identity Platform (OAuth2) * Google Maps API * Gmail API * Google Apps Script Other Programming Languages General-purpose * Python * C * C++ * Ruby * PHP * bash Operating Systems UNIX-like * OS X * Linux Mobile * Android Tools IDEs * Visual Studio Code * IntelliJ IDEA, NetBeans Source Code Control * Git / Mercurial * Subversion / CVS * ClearCase, Visual Sourcesafe Code/Distribution Management * Gradle / Maven / Ant * npm * Nexus / Artifactory * Hudson/Jenkins / GoCD / Concourse * JIRA Containerization * Docker * Docker Compose Leadership Teamwork Training Coaching and Mentoring Management Communications Public Speaking Media Relations Classroom Teaching Education Case Western Reserve University B.S. Computer Science, May 1995 Minor: Political Science