- Mesa, AZ
2009 - Present (Remote)
2004 - 2007
Work with remote team (video conferencing, pair programming, pull requests) to develop websites, REST APIs, and gems with Ruby and Rails.
Debug everything: team code, third party libraries, database queries, application configurations, network interactions, vulnerabilities, operating system voodoo, resource utilization, production incidents, integration test environments, and team communication and productivity.
Configure, create, and modify tools to integrate different parts of the system using the best tool for the job including Perl, Python, Ruby, Node.js, and Bash.
Increase team productivity with Vagrant virtual machines for development. Use Packer and the same Puppet configuration as the servers to build baseboxes. Maintain and augment Vagrant boxes by provisioning additional dependencies and adding utilties for each project as necessary.
Configure and maintain GNU/Linux AWS EC2 instances with Ansible, Puppet, Hiera, Fabric, and of course, shell scripts.
Deploy external APIs and internal microservices backed by Unicorn, Mojolicious, NGINX, MySQL, PostgreSQL, Elasticsearch, Redis, and RabbitMQ.
Collect application statistics and server metrics with collectD, StatsD, Graphite, Opsview, and custom Nagios checks.
Setup, migrate, and maintain internal support services in AWS including Errbit, Graphite, Jenkins, Opsview, osTicket, Redmine, and home-grown apps.
Configure and script third-party service APIs to integrate workflow including source code hosting, continuous integration build status, issue tracker/sprint planner, and group chat room.
Create Puppet modules from existing legacy production systems in order to migrate those products from physical servers to AWS for increased capacity.
Write utilities for parsing and generating files and performing system tasks to analyze metrics, reuse existing data, reduce duplication, and increase efficiency.
Help mentor junior developers and new hires on topics such as operating systems, automation, debugging, testing, app visibility, code quality, maintainability, communication, and open source.
As Software Developer / Systems Administrator for AutoLookout (before being acquired by Auction Edge in 2012):
Worked with two other developers to create and maintain configurable Ruby on Rails websites customized and deployed for more than 80 customers. Responsibilities included all aspects of this process:
Led design and implementation of a system of (eventually more than 75) satellite GNU/Linux computers to collect data from remote databases (DB2, SQLServer, CSV files) and aggregate it in a central location for our websites.
Remote computers ran custom Perl software to collect and process data and connect to the server for data transmission, automatic updates, and RPC.
AnyEvent, DBI, Moose, Net::SSH, LWP, Template::Toolkit, Test::Routine
Perl web services and daemons ran on the server to import data, manage background tasks, and initiate interactive shell sessions with the remotes.
AnyEvent, DBI, CGI::Application, Mojolicious, Moo, Plack
Worked with vendors to create web services and background jobs to receive and parse data from several formats (XML, CSV, YAML, JSON) and import into our system.
Maintained production servers and development environments.
Converted home grown test suite to Test::Builder/TAP and increased coverage by 65%.
Open Source Search API for the CPAN
After contributing and participating on IRC for more than a year I was invited to join the admin team to help with issue management, deployment, system administration, and future design.
As team members live all over the world collaboration is done almost entirely via IRC and GitHub pull requests.
In the summer of 2014 I mentored an intern with the Free and Open Source Software Outreach Program for Women (now called Outreachy) and assisted another team member mentoring a student through Google Summer of Code.
Moose, Catalyst, Template::Alloy
I have released and contributed to modules for testing, automation, database interaction, command line applications, Dist::Zilla plugins, parsing, formatting, text manipulation, and system utilities.
Design and maintenance of GroundworkGuatemala.org
Software Development and GNU/Linux Administration
A.A.S. Computer Programming
2001/08 - 2002/12