Work Experience
- June 2011 - present
- The Container Store, Coppell, Texas
- Corporate Applications Architect
Senior developer on a team building and maintaining a suite of Java applications that support the operation of the stores, including point-of-sale, gift registry, and order fulfillment.
- April 2009 - June 2011
- Improving Enterprises, Dallas, Texas
- Principal Consultant
Senior developer on a team building shared technology services for shrink-wrapped tax preparation products using Rails 3, .NET, and ASP.NET MVC 3. 100% at client site.
Senior developer on a team building a suite of Java applications that solve aircraft-routing-for-maintenance problems given fleeted flight schedules and other constraints at a major commercial airline. 100% at client site.
Advisor and technical lead for a major commercial airline. Took an offshore-developed Java application intended to deliver timely notifications of flight events to crew via email and/or SMS, and in four weeks time cut its PLOC in half, refactored for greater intention revelation, introduced Ant scripts to build the system reliably, added unit tests for crucial parts of the application, and resolved an issue during beta testing that was causing duplicate notifications to be delivered to crew. 100% at client site.
Senior developer on a team building an Ajax web-based application for collections agents at a mortgage lending division of a major bank, intended to minimize average hold time on collections calls. 100% at client site.
- July 2007 - March 2009
- Semantra, Inc., Addison, Texas
- Agile Technologist
Senior developer on an agile team building a natural-language-based ad hoc reporting and analytics application for non-technical users.
- 2006 - 2008
- ReviewNet Corporation, Jenkintown, Pennsylvania
- Author (contract)
Created online IT skills assessments covering the following subject areas: Java 2 Standard Edition 5; Java Servlets; Struts; Model-View-Controller (MVC) Concepts.
Reviewed skills assessment content in the following subject areas: J2EE Security; Developing, Testing, and Deploying J2EE Applications.
- October 2006 - July 2007
- Valtech Technologies, Addison, Texas
- Senior Consultant
Technical lead on a project to retrofit the ad-hoc presentation layer of a travel reservation/distribution provider's Internet booking engine with the Struts framework and sensible browser behavior when navigating the site using back/forward/refresh buttons.
- August 2005 - September 2006
- Zix Corporation, Dallas, Texas
- Senior Developer
Senior developer on a project to enhance Zix's secure e-mail offerings with "push" delivery capability, limited forwarding, and 128-bit AES encryption.
Senior developer on a project to migrate a two-tier e-Prescribing application to a three-tier .NET architecture.
- March 2004 - August 2005
- ThoughtWorks, Chicago, Illinois
- Application Developer/Consultant
Senior developer on a project to re-architect a clinical enterprise application written in C++ to a J2EE environment. Modified FitNesse to allow file attachments on individual pages as opposed to one shared "files" section. 80% travel.
Senior developer and mentor on a project to introduce web services into an existing product in an employee benefit services provider's enterprise. Mentored project teams in agile methods, continuous integration, and test-driven development. 80% travel.
Senior developer on a project to produce a J2EE portal that aggregates numerous applications for dealers of a leading heavy equipment manufacturer. 80% travel.
Senior developer on a project to produce a web-based J2EE application that automates much of the cash applications and lease/loan funding operation of a major computer manufacturer's leasing division, replacing a great deal of manual, Excel-based work and enabling the company to reduce manpower in the finance department. 80% travel.
- January 2002 - March 2004
- Countrywide Home Loans, Plano, Texas
- Senior Software Technical Specialist
Designed and developed real estate closing services applications using Java/J2EE and .NET. Conducted technical interviews. On own initiative, enhanced the department's Java skills assessment test administered to prospective developers and graded dozens of completed assessments; and promoted and learned about software practices such as test-driven development (TDD), software craftsmanship, refactoring, mock objects, JUnit, agile development, and exception handling via book discussions and presentations.
Senior developer on a project to produce a unified customer administration application for the company's real estate closing services subsidiary.
Senior developer on a project to produce a sub-escrow processing system for LandSafe Title of Southern California.
Technical lead and senior developer on a project to produce a prototype of an enterprise-wide processing system for LandSafe Title of Southern California.
- May 2001 - December 2001
- Valtech Technologies, Addison, Texas
- Senior Consultant
Architect, technical lead, mentor, and developer on a project to produce a J2EE-based commission management system for a major commercial airline. 100% at client site.
- February 1999 - May 2001
- ObjectSpace, Dallas, Texas
- Infrastructure Specialist/Consultant
Senior developer on a project to produce a wireless travel application for a major travel reservation information company. Minimal travel to client site.
Consultant on a project to produce a customer support application for a global computer manufacturer. 100% travel.
Conducted technical interviews and graded written Java skills assessments for the recruiting department.
- July 1992 - February 1999
- Nortel Networks/Bell-Northern Research, Richardson, Texas
- Member of Scientific Staff
November 1995 - February 1999
As a software engineer, designed and implemented services and applications for and on top of the Wireless Automation Tool Development group's Test Tool Framework (TTF), a set of reusable components for creating telephony test automation tools, and BITE, a test information repository.
February 1994 - November 1995
As a product verification specialist, developed and maintained several utilities for test suite extraction and verification using Perl; devised, executed, and verified automated test suites for a variety of DMS-250 call processing features, primarily involving call treatment, OA&M, and ISUP protocol conformance.
On own initiative, co-developed an "Introduction to Perl" class for Nortel's internal training department, and instructed several sessions up until 1998.
July 1992 - February 1994
As a release engineer, performed software configuration management and automated builds using Nortel's proprietary SCM system, supporting tools, and tools of my own creation. Created utilities and applications to assist developers of Nortel's switching software--i.e., the users of the SCM system--in performing local builds and configuring software packages.
On own initiative, rewrote the material for the "Unix Fundamentals 2" class for Nortel's internal training department, and instructed several sessions up until 1995.
Presentations
- Tulsa TechFest, October 7, 2011, Tulsa, OK. Presentation: "Bending JUnit To Your Will".
- Dallas JavaMUG, November 10, 2010, Dallas, TX. Presentation: "Functional Programming on the JVM using Clojure".
- Tulsa TechFest, November 12, 2010, Tulsa, OK. Two presentations: "Declarative Programming in Java: Proxied Interfaces Configured with Annotations" and "Achieving Closure: A Peek Into Project Lambda".
- DFW Scrum Meetup Group, September 21, 2010, Dallas, TX. Presentation: "Test-Driven Development in a Scrum World".
- DFW Scrum Meetup Group, August 18, 2009, Dallas, TX. Presentation (with Don McGreal): "Test-Driven Development".
- Dallas TechFest, June 19, 2009, Frisco, TX. Presentation: "A Sense of Closure: Demystifying Lambda Expressions and Anonymous Code Blocks".
- Tulsa TechFest, Oct. 9-10, 2008, Tulsa, OK. Two presentations (with Derek Lane): "Pardon the Interruption: What's the Deal with Groovy?" and "Continuous Testing for the Java Platform".
- Dallas JavaMUG, "The Next Big JDK Thing", June-July 2008, Dallas, TX. Presentation on the basics of JRuby.
- Dallas TechFest, May 3, 2008, Addison, TX. One presentation (with Derek Lane): "Pardon the Interruption: What's the Deal with Groovy?".
Publications
- "Eliminate Boilerplate Code with the PICA Technique for Java." DevX.com
- "Create Domain-Specific Languages with ANTLR." DevX.com (with Rod Coffin)
- "Limitations of reflective method lookup." Java Report, Vol. 5, Issue 8, August 2001, pp. 22-28.
- Reviewed technical manuscripts for Pragmatic Bookshelf, Manning Publications, Addison-Wesley, and Prentice-Hall.
Education
- Rice University, Houston, Texas. Bachelor of Arts in Computer Science, 1992.
Certifications
- Sun Certified Developer for Java 2 (150/155)
- Sun Certified Programmer for Java 2 (92%)
Skills Inventory
| Technology/Tool/Technique | Periods of Continuous Use |
|---|---|
| .NET 3.5, 4.0 | 2010-2011 |
| .NET 1.0 | 2003-2004 |
| .NET 1.1 | 2005-2006 |
| Ant | 2002-present |
| ANTLR | 2007-2009 |
| ASP | 2005 |
| ASP.NET | 2003-2004, 2005 |
| ASP.NET MVC 3 | 2011-present |
| Bamboo | 2007-2010 |
| bash | 2007-present |
| BEA WebLogic 8.1 | 2004 |
| Bugzilla | 2005-2006 |
| C | 1992-1997 |
| C shell | 1992-1993 |
| C# | 2003-2004, 2005-2006, 2010-present |
| C++ | 1995-1999, 2005 |
| Cactus | 2001 |
| Checkstyle | 2005-present |
| Clover | 2007-2009 |
| Cobertura | 2006-present |
| CppUnit | 2006 |
| CruiseControl | 2002, 2004-2005 |
| Cryptographic algorithms: TripleDES, AES (Rijndael), SHA-1, MD5 | 2002, 2004-2005 |
| CSS | 2005-present |
| CVS | 1997-1999, 2003-present |
| DbUnit | 2005 |
| EasyMock | 2004-2005, 2007-2010 |
| Eclipse | 2005-present |
| EJB | 1999, 2001-2002 |
| EMMA | 2005-2006, 2010 |
| Ext JavaScript framework | 2009-2010 |
| FitNesse | 2005 |
| Git | 2009-present |
| GreenPepper | 2007-2008 |
| Groovy | 2008 |
| Haskell | 2010 |
| Hibernate | 2004 |
| HP-UX | 1992-1999 |
| HTML | 1996, 1999-present |
| HTTPUnit/JWebUnit | 2004 |
| Hudson/Jenkins | 2010-present |
| IBM MQSeries | 2001 |
| IBM Rational Application Developer 6.0 | 2005 |
| IBM VisualAge for Java | 1999-2001 |
| IBM WebSphere Application Developer 5.1 | 2005 |
| IBM WebSphere Application Server 6.1 | 2010 |
| IBM WebSphere Application Server 6.0 | 2005 |
| IBM WebSphere Application Server 5.1 | 2005 |
| IBM WebSphere Application Server 4.0 | 2002-2003 |
| IBM WebSphere Application Server 3.5 | 2001 |
| IBM WebSphere Application Server 2.0 | 1999-2000 |
| IntelliJ IDEA | 2002-present |
| Java | 1997-present |
| Java RMI | 1998, 2001 |
| JavaScript | 2005-present |
| Java Servlets | 1999-present |
| JavaServer Pages | 1999-2007 |
| Java Swing | 1998-1999, 2011-present |
| JBoss | 2002 |
| Jester | 2005-2006 |
| Jetty | 2008-2009 |
| JIRA | 2007-2009 |
| JMS | 2002 |
| JNI | 1998 |
| jQuery | 2010-present |
| JRuby | 2008 |
| Jumble | 2008 |
| JUnit | 2001-present |
| Korn shell | 1992-1999 |
| lex/yacc | 1996-1998 |
| Linux | 2006-2007 |
| Log4J | 2001-2010 |
| make | 1990-1999 |
| Maven | 2004, 2007-present |
| Mercurial | 2010-present |
| Microsoft SQL Server 2000 | 2002-2004, 2005 |
| Microsoft SQL Server 2005 | 2008-present |
| Microsoft Visual Studio 2010 | 2010-present |
| Microsoft Visual Studio .NET 2003 | 2003, 2005-2006 |
| Mockito | 2009-present |
| Motif | 1992-1993 |
| MySQL | 2008-2009 |
| NAnt | 2003, 2005-2006 |
| NUnit | 2003-present |
| NetBeans | 2010-2011 |
| ObjectSpace Voyager | 1999-2001 |
| Oracle 9i | 2004-2005 |
| Oracle 10g | 2009-present |
| Perl | 1993-present |
| Perl | 2011-present |
| PMD | 2005-present |
| Python | 2002, 2010 |
| Rails | 2010-2011 |
| Rally | 2010 |
| Rational ClearCase | 2005-2006 |
| Rational ClearQuest | 2000, 2005-2006 |
| Ruby | 2002-present |
| Scrum | 2006-present |
| Selenium | 2005-2008, 2010-2011 |
| SMTP | 2006-2007 |
| Spring | 2007-present |
| Struts | 2001-2007, 2010 |
| Subversion | 2004-present |
| Test-Driven Development | 2002-present |
| Tomcat | 2002, 2005-2010 |
| VBScript | 2005 |
| Windows 2000/XP/7 | 2000-present |
| WML/HDML | 1999-2001 |
| Wicket | 2007-2008 |
| XDoclet | 2004 |
| XHTML | 2004-present |
| XML | 2000-present |
| XMLUnit | 2005, 2008 |
Side Projects
- Projects on GitHub
- Property Binder, a Java library that uses the PICA technique to provide a type-safe way to manipulate properties files.
- JOpt Simple, a command line option parsing
library written in Java using test-driven development. Supports GNU
getopt_long()and POSIXgetopt(). - Jaggregate, a generics-aware collections library modeled after the Smalltalk collection protocol.