This document demonstrates some of my technical skills

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://github.com/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,
  • AJAX 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 and export it in multiple formats,
  • A custom Java/JavaScript HTTP server running on the Google Cloud via Google App Engine which serves these files.

The process currently takes a bit of time after clicking to execute all the steps above. I plan to improve it by using Comet to update the status on the client as the server completes each step.

Click to generate and download this document in other formats. It has been tested in Internet Explorer 8, Firefox 6 and Google Chrome.

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.

This document demonstrates some of my technical skills

This document was automatically generated from the master copy, which you can view at http://www.davidpcaldwell.com/. 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 http://code.google.com/p/slime/,
  • E4X as part of the build process to preprocess the XHTML version to remove the UI and prepare it for import into Google Docs,
  • A custom JavaScript/Rhino HTTP client, as well as a custom interface to the Google Data APIs (this document particularly uses the ClientLogin API and the Google Documents List API) to create a Google Doc from preprocessed XHTML and download the Google Doc in multiple formats.
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.
Static HTML - no external CSS, no JavaScript, no user interface (.html) PDF (.pdf) Microsoft Word (.docx) OpenDocument Text (.odt) Rich Text Format (.rtf) Plain Text (.txt)

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.

Objective

Provide mentoring, training, and/or design and development services to clients wishing to make the transition to object-oriented development or raise the quality of their existing object-oriented investments. Special interest in the Java platform.

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.

January 1900 - May 2199

Clients and Selected Projects

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

Education

Case Western Reserve University B.S. Computer Science, May 1995 Minor: Political Science