[email protected] - http://www.thewoolleyweb.com/resume_woolley.html
520-861-1183 Tucson, AZ
Please Read This First:
Hi, I'm Chad. Thanks for taking the time to read my resume. In past positions, I have participated in interviewing and hiring people to work on my team. So, I know how difficult it is to identify a good (or bad) candidate based solely on a traditional resume and interview. From an interviewee's perspective, it is also difficult to make yourself stand out from the crowd, even if you know you are right for the job. That's why I invite you to review my work (see Open Source contributions below), talk to my references and associates (http://www.thewoolleyweb.com/references_woolley.html), ask me to do research and a presentation on a topic of your choice, or work with your team for a couple of hours. I'm convinced that I can be a strong asset to your team, and I'm willing to do whatever it takes to convince you too. If you just like reading resumes, then here's an exhaustive and somewhat boring (yet hopefully enlightening) inventory of my professional life. If you prefer one page resumes, well, I'm sorry :(. Some of my early experience is a bit dated, but it is better to learn late than never.
To provide value. To be Agile. To think pragmatically outside the box. To test early and often. To have integrity. To be honest. To have fun!
I'm currently happy with my full-time job at Pivotal Labs, a unique place filled with incredible people who "get it".
Professional Profile and Philosophy:
I have been developing and maintaining software and performing system administration professionally since 1992. I have experience with a lot of tools and technologies, many of which I've taught myself. What I don't know, I can learn, sometimes with the help of my actively-maintained network of professional contacts and friends (if, of course, Googling, mailing lists, and RTFM'ing fails me). I use Linux on my main PC, OS X on my laptop, and all the applications I use on it are free or legally purchased. I think The Pragmatic Programmer is a very good book that every software developer should read, and I subscribe to the Agile Manifesto, the Declaration of Interdependence, and the Hacker Ethic (except the parts I disagree with). I appreciate a good rant, and have been known to have a few myself.
In my career, I've performed coding, system administration, performance tuning, testing, documentation, training, QA, planning, analysis, sizing, design, integration and support roles on many diverse projects, covering a wide range of operating systems, languages, environments and tools. I have practical experience in all project phases, from requirements-gathering through planning and deployment/maintenance. I consider constant communication with the customer and users a priority! I've held Team Lead positions, where I was responsible for the training and direction of multiple team members. I know how to read and write documentation.
I have learned as much from my failures as I have from my successes, both individually and as part of a group.
I take pride in having a positive attitude, and I handle assignments with a proactive approach, focus on innovation, high quality and efficiency. I strive to consider the long-term costs and impacts of all decisions, address challenges in a practical manner, identify inefficiencies and unnecessary cost/effort, and offer solutions to resolve issues. I am a quick learner (although that's changing as I get older), a self-starter (but that isn't), and have very good attention to detail (at least my automated tests do!). I use my experience and knowledge to help others grow professionally, and seek out others who do likewise. I believe in integrity and honesty, and I'm confident that I can excel in any task that is assigned to me. Even more with a pair.
Publications, Presentations, and Awards:
I have a blog at Pivotal Labs.
CI for the Rails Guy (or Gal) - An update of my Continuous Integration tutorial for RailsConf 2008.
CI for the Web 2.0 Guy (or Gal) - A hands-on tutorial on Continuous Integration presented at the Agile 2007 conference.
Winner in the November 2007 Rails Hackfest
Reviewed "Junit Recipes" and had my open source project mentioned in it.
Informal presentations at the Tucson Java Users Group, East Bay Ruby Users Group, and others
IBM - "Dinner for Two" award for Technical Contributions
IBM - Three 'Thanks' awards - Peer Recognition Award
IBM - Global Services 'Peer Star' Silver Recognition Award
IBM, San Jose, CA - Prepared and taught several end-user training classes on the Notes-based rewrite of the Track2 application.
IBM, San Jose, CA - Taught several end-user training classes on Track2 host application.
Current and Not-So-Current Skills: (Asterisks indicate Brainbench certifications):
These are all things I have worked with in the past. They are in no particular order, and far from complete. Some I learned better than others, and some I remember better than others :). Feel free to ask me for details.
Project Planning/Process Improvement - Agile Development, Extreme Programming, Continuous Integration, Unit/Integration/Application Testing, Test-Driven Development, Behavior-Driven Development, Trac, XPlanner, MS Project, Rational Unified Process, Enterprise Unified Process, Software Configuration Management Patterns and Process Patterns, Wiki
Databases - Continuous Database Integration, Agile Databases, Ruby on Rails Migrations, * Relational Database Design/Modeling/Implementation, Sqlite, MS SQL Server, MySql, Oracle 9i/10g, DB2/UDB, SQL/DS, MS Access, others
Platforms/Systems Administration and Integration - Linux (Ubuntu, Redhat, Fedora, Debian, WBEL3), apt/aptitude, Solaris, AIX, Cygwin, Unix Shell Scripting and command line tools, installing/building Unix packages via RPM/SRPM/source, apt, yum, DOS/Windows 9x/ME/NT/2000/XP, OS/2, MVS/TSO, VM
Networking - Remote access using NoMachine NX, VNC and Windows Remote Desktop, Network traffic analysis using Ethereal, HTTP header/cookie analysis, ssh, ssh port forwarding/tunneling, automatic key-based authentication using ssh-keygen and ssh-agent, scp, rsync, tftp, Putty, WinSCP, Basic Router/Load Balancer/Firewall administration, TCP/IP, MS Networking, NetBIOS/Samba, MS Active Directory, Novell, General Network Installation/Configuration/Troubleshooting/Administration
Applications/Tools and Middleware - Mongrel, Lighttpd, Tomcat, Apache Axis, BEA WebLogic, WebSphere, Resin, Apache/Apache2/IHS, Jetty, "R" statistical analysis package, WebTrends, MS IIS, JTest, Rational Rose, Subversion, SVK, CVS, ClearCase, SourceSafe, ClearQuest, ReqPro, RACF, CICS, MQSeries, Lotus Enterprise Integrator, others
Open-Source Projects Created or Contributed to:
GemInstaller, http://geminstaller.rubyforge.org/ - I conceived and wrote GemInstaller from scratch, using Rspec and a Behavior-Driven Development approach. It has a thorough and extensive test suite, and is continuously integrated against multiple RubyGems versions.
Pivotal.rb, http://pivotalrb.rubyforge.org/ - This is where Pivotal Labs keeps some of its Open Source projects.
Rails, http://rubyonrails.org/ - I follow the mailing list, and occasionally scratch my itch.
CruiseControl.rb, http://cruisecontrolrb.thoughtworks.org/ - I follow the mailing list, and contributed the build serialization support.
EMMA, http://emma.sourceforge.net/ - I'm a committer on EMMA. I rewrote the Maven 1 Plugin for EMMA from scratch, and sometimes monitor the mailing list.
VirtualMock, http://www.virtualmock.org - I created VirtualMock, a Java unit testing tool based on an idea from an article in XP Magazine. It uses Aspect-Oriented Programming and supports the Mock Objects testing approach. However, I now recommend and use Rspec or jMock, so it's currently on hold until I have time to redesign it. Also, Ron Bodkin has eloquently described the approach that any next-generation java-based virtual-mocking tool should probably take.
EasyMock, http://www.easymock.org - I contributed to the EasyMock mailing list for a while, and helped out with the class-mocking patch, which I was kindly given credit for.
JFig, http://jfig.sourceforge.net/ - I contributed to Jfig a bit. It was really cool, but then Spring came along with PropertyResourceConfigurer. :)
VCardSplitter, http://sourceforge.net/projects/vcardsplitter/ - A small utility that I wrote for my own use, and then open-sourced to see if anyone would find it useful. It only took me a few hours to write but people still download it!
AntHill, http://www.urbancode.com/projects/anthill/ - I contributed a couple of small patches to Anthill, and helped out on the Anthill OS and Anthill Pro mailing lists while I was using it.
TypeInterceptor, http://typeinterceptor.sourceforge.net/ - I made this, but then found out you can do the same thing with an undocumented Sun class.
I got all of these Brainbench certifications when I was between jobs after being laid off from IBM during the dot-com bust (best career move EVER). It was an interesting experience, proving mostly that I can score exceptionally high on multiple-choice tests ;)
Brainbench Certifications - July, 2002 view transcript (although tests are old and no longer linked) at http://www.brainbench.com/transcript.jsp?pid=3782448):
Java 1, Master Level (99th percentile on 1st try, ranked in top 30 out of 22330 nationwide)
Java 2, Master Level (98th percentile on 1st try)
Java Server Pages - JSP 1.1 (96th percentile on 1st try)
Web Development Concepts (93rd percentile on 1st try)
OO Concepts (96th percentile on 1st try)
SQL - ANSI
Lotus Certifications (Certified Lotus Professional):
2000, Principal Domino R5 Application Developer
1998, Notes R4 Principal Application Developer
April 2006 - Present: Agile Engineer, Pivotal Labs, San Francisco, CA (working remotely in Tucson, AZ and going to SF one week per month) - At Pivotal, I create Ruby on Rails solutions in the most Agile environment I have ever seen. Pivotal is a great company. I do exciting stuff, and work with incredible people. Check out the Pivotal Labs site for more info, and contact me or visit my Pivotal blog to find out what I've been up to.
August 2005 - April 2006: Software Developer, Ionami Design, San Francisco, CA (working remotely in Tucson, AZ) - With one other developer, managed all aspects of developing and maintaining http://PlanitJewish.com. The codebase was hundreds of thousand of lines of complex Java, XML, XSL, and shell scripts. Used Resin, Apache2, Oracle 10g, and Subversion. Managed support ticket estimation, prioritization, and status reporting with a customized Trac installation
Managed 24/7 production support, including all aspects of deployment, maintenance, and system administration. Set up a Linux servers from scratch, including Resin and Oracle 10g client/server installs. All of my production work was performed remotely, via ssh, VNC, and Remote Desktop.
Responded to a security audit which uncovered security flaws in the legacy code (some of which had been previously identified). Provided a detailed analysis and response to the audit (including HTTP header analysis) - by pointing out some flaws in the initial audit, and making code/db changes to help address remaining problems.
Created and deployed new customized sites for several cities, schools, and synagogues.
Closed hundreds of bugs, maintenance requests, and enhancement tickets.
Performed troubleshooting and debugging of complex production errors.
Provided monthly consolidated site traffic statistics using WebTrends. Wrote batch and Ruby automation scripts to cut several hours of manual labor out of this process each month.
Administered production firewall and load balancers.
Installed and migrated to multiple new servers (two redundant application servers, one database server, staging server, and tools/support server) with zero downtime.
Worked on Ruby on Rails applications, and wrote support/automation scripts in Ruby.
June 2004 - July 2005: Software Developer, VMS, Tucson, AZ - Developed and maintained internal and client-facing Enterprise Web and Client-Server applications.
Used Test-Driven Development, Spring, Swing, Hibernate, Tapestry, Maven, Oracle 9i/10g, Oracle Enterprise Manager, Apache Axis, Web Services, and AOP/AspectJ, in a generally Agile and XP-like environment.
Performed statistical performance analysis using the "R" statistical analysis package
Set up an enterprise-wide Continuous Integration solution using AnthillPro, which managed the automated build and deployment of common internal libraries, and cross-project dependencies.
Worked on a small (2-3 person) team which a wrote a client server Java application with a Swing GUI front end, which was automatically deployed with Java Web Start, and communicated via Web Services to a central server. The application automatically downloaded, synchronized, and played audio and video advertising media which the customers had purchased.
Worked with a team to write a client-server application infrastructure which uploaded and processed high-volume, real-time closed-captioning and audio/video data captured by PC clients in hundreds of TV markets nationwide.
September 2002 - June 2004: Developer, Choice Hotels International, Phoenix, AZ - Worked on development of J2EE web-based Property Management system to be used by Choice Hotels franchisees worldwide. Studied and applied Core J2EE Design Patterns. Used Agile, Extreme Programming and Open-Source tools and practices, including: Frequent iterations and releases; aggressive refactoring using Eclipse; test-driven-development using Junit, Mock Objects, JSUnit and Cactus; Struts; Jakarta taglibs; Jakarta Tomcat; Aspect-Oriented Programming; and Continuous Integration using Ant and Anthill. Also used BEA Weblogic, MS SQL Server, and Tomcat.
Created Wiki website to manage team documentation and communications
Participated in database schema redesign and refactoring.
Responsible for redesign and support of continuous integration process. This included writing and maintaining several Ant scripts to manage the testing, integration, build, verification and publishing of entire application consisting of multiple projects. Used Anthill and Ant to automatically email teams and provide Ant logs when builds failed, and automatically publish artifacts, including links to archived artifacts and logs.
Used Eclipse IDE, including advanced features such as: AspectJ plugin; Jalopy plugin, import management, dependency management of multiple projects; JUnit Testing; remote debugging of Tomcat and Weblogic; and automated refactoring across projects.
Performed aggressive and efficient refactoring, using Eclipse. Wrote JUnit tests to prevent bugs from reoccurring. Leveraged Struts framework and taglibs to write compact and simple classes and JSPs, with a constant focus on abstraction and reuse where it pays off.
July 1995 - July 2002: Application Integrator, IBM Global Services, Tucson, AZ - Performed team lead, technical lead, project management, customer interaction, requirements management, project planning, architecture, design, documentation, development, testing, integration, maintenance, and troubleshooting roles on several diverse projects:
IBM Web Development Project: Worked on a web project with Internet and Intranet components. Used Websphere Studio Application Developer, Websphere 4, Struts, Log4J, and Parasoft JTest. Collaborated on design and enhancement of relational database model and Object-Relational mapping. Designed and implemented persistence layer using Data Access Objects design pattern. Used the Struts framework to develop a pure-HTML expandable tree structure with the ability to modify data on any node of the tree.
IBM Healthcare Account (Horizon Blue Cross Blue Shield NJ): Worked on development of a commercial web application, using VisualAge for Java to develop for Websphere. Designed and implemented MVC/Model 2 architecture using Struts and JSPs, including custom taglibs. Interfaced with a back-end team that provided the Business/Model layer as J2EE Session and Entity Enterprise JavaBeans. To see screenshots and flow of the application, go to http://www.horizon-bcbsnj.com/ and click Brokers, Member Maintenance, Online Tutorial.
IBM Healthcare Account (Nasco): Worked on developing a Java/JSP web application using VAJ and Websphere. Designed and implemented MVC/Model 2 architecture, using Command Pattern for controller layer. Performed design/administration of test and production databases.
w3.ibm.com ("Enterprise Knowledge Portal"): Worked on major redesign of w3.ibm.com Intranet home page, which supported user customization and storage of links, and automated display of customized, continually updated links to users based on their "profile" (employee's rank, location, position, etc). Worked with a widely distributed multi-team group, which required communication with management, architects, and development teams in multiple locations across US and worldwide. Collaborated on design and implementation of a fairly complex relational database model, including consideration of normalization, performance and integrity issues. Worked on design and implementation of overall object model and application architecture. Designed and coded servlets and associated Java/DB2/XML back-end code. Responsible for design and implementation of an XML-based scheme for storage of high-volume user data. Assisted in support of testing group, and helped coordinate problem determination and resolution of issues found during testing.
Track2: Held Technical Lead role, performed Project Management responsibilities, and was primary customer interface. Worked with customer to transform requirements into design, and managed development and deployment over several releases. Designed and implemented integration of Notes databases with MVS/TSO-based IBM HR Database, including mainframe batch jobs and Notes agents to synchronize data on a nightly basis. Track2 played a key role in ISO 9001/14001 certification of IBM's Storage Technology Division. It tracked audits and automatically escalated managers as required.
CallOwn: Performed design and development on several CRM/Call Center applications. Gained experience in Java, VisualAge for Java, Object-Oriented design/programming, REXX, Lotus Notes, Notes/C APIs, Notes/Java APIs, and Notes integration with host-based databases.
Distributed Services Billing: Worked on design and development of Java Swing application to automate billing and web-based reporting for cost-recovery services, such as Phones, Userids, and Help Desk calls.
Configuration Management: Held Configuration Management Lead role on several projects. Designed, documented, implemented, and enforced Configuration Management and Control policies and procedures. Administered CM systems using CVS, Rational ClearCase, CMVC, ISPF/LMF, and SCLM, including the design and coding of several custom utilities and interfaces.
Other projects: Worked on several teams to support a applications using COBOL PL/I, CICS, AIX, and MQSeries, including 24-hour on-call support to troubleshoot production problems for major external customers.
September 1992 - June 1995: Technician and LAN Administrator, New Mexico State University, Department of Chemical Engineering, Las Cruces, NM - Installed, maintained, and administered a NetWare Ethernet-based local area network and all departmental computing resources, including initial installation/configuration of a server, computer lab, and many LAN-based applications, and physical installation of network cabling and fiber-optic security system. Hand-made RS-232 cables and Ethernet cables. Designed and created relational database systems for inventory, student, and alumni records. Created and administered a public departmental web site during the infancy of the WWW, which was accessed using Netscape 1.0.
Bachelor of Business Administration, with Honors, Business Computer Systems
New Mexico State University, Las Cruces, New Mexico, May 1994, 3.7 GPA
Check out my website and hobbies. I enjoy spending time with my wife and son, playing and recording music, hiking, camping, reading, WWII and other history, supporting local music, listening to Community Radio and National Public Radio, playing computer games, and watching movies. I'm very active in my church - I help out with the youth, chaperone homeless folks who stay overnight during the winter, and I sing and play guitar, bass and/or drums every Sunday. You can see some of my pictures on Flickr (http://www.flickr.com/photos/thewoolleyman)