David P. Caldwell 8 Aurora Road East Greenwich, RI 02818 Voice: 401/484-8209 Text/SMS: 401/484-8209 E-mail: david@davidpcaldwell.com This document demonstrates some of my technical skills The master copy of this document is the HTML version hosted on the web, at davidpcaldwell.com. Other formats are automatically generated. The process of converting this document to other formats uses: * A custom JavaScript module system (on both the server side and client side), developed by me: see https://bitbucket.org/davidpcaldwell/slime/, * The client-side DOM to build a client-side XML (XHTML) representation of this resume, inlining all the CSS styling information in a cross-browser way, * A REST call to upload the client-side XHTML to the server, * A custom server-side JavaScript/Rhino HTTP client, as well as a custom interface to the Google Data APIs (this document particularly OAuth2 and the Google Drive API) to create a Google Document from the representation in the browser and convert it to each supported format, * A local Tomcat server that writes out the converted files generated by those Google Drive incations to a specified local directory used by the Google Cloud deployment process. * A custom Java/JavaScript HTTP server (see https://bitbucket.org/davidpcaldwell/slim/) running on the Google Cloud via Google App Engine to host this site and serve these files. I am happy to answer questions about this process and/or to provide code samples. 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 * IDEXX Laboratories December 2019 - Present 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 * Enterprise Java Beans (EJB) Platforms * Tomcat * Google Cloud / Google App Engine * Amazon Web Services (AWS) * RabbitMQ * JBoss, WebSphere, Weblogic APIs * Java EE: JDBC, JNDI, JMX, JavaMail * Java SE: serialization, reflection * JNI 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 * C * C++ * Ruby * PASCAL * BASIC * Smalltalk * Assembly language (various processors) * bash Operating Systems UNIX-like * OS X * Linux * Cygwin * FreeBSD 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 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