- Mesa, AZ
2009 - Present (Remote)
2004 - 2007
Work with remote team (video calls, group chat, pull requests / code reviews) to develop websites and REST APIs with Ruby and Rails.
Mentor junior developers and new hires on craft, collaboration, debugging, visibility, optimization, maintenance, and deployment.
Use Perl, Python, Ruby, Node.js, Bash, and more to fix, integrate, and automate whatever is needed.
Enhance and maintain legacy Perl and Ruby projects from before acquisition.
Hacked old dev tools to integrate Sass compilation into a 10 year old Rails 1.0 project.
Wrote Python Flask app to export data and table definitions from SQL Server and diff records to help another team maintain backward compatibility during a rewrite.
Setup StatsD and Graphite and updated applications to send statistics to improve visibility.
Introduced Vagrant to increase team development productivity. Built baseboxes with Packer and the same Puppet configuration as the servers. Provisioned Vagrant boxes with additional tools for each project as necessary.
Configured and scripted third-party service APIs to integrate source code hosting, continuous integration, issue tracker/sprint planner, and group chat.
Deployed external APIs and internal microservices backed by Unicorn, Sidekiq, Mojolicious, NGINX, MySQL, PostgreSQL, Redis, Elasticsearch, and RabbitMQ.
Created Puppet modules by analyzing existing legacy production systems in order to migrate from physical servers to AWS for increased capacity.
Wrote Ansible roles, Puppet modules, Hiera configs, Fabric tasks, and shell scripts to configure and maintain 20+ GNU/Linux AWS EC2 instances.
Setup, migrated, and maintained internal support services in AWS including Errbit, Graphite, Jenkins, Opsview, osTicket, Redmine, and home-grown apps.
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 80) 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.
Perl web services and daemons ran on the server to import data, manage background tasks, and initiate interactive shell sessions with the remotes.
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%.
2011 - 2015
Open source search API for the Comprehensive Perl Archive Network.
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.
I've been using primarily open source software since 2002 and have been releasing and contributing to open source software since 2009.
Design and maintenance of GroundworkGuatemala.org
Software Development and GNU/Linux Administration
École Polytechnique Fédérale de Lausanne (EPFL)
A.A.S. Computer Programming
2001/08 - 2002/12