Perl and Free and Open Source Software Consulting

I am available for interesting consulting and contracting opportunities. I have fifteen years of experience in the world of free and open source software, and in some cases I wrote the book (or at least a book) on the software you're using right now.

My particular expertise is the Perl 5 programming language, though I've also delivered paying work in C, Ruby, Python, JavaScript, Java, and even shell.

I have a knack for words and documentation, as you can see from my books and writings.

My preference is for agile software development in conjunction with flexible test-driven development; my bias is evident, as I've been a major instigator of the Perl testing revolution.

If you have the will and the resources to succeed, I can help you start a new project and point it in the right direction, and I can help you rescue a project in trouble and get it back on track.

Selected Project Experience

I've helped to deliver several successful projects. These are some highlights.

Selected Perl and software project consulting experience
Company Dates Responsibilities
Everything Development Company September 2000 - May 2001

This dot-com company had the ambitious goal of making a powerful and flexible web publishing system using development techniques later seen in frameworks such as Perl's Maypole, DBIx::Class, and Catalyst as well as Ruby on Rails.

I started as the lead technical writer, but my responsibilities quickly grew to include a lead development role. Unfortunately, the bursting of the dot-com bubble left us with too few paying customers, but the software survives as variants on sites such as Everything 2 and PerlMonks.

Onsite Technology Inc March 2002 - September 2002

As a senior software engineer, I had the lead responsibility for several client projects of various styles and responsibilities, from medical billing management and reporting to file hosting.

Our primary project was an Internet-capable inventory management and point of sale system using web services written in Perl and Python with a customized version of the L-âne open source project.

Onyx Neon September 2003 - present

I began as a consultant producing training material for a Perl testing course, then stayed on to contribute to the publishing toolchain.

My primary technical responsibilities include overseeing this toolchain, including the CPAN distributions Pod::PseudoPod and Pod::PseudoPod::XHTML, along with the tools extracted from the Modern Perl book project. These tools are available from GitHub and, as of September 2012, have yet to make it to the public CPAN: Pod::PseudoPod::DOM and Pod::PseudoPod::Book. Our toolchain produces PDFs, ePub files, Amazon Mobi files, and HTML. We also use a fair amount of custom LaTeX.

Our infrastructure runs on Perl 5, with Template Toolkit, Catalyst, SQLite, DBIx::Class, Moose, Plack, and PostgreSQL as enabling technologies.

ClubCompy January 2010 - present

This project produces an educational product for helping children understand computer science concepts. My initial role was to oversee the publishing process, including editorial and technical content. With my experience with compilers and virtual machines, my current responsibilities include design and implementation of the next version of the underlying technology.

Brauss Media May 2010 - present

Brauss Media uses a document aggregation, analysis, indexing, and notification system to reach its customers. From 2010 to 2011 I was responsible for extending the Perl side of the system to collect and analyze the documents. In 2011 I extended the Perl code to replace the existing Smalltalk components to perform indexing and notification. In addition, I rewrote the administrative interface in Perl.

The CPAN distribution Dist::Zilla::Plugin::ScpDeploy came out of this project.

This software uses a standard Modern Perl stack, including Moose, Catalyst, Plack, Template::Toolkit and DBIx::Class. The indexing system uses Lucy, the Perl bindings to Lucene.

An experimental project started in February 2012 uses a similar technology but has a richer user interface, including what will become a custom little language VM written in JavaScript.

Coverity August 2010 - August 2011

I designed and implemented a user management and administration application built with Catalyst, Template Toolkit, DBIx::Class, and PostgreSQL. This application had the unique constraint of unifying several separate backends. To make this work I produced an event system which allowed custom plugins for Coverity's in-house developers to write interfaces to their existing software.

While the main interface was a public facing web application, the administrative interface used several command-line applications built atop the same backend. A secondary system component included a custom reporting mechanism.

Puppet Labs November 2010

I produced an experimental test harness written solely in cross-platform Bourne shell.

Primitive Logic March 2011 - June 2011 This project allowed users to search for geolocated resources. The backend technology stack was already chosen when I began to work, and included Java Struts 1, Geronimo, Ant, Eclipse, and iBatis. While I touched all of these components, my focus was on the front end, which used jQuery and the Google Maps API heavily.
Big Blue Marble January 2012 - present I am responsible for all technical decisions within this small company, from website management to the design of the financial analysis system at the heart of the company's flagship project, Trendshare.