aaron maxwell's web space

Aaron Maxwell's Resume/CV

Aaron Maxwell - amax@redsymbol.net
Entrepreneurial Software Engineering and Web Development
Updated, enhanced version at http://redsymbol.net/resume/

I'm a software consultant based in San Francisco, CA, USA. My primary expertise is in the Python programming language, in developing software testing tools, and QA infrastructure. I'm active in open-source development, and enjoy giving public talks and presentations; see my talks page.

Areas of current expertise and specialization:

Other skill areas:

Languages
Expert: Python.
Proficient: C, PHP, shell (bash, etc.), XHTML/CSS.
Semi-skilled: Java, Lisp and Scheme, Javascript, C++, Ruby, Perl.
Operating systems
Proficient: Unices, primarily - Linux, FreeBSD, and older ones like Irix and Tru64. Familiar with Windows XP/Vista and OS X. Currently studying Android and iPhone OS.
Techniques
Version control (SVN, Git, some Mercurial and darcs). Mastery of using VC in both solo projects, and in distributed, multi-developer envioronments, as well as complex branch-merge workflows. Sophisticated use of automated testing (vanilla unit tests, mock objects, nuances of implementing maintainable integration tests). Build tools (package management, Make, Ant).
Methodologies
Design patterns. Object-oriented design. Functional programming. Test-driven development. Agile development teams.
Tools
Ability to adroitly leverage open-source software in building scalable, powerful systems with less wheel-reinvention. MySQL and sqlite for databases, Apache and lighttpd for web servers, etc. Repeatedly demonstrated ability to rapidly master and make use of new tools... like all modern software engineers need to be able to do.
Other
Other buzzword lists available on request.
Writing
I write quite a bit. I started a math education company, Hilomath, whose initial product line consisted of two books I wrote. Write technical essays and articles periodically, often published on my blog, Approaching Infinity. I give technical presentations from time to time: see http://redsymbol.net/talks/. Experienced at crafting end user documentation for software I write, from man pages to HOWTOs to user guides.

Recent Consulting Work History

QA Infrastructure engineer, SnapLogic, Inc.
October 2007 to April 2009. Designed and implemented a distributed, fault-tolerant, evolvable QA infrastructure for automated testing of a large, multi-(process, threaded, platform, language) software product. Includes unit and integration test discovery, advanced reporting, code coverage measurements (both per-test and aggregate), static source code analysis, performance benchmarking. Built a quality monitoring service with automated alerts based on events, such as drops in code coverage. Designed and implemented a multidimensional benchmark performance tool capable of spanning multiprocess integration tests, complete with an extensible plug-in architecture for new metrics, and data analysis and report generation. Leveraged existing open source tools as possible, extending as needed. Contributed code implementing significant functionality to the BuildBot (87, 145, 140) and Figleaf projects. Presented overview of our automated QA approach at Pycon in March 2009.
Automated book shopping agent - FindForMe.net
Summer, 2008. Conceived, designed and implemented FindForMe.net, an automated book shopping assistant and advanced Amazon affiliate. Service consists of web site plus several attendant programs, implemented in Python 2.5 using Django 1.0, which make use of the Amazon Associates Web Service to continually scan inventory of thousands of independent booksellers, alerting user when books become available at their preferred price.
Web development, SnapLogic, Inc.
July 2007-Sept 2007, and other times as needed since. Designed and implemented a "community forge" site based on Python and Django. Included user registration process integrated with LDAP user database; feature-rich tagging system; software package publication mechanism, including terse and detail views, automated package building and publishing. Development of full test suite, including unit tests and integration tests, to ensure correct site functionality and user experience. Isolated and created fix for subtle mod_python issue in Django; submitted patch was accepted by upstream and integrated into trunk (http://code.djangoproject.com/ticket/4710). Integration of user registration across separate Django (Python), Trac and Drupal (PHP) web sites. Extensions to Trac bug-tracking system, including fixing a mysql-backend issue (see ticket 5783 changeset 6506, and references therein). "Updates" server used by SnapLogic client software to query for new versions from customer installations.
Web Development, Radical Fusion, Inc.
May 2006 to June 2007. Multiple mid-size web development projects for clients of Radical Fusion, as part of small teams of 2-4 developers. In several, took lead design role under the CTO. Using Agile practices and test-first development, worked with team members to nail down initial requirements, design a framework and development roadmap, iteratively implement features and deliver the finished product to the client. Primarily developed in PHP and Javascript, using Linux + Apache on server, and multiple web browser clients.

Publications

Books
Inner Algebra, Integration Your Brain
Articles
See my web logs Approaching Infinity and the official Hilomath Blog.
Presentations
See Aaron Maxwell's Talks for the most up to date list.

Open Source Development

L2P
Tool to generates PNG images from LaTeX math expressions. Designed, implemented, and continue to maintain. See http://redsymbol.net/software/l2p/ . Distributed in the FreeBSD ports: http://www.freebsdsoftware.org/graphics/l2p.html .
Contributions to other projects
Contributions to Buildbot, Trac, Django, Figleaf, Open Lock Daemon and more.

Education

Previous Resumes

Several times in my life, my work has changed dramatically enough that I rewrote this resume from scratch (you probably don't need details of my retail management experience now, for example). For brevity, I tend to omit things older than a few years if they are not really impressive. The elder versions are kept for posterity.