David P. Caldwell 369 Thayer Street Providence, RI 02906 Mobile: 216/965-3690 E-mail: david@davidpcaldwell.com 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: 1. A custom JavaScript module system (on both the server side and client side), developed by me: see http://code.google.com/p/slime/ , 2. E4X as part of the build process to preprocess the XHTML version to remove the UI and prepare it for import into Google Docs, 3. 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. Summary Senior consultant with very strong software development skills relocating to Providence, RI and available to work in Rhode Island and the Boston area. Main software development skills include high proficiency in developing software 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 is returning from three-year sabbatical as political consultant during which he did occasional software work and acquired unusual leadership and teamwork experience. Experience and Accomplishments Sun-Certified Java Enterprise Architect, Java Developer, Java Programmer Have been the lead architect on nine Java projects, using a wide array of technologies. 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. 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 and many other products. Author of the E4X support for XML processing bundled with Rhino. Java Instructor (Sun-Certified), various schools Taught Sun-developed curriculum (SL-275), as well as custom-developed curriculum using Object-Oriented Programming in Java as the primary textbook. Authority on Java/Cygwin Cited in the Apache Ant reference manual , and often consulted by developers with questions about Cygwin, Java, and JNI. Political Consultant Recruited, motivated, trained, and coached volunteers and staff with various organizations advocating on behalf of the LGBT (lesbian, gay, bisexual, and transgender) community. 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 1. Penske Logistics Developed software to support and track nationwide fleet using GPS-enabled cellular phone application. 1. Developed J2EE/servlet replacement for standalone Java daemon/ASP pages to serve incoming requests from J2ME cellular phone application. 2. 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. 3. Developed SOAP interface to MapPoint which allowed easy examination of current and past state of fleet. 1. National City Bank (now PNC ) Created server system for processing banking transactions and credit card transactions to implement bank's industry-leading rewards program, Points by National City . 1. Created business rule processing engine by embedding the Rhino JavaScript engine in a J2EE server, for ease of maintenance. 2. Built SOAP interface to server used by client application developed by another development organization. 1. Kroger Created human resources system for allowing multilingual employees in high-turnover industry to maintain their own personal data in the company's server. System is still in production . 1. Created templating structure using Rhino JavaScript engine running inside Websphere Application Server that transformed mockups created by interface designer into dynamic pages. 2. Interfaced with client LDAP server using JNDI in order to read and maintain employee data. 1. America Coming Together 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. 1. 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. This improved the turnaround time for generation of data by 10-100x. 2. Worked to optimize SQL Server database by building instrumentation framework for executing ad-hoc queries and generating timing data. 1. KeyCorp 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% while implementing twice as many features. 1. 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. 2. Implemented the bottom two server-side tiers in the application. The database tier had an abstraction layer allowing the use of several storage systems, including a memory-based storage system, a relational storage system, an object database, and the host filesystem. 1. Sherwin-Williams 2. Sherwin-Williams Updated an existing freight payment system to implement new business rules and use more appropriate technology. 1. Replaced half of a $1.5 million system for under $60,000; replaced about 85,000 lines of code. 2. Targeted defect-ridden modules for replacement first. Dramatically lowered system's defect density. 3. Kept system running and iteratively improved it; created object-oriented framework for domain while maintaining procedural interfaces used by other modules. 1. Jones, Day, Reavis and Pogue 2. Boeing 3. Realty One (now Howard Hanna ) 4. Industrial Areas Foundation 5. Associated Software Consultants 6. Cleveland State University and Cuyahoga Community College Taught several Java classes as part of continuing education offerings at local colleges. 7. LGBT Mentoring Project (now part of the L.A. Gay & Lesbian Center ) 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). Proficiencies Java APIs 1. JDBC 2. JNDI 3. JNI 4. JMX 5. JavaMail 6. JAXP 7. Java Serialization 8. Java reflection Java ME and Mobile Profiles 1. CLDC 2. CDC 3. Android Data Formats Relational Databases 1. Oracle, including PL/SQL 2. Postgres (PostgreSQL) 3. Apache Derby 4. SQL Server XML 1. DOM 2. SAX 3. E4X Google Data APIs 1. Google Calendar API 2. Google Tasks API 3. Google Documents List API (Google Docs API) 4. Google Maps API Architecture Protocols 1. HTTP 2. SMTP 3. POP 4. IMAP 5. FTP Architectures 1. SOAP 2. REST 3. AJAX (XMLHttpRequest) 4. Comet (HTTP server push) J2EE and Server-Side Java 1. Java Servlets 2. Enterprise Java Beans (EJB) 3. Java Server Pages (JSP) Application Servers 1. Weblogic 2. Websphere 3. JBoss 4. Tomcat 5. Google App Engine Design 1. Design Patterns 2. UML Web Browser 1. HTML 2. XHTML 3. CSS 4. DOM 5. JavaScript (including LiveConnect) 1. SpiderMonkey (Firefox) 2. Rhino 3. Google Chrome Other Programming Languages UNIX-like 1. C 2. C++ 3. bash Windows 1. PowerBuilder Other 1. PASCAL 2. BASIC 3. Smalltalk 4. Assembly language (various processors) 5. SQR 6. Regular Expressions Operating Systems UNIX-like 1. Cygwin 2. FreeBSD Tools IDEs 1. NetBeans Source Code Control 1. CVS 2. Mercurial 3. ClearCase User Tools 1. Business Objects 2. OpenOffice Non-Technical Classroom Teaching Public Speaking Media Relations Management Training Coaching and Mentoring Microeconomics Education Case Western Reserve University B.S. Computer Science, May 1995 Minor: Political Science