Andy Lester

Manager, senior software engineer, speaker, writer


815-245-1738
McHenry, IL
http://andylester.org/

Summary

  • Manager, project leader and senior software engineer for e-commerce sites. Over 20 years in the library and education industries.
  • 30 years experience in business application development.
  • Extensive SQL database experience with Oracle, PostgreSQL and MySQL.
  • 20 years experience in web applications and Perl and PHP, including mod_perl, Template Toolkit, WWW::Mechanize and Perl's automated testing ecosystem.
  • Active in the Perl community: Prolific module author, frequent speaker & trainer
  • Author of Land the Tech Job You Love, 280 pages, published June 2009 by Pragmatic Bookshelf, a guide to job hunting for technical professionals.

Work Experience

Follett School Solutions, McHenry, IL (2012-now)
Book Wholesalers Inc, McHenry, IL (2007-2012)

BWI was a wholesaler of library books to public libraries. I drove sorely needed upgrades to BWI's TitleTales website since the company's 2007 move to McHenry. After BWI was sold, I transferred to Follett School Solutions.

Senior Programmer

  • Inherited and modernized e-commerce web app of 100,000 lines of PHP under Apache.
  • Created a modern development environment for the app. My predecessor had one codebase: the production server.
  • Implemented version control, automated testing, bug tracking, coding standards and a stable release process.
  • Design, coding and testing of ongoing improvements to the app. New development was done with modern Perl techniques.
  • Created and evangelized the company wiki in MediaWiki. The wiki grew to 3,000 pages in its first year.
  • Received the "Follett Values In Action" award, a $500 quarterly prize, for the company wiki.
  • Planned and implemented an 11,000,000-document search engine in Solr & Lucene to replace an existing search application using Oracle Text.
  • Created Cacti system to track performance trends in production web and database servers.
  • Currently learning iOS/iPad/iPhone development.

Socialtext, Palo Alto, CA (2006-2007)

Socialtext makes wikis for the enterprise. I worked as release manager for the software, and led the project for Socialtext Open, the open source release of Socialtext's wiki package.

Member of Technical Staff

  • Drove release of Socialtext Open.
  • Public face of Socialtext to the open source user community.
  • Documentation and infrastructure improvements to improve release infrastructure and installabilty of Socialtext Open.
  • Code quality improvements and automated checking via Perl::Critic.

Follett Library Resources, McHenry, IL (2001-2006)

Follett Library Resources is the leading wholesaler of library books to the K-12 market in the U.S. The Titlewave website is an online application that helps librarians select materials for purchase. Its strategic importance to the company cannot be overstated.

Web Applications Manager (2002-2006)

After being promoted to manager, I scaled the department upward to include six programmers and a system administrator.

  • Grew and led team of six programmers and system administrator
  • Started migration of PHP codebase to object-oriented mod_perl.
  • Defined software construction processes used by all programmers
  • Interviewed and hired all programmers
  • Directed long-term system administration goals
  • Chief architect of web systems infrastructure
  • Gave training classes for staff and sister companies
  • Planned future growth with my counterpart on the project management side of the house

Project Leader / Sr. Software Engineer (2001-2002)

When I started, there was one programmer, one system administrator and no repeatable process. Releases were made by FTPing tarballs to production servers, and version control was made by occasionally zipping up the source.

  • Project manager and lead programmer for all projects
  • Lead programmer/architect for the Titlewave team
  • Implemented CVS & Subversion version control systems
  • Created new infrastructure for the site using PHP's object features
  • Implemented software process and coding standards

Follett Software Company, McHenry, IL (1991-2000)

FSC is the leading creator of library automation software for the K-12 market. If you checked out a book in a school library in the past 25 years, chances are it was done with a Follett Software circulation system.

Sr. Internet Engineer (1996-2000)

In the winter of 1995, the company president charged with me modernizing the external website and creating an intranet.

  • Created the company-wide intranet and external website infrastructure
  • Built the server from scratch with Windows NT 4.0, WebSite Pro and ColdFusion
  • Created all intranet applications for all departments, from initial user requirements to design to implementation to training to support. Applications included: content management; phone & people directory; product return tracking; project time tracking; bid & proposal tracking; etc.
  • Trained users in HTML, Microsoft FrontPage and JASC Paint Shop Pro
  • Created maintenance tools, such as a web-spider with Perl and MySQL to monitor web pages
  • Built Linux machine running Samba and MySQL for administrative use
  • Automated intranet publishing by accessing Microsoft Excel COM objects from Perl
  • Analyzed web server traffic, both with Analog stats package and homemade Perl programs

Software Engineer (1991-1996)

  • Designed, coded and tested library automation software in C and C++.
  • Worked on teams of two, four and ten, depending on the project

S.D.C. Associates, Elk Grove Village, IL (1986-1991)

Operated 70 retail clothing stores under the names Just Pants, Button Up and What a Deal!

  • Wrote Pascal software for retail stores: Point-of-sale system; purchase orders; inventory; email
  • Wrote back-office systems in BASIC, COBOL and SPEED II 4GL: Accounting; inventory; email

Open Source

Some of the projects I've created and contribute to include:

ack
I created the widely-used text search tool ack (sometimes packaged as "ack-grep") in 2006. As ack has matured, my role has changed from creator and author to shepherd of incoming patches.
The ack website, beyondgrep.com, also is a hub of information about other code search tools to help users decide which tool best fits their needs. The site gets about 8,000 unique visitors each month.
bobby-tables.com
This site is a collection of information to help novice programmers understand how to properly use parametrized SQL queries to prevent SQL injection attacks. While I created the site in 2008, it is now based on community content. Source for the site is kept on GitHub, with contributions coming in just like patches to a code-based project. Around 4,000 unique visitors use bobby-tables.com in a month.
WWW::Mechanize
WWW::Mechanize is a Perl module that allows easy navigation of websites, acting as a web browser in an object. Created as a fork of WWW::Automate in 2002, I maintained Mech until 2012. It is now slated to become part of the standard libwww-perl library. Its sister module, Test::WWW::Mechanize merges the convenience of Mech with Perl's automated testing ecosystem.
Perl 5
As a member of the Perl 5 Porters, or core Perl developers, I contributed patches to the C source code to make it more maintainable and with safer constructs. I performed regular static analysis on the C code and strengthened the compiler warnings to check for questionable code.
Parrot
Parrot is a virtual machine, written in C, for running modern dynamic languages like Perl 6. Since 2007 I have worked to increase stability of the code by increasing the number of compiler warnings checked, running static analysis tools like splint, and instrumenting the code.
Perl::Critic::Bangs
A collection of policies for the Perl::Critic static analysis framework.
Test::Harness and prove
During the time I maintained the core Perl module Test::Harness, I created the prove tool to encourage test-driven development by making test execution simpler from the command line. prove is now shipped with every Perl distribution.
Perlbuzz
Perlbuzz is a news site about Perl 5, Perl 6 and Parrot. As more Perl blogs have become popular, Perlbuzz has mostly become a stream of stories, selected by me, fed primarily through the @perlbuzz Twitter feed. Perlbuzz reaches almost 7,000 readers and followers each week.
White Camel award, 2005
Awarded one of three White Camels in 2005. From the announcement by the Perl Foundation:
Andy Lester is one of the prominent voices advocating testing and quality assurance. He has written extensively on the importance of good testing and maintains qa.perl.org. He is also the creator and project leader of Phalanx, which is devoted to improving tests and test coverage of Perl and CPAN modules to maintain quality as development continues. Phalanx encourages interaction between programmers by having groups of developers work together to improve test coverage on the most used CPAN modules.

Presentations

Many of my slide decks are available on Speaker Deck or Slideshare.

YAPC::NA 2012, 6/13/2012
29 Ways to Get Started in Open Source
O'Reilly Open Source Conference 2011
Building and Maintaining a Project Community with Github, 7/27/2011
CodeConf, 4/9/2011
Building and Maintaining a Project Community with Github
Palmetto Open Source Conference, 4/16/2010
What schools should be teaching IT students
O'Reilly Open Source Conference 2008
People For Geeks, 7/22/2008
Just Enough C For Open Source Programmers, 7/24/2008
Frozen Perl 2008, 2/16/2008
Get Out Of Technical Debt Now!
Grand Rapids (MI) Perl Mongers
Get Out Of Technical Debt Now!, 9/28/2007
O'Reilly Open Source Conference 2007, 7/25/2007
Get Out Of Technical Debt Now!
YAPC::NA 2006
Get Out Of Technical Debt Now!, 6/26/2006
Pragmatic Job Hunting, 6/28/2006
Pittsburgh Perl Workshop, 9/23/2006
Preventing Crisis: Project estimation and tracking that works
San Francisco Perl Mongers, 8/15/2006
Get Out Of Technical Debt Now!
Grand Rapids (MI) Perl Mongers, 10/25/2005
The A-Z Guide Of CPAN Modules For New Authors
O'Reilly Open Source Conference 2005
Practical Perl Testing, with chromatic, Ian Langworth and Bill Odom, 8/3/2005
Preventing Crisis: Project estimation and tracking that works, 8/4/2005
YAPC::NA 2005, 6/29/2005
Preventing Crisis: Project estimation and tracking that works
San Francisco Perl Mongers, 4/15/2005
Preventing Crisis: Project estimation and tracking that works
WebGUI Users Conference 2004, 10/21/2004
Introduction to Perl Programming
Advanced Perl Programming
Testing With WWW::Mechanize
O'Reilly Open Source Conference 2004, 7/29/2004
Advice For Open Source Job Seekers
YAPC::NA 2004
Perl Wizardry Without An Editor, 6/16/2004
The Open Source Programmer's Guide To Getting A Great Job, 6/16/2004
Automated Testing Of Large-Scale Projects, 6/17/2004
Minneapolis Perl Mongers, 4/14/2004
Automated Testing Of Large Projects With Perl
St. Louis Perl Mongers, 1/14/2004
Introduction to Automated Testing
Grand Rapids (MI) Perl Mongers, 9/25/2003
Automated Testing Of Large Projects With Perl
O'Reilly Open Source Conference 2003, 7/10/2003
Automated Testing Of Large Projects With Perl
Uniforum Chicago
29 Ways to Get Started in Open Source Today, 5/8/2012
An Overview of Git, 8/10/2010
New Features in Perl 5.12, 7/13/2012
Effective Job Interviewing from Both Sides of the Desk, 9/22/2009
Just Enough C for Open Source Programmers, 7/8/2008
Development Process Lessons from Open Source, 9/11/2007
The A-Z Guide Of CPAN Modules For New Authors, 10/11/2005
Preventing Crisis: Project estimation and tracking that works, 3/22/2005
Perl Security With Tainting, 8/10/2004
Perl Wizardry From The Command Line, 2/10/2004
Automated Testing Of Large Projects With Perl, 8/12/2003
Automated Testing With Perl, 2/11/2003
Chicago Perl Mongers
Introduction to WWW::Mechanize, 7/10/2007
Perl Program Repair Shop, 6/12/2007
101 Things Every Perl Programmer Should Know, 4/10/2007 and 4/24/2007
New Modules For a New Year, 1/9/2007
Perl Security With Tainting, 8/3/2004
The Open Source Programmer's Guide To Getting A Great Job, 6/8/2004
Module Building 101, 1/7/2004 (This talk inspired me to create Module::Starter.)
A Field Guide To The Perl Command Line, 11/4/2003
Automated Testing With Perl, 5/19/2003

Books

Author

Land The Tech Job You Love (Pragmatic Bookshelf, June 2009): Author, 280 pages, ISBN: 978-1-93435-626
My book on how to find a job and get hired once you know what sort of job you're really looking for.

Contributor

Mac OS X Tiger In A Nutshell (O'Reilly, 2005): Updates on entire book. Co-author credit.

Perl Best Practices (O'Reilly, 2005): Technical reviewer
"I would like to express my deepest gratitude... [t]o Andy Lester, for inspiring with his deep understanding of, and passion for, the best coding practices." -- p. xxi

Pro Perl Debugging (Apress, 2005): Technical review and co-author/writing mentor

Pro Perl (Apress, 2005): Technical review

Mac OS X Panther In A Nutshell (O'Reilly, 2004): Updates to Unix command chapter

Code Complete, 2nd Edition (Microsoft Press, 2004): Technical review

Spidering Hacks (O'Reilly, 2003): Author of three articles

  • Hack #21: WWW::Mechanize 101
  • Hack #36: Downloading Images From Webshots
  • Hack #44: Archiving Yahoo! Groups Messages With WWW::Yahoo::Groups

Google Hacks (O'Reilly, 2003): Technical editor
"And to Andy Lester, our technical editor, goes much appreciation for his thorough nitpicking." -- p. xiii

Perl, CGI & JavaScript Complete, 2nd ed. (Sybex, 2003): Updated Perl sections for Perl 5.8

XML Primer Plus (Sams, 2002): Technical review

Teach Yourself Unix System Administration in 24 Hours (Sams, 2002): research, development & first draft for chapter 22, "Awk & Perl", plus technical review

Perl quick reference chart (Barcharts Inc., 2001): Technical review, and major rewrite

Unix Power Tools, 3rd ed. (O'Reilly, 2001): Technical reviewer for 10 chapters

Magazines

The Perl Journal (CMP Media LLC), frequent author

  • "Web Security with Taint Checking", September 2004
  • "OSCON Wrapup", August 2004
  • "Using Devel::Cover", January 2004
  • "Mastering Perl/Tk (book review)", December 2003
  • "Introduction to Automated Testing with Test::Harness", November 2003
  • "OSCON Wrapup", August 2003
  • "Five Ways To Find Files", July 2003
  • "Data Manipulation & Perl Command-Line Options", May 2003

Articles

Selected articles and blog posts.

Education

I've taken classes towards a Business Management degree. Relevant classes include:
  • Principles of Accounting I & II
  • Introduction to Management
  • Human Relations in Business
  • Experiencing Management Decisions
  • Creative Problem Solving

I've also taken Edward Tufte's "Visualizing Data" seminar, and Stephen Covey's "Living The Seven Habits."

Technical Skills & Keywords

Perl, CPAN, WWW::Mechanize, ack, PHP, Ruby, mod_perl, SQL, C/C++, HTML, CSS, object-oriented programming, MVC, test-driven development

Oracle database, PostgreSQL (Postgres), MySQL

Linux, Mac OS X, Apache HTTP server, nginx, Cacti, Nagios, SNMP, Solr & Lucene, Tomcat

GitHub, Git, Subversion, tmux, vim, awk, shell, bash

MediaWiki, WordPress, Movable Type