Matthew Jason Benson Email: [email protected] AIM: gudnabrsam Professional Objective My ideal position is quite simply one in which my talents are used to develop, or develop build systems for, useful and/or interesting software. General Skills Strong written communications, Ability to learn quickly and independently, Always willing to help peers. Computer Skills Programming Languages: , Javascript, SQL, Unix shell scripts, Windows/DOS command scripts aka batch files, COBOL. Java/Java EE: , (various), Bean Validation/Apache BVal, Therian, JBoss Forge, Morph, , Spring framework, Hibernate ORM, Android, asm, cglib, javassist, AspectJ, JSF 2/Facelets, MyFaces, MyFaces Extensions Validator, Jackson, PrettyFaces, JUnit 3.x/4.x, Mockito, Spring Web Flow, ANTLR 2.x, Freemarker, JSP, Hamcrest, DWR AJAX library, Drools, iText PDF library, Struts 1.x, Threading/Concurrency, Servlets, JDBC, JMS, Swing. DBMS: Oracle, DB2, Pervasive/Btrieve v6.0-8.5. Data Formats: HP-PCL, XML, XHTML, Commons flatfile DSL. Operating Environments: Microsoft Windows, OS X, Linux, Solaris, Cygwin, MS-DOS, Novell Netware 3.x-4.x. Software: Apache Ant, , Apache Ivy, Subversion (user/admin), Eclipse, JIRA (user/admin), Jenkins (nee Hudson) CI, Sonatype Nexus (user/admin), git, JBoss Forge, ViewVC (user/admin), CVS (user/admin), Bugzilla (user/ admin), PGP/GnuPG, ghostScript, ghostPcl, Image Alchemy, PVCS. Miscellaneous: RTFM, STFW. Interests • Software Build Systems • Java Object Transformation • Language Parsing / Domain-specific Languages • Aspect-Oriented Programming • Java Classfile Instrumentation • Dynamic Java Programming • Integration of Enterprise and Legacy Systems • Imaging • Document Generation Employment History Senior Program Analyst - Internet The General October 2005–Present Projects: • Lead for conversion to Apache Maven-based software builds. • Member of development team for The General (R) Android application. Implemented streaming JSON serialization of claim data, including camera images, as well as the dynamic claim submission UI. • Lead developer for customer sales site application utilizing Java Server Faces 2.1, PrettyFaces, core HTML components, and jquery-based javascript libraries, backed by an ambitious architecture using a deep integration with Java Bean Validation and custom property metadata facilities. • Developed a Java support library to manage real-time tracking and management of object graph data and metadata. This required complex dynamic class generation to (a) track changes to collection elements, and (b) then achieve compatibility with Hibernate collection types, and was integrated as backend support for web projects implemented in multiple frameworks (SWF/JSF2).

Matthew Jason Benson - Résumé - page 1 • Developed a lightweight Java bean configuration package similar to an IOC container, but syntactically a compromise between Java and XML. ANTLR v2 was used to develop the parser, which focused on brevity as an alternative to Spring's verbose XML format. Top feature was arguably the system of mapping objects via hierarchical keys to find, given an ordered set of criteria, the best match among a set of objects. • Developed the codebase that became the Apache Commons flatfile (sandbox) component. • Development and maintenance of online insurance quote applications using Struts 1, Spring IOC/MVC/Web Flow, Hibernate, AJAX via DWR, Freemarker and JSP technologies, among others. • Led the effort to introduce non-IDE-performed software builds, dependency management and continuous integration in the enterprise using Apache Ant, Apache Ivy, Sonatype Nexus and Hudson/Jenkins. • Code review and coworker mentoring. • Jenkins administration. • Subversion co-administration. • JIRA administration. Senior Application Developer CNA Life/Valley Forge Life October 1998–September 2005 Projects: • Developed a Spring Web MVC viewer for an Oracle database. Hibernate Object-Relational mapping was leveraged to resolve the database structure in terms of programming objects, and was supplemented by considerable amounts of custom SQL due to the complexity of the legacy data structure. Careful study of the Spring framework allowed greater flexibility with a smaller codebase than the company's prior Spring/Hibernate project. • Light administration of CVS and Bugzilla on Fedora Linux. • Primary designer/developer of a fast, flexible COBOL utility for extracting hundreds of thousands of policies' data from a (LifePro) Btrieve database in scant few hours. A particularly interesting component of this project was the COBOL- written expression parser that evaluated boolean expressions (including relational operators and grouping), compiling these from text to procedure pointer calls at runtime. • Implemented an Apache Ant-based build system for Net Express COBOL applications, including awareness of copybooks. • Used MS Word macros to implement a seamless user experience uploading Word documents via servlets to JMS queues. Created a servlet-based JMS queue browser/editor as a development aid. • Developed a Java-based reporting library to write arbitrary SQL resultset data to HTML and PDF formats, backed by the iText library. • Varied reporting (ad-hoc and otherwise) against Oracle and Btrieve databases. • Ongoing enhancements and modifications to a legacy PCL policy generation system. Open Source Projects VP, Apache BVal Apache Software Foundation February 2012–Present Apache-hosted implementation of JSR-303 Bean Validation. As a result of my contributions to the Bean Validation podling, I was voted by my peers to serve as the PMC chair/VP of the Apache BVal top-level project (TLP). Individual Member Java Community Process (JCP) November 2012–Present I am a member of the Bean Validation Expert Group (EG). BDFL, http://github.com/mbenson/therian November 2011–Present Therian is an open source Java object transformation library of my own creation. Committer, Apache Bean Validation podling Apache Software Foundation July 2010–February 2012 Made various improvements to the codebase, including improved recognition of generic types down an object graph based on parent property definitions. Located an error in the RI and TCK regarding the structure of property paths. Matthew Jason Benson - Résumé - page 2 Developed supplementary Bean Validation provider to implement dynamic manipulation of validation constraints at runtime, potentially keyed to specific points in the object graph. Complemented this extension with a Myfaces Extensions Validator extension to handle the additional complexity imposed by graph-position-sensitive property validation (as a result I am likely the member of the software community with the third most knowledge of the workings of Myfaces Extensions Validator). Project Management Committee, Apache Commons Apache Software Foundation June 2007–Present Set of independent and reusable Java libraries, formerly Apache Jakarta Commons. Specific expertise in the [lang], [weaver], [proxy], [collections], [jxpath], and [functor] components, as well as the [flatfile] sandbox component. Project Management Committee, Apache Ant Apache Software Foundation August 2004–Present Java-based project build tool. Project Management Committee, Apache DeltaSpike Apache Software Foundation April 2013–Present Committer, Apache Ant Apache Software Foundation February 2004–August 2004 Committer, Apache MyFaces Apache Software Foundation August 2011–Present During my relatively short experience with JSF, my contributions to Apache MyFaces were of sufficient merit to earn committership to the project. Mentor, Apache DeltaSpike podling Apache Software Foundation December 2011–April 2013 I volunteered in my capacity as a member of the PMC to help the DeltaSpike podling's participants learn how to operate an open-source project at the ASF. Foundation Member Apache Software Foundation December 2007–Present From How the ASF works: An ASF member is a person who was nominated by current members and elected due to merit for the evolution and progress of the foundation. Member, Travel Assistance Committee Apache Software Foundation September 2008–Present From ASF Travel Assistance: The Travel Assistance Committee exists to help those that would like to attend ApacheCon events, but are unable to do so for financial reasons. Contributor JBoss Forge Project December 2012–Present I have made a number of contributions to the Forge rapid application development tool, resulting in my nomination for a JBoss Community Recognition Award for 2013. The 1.2.0 release was even named for me: https://issues.jboss.org/ browse/FORGE/fixforversion/12320763 . Since this time I have settled in as the primary developer of Forge's Java Parser component, https://github.com/forge/roaster . Contributor

Matthew Jason Benson - Résumé - page 3 Java Server Faces During my short experience with JSF, I participated in specification-level enhancements including writing code used in Mojarra (RI) and Apache MyFaces alike. I was also personally invited by the specification lead to interview for a position on Oracle's core JSF development team. Developer, Release Manager Morph object mapping framework 2007–2010 Bug fixes and functionality enhancements. Awards • JBoss Community Recognition Awards New Features Nominee , 2013 Certifications • Sun Certified Developer for the Java 2 Platform, April 2001 • Sun Certified Programmer for the Java 2 Platform, October 2000 Education Associate of Applied Science in Business Technology, December 1998. Graduated with honors Nashville State Technical Institute Overall GPA: 3.575 High School, June 1992. Graduated with honors Hume-Fogg Academic High School Overall GPA: 3.2

Miscellany I have an agile mind and an insatiable desire to know how and why systems work. I tend to be the first person to encounter limitations with a technology, but as a result have had to become skilled at finding solutions to such problems. I never shrink from an intellectual challenge, and take particular pleasure in making a system surpass its own supposed limitations. I am an avid user of open-source software. I always assume that I am not the first person to need a tool to accomplish a particular task, and that a reliable open-source solution probably exists. I monitor the user lists of the projects I am most interested in, which yields the benefit of my having read many questions--and answers. It is my belief that many developers, when trying a piece of OSS that gets them 95% to their goal, then encountering some relatively minor issue, give up on the software. I try to take such "bumps in the road" in stride, report the issue, find and contribute the fix if possible, and take satisfaction in the improved product. Through my continuing interest in open source, I was elected first as a committer and later to the Project Management Committee of the Apache Software Foundation's Ant project. Membership in an Apache project is attained only as a result of positive impressions made on other project members; the ASF calls this principle Meritocracy. In 2007 I was elected as a committer to Apache Jakarta, and when Apache Commons left the Jakarta umbrella to become a top-level project of the foundation, I became a member of its founding PMC. In late 2007, my sustained contribution to the ASF was recognized by granting me foundation membership. I continue to participate in open-source projects wherever they coincide with the needs of my paid work, and/or my intellectual interests. My references are available on request.

Last modified March 2014.

Matthew Jason Benson - Résumé - page 4