Senior Database Administrator and Systems Engineer
FlowPlay, February 2010 - Present
 
  • Server configuration management via Puppet
  • Tomcat high availability via Keepalived
  • Wrote Java mysql proxy with query cache support
  • Squid based reverse caching proxy for assets
  • Multimaster MySQL setup over 10 servers
  • Monitoring via Nagios (NRPE) and Diamond
  • Networking architecture improvements targeting latency
  • Developed backup, archival, and validation procedures
  • Improved queries, indexes, and database schemas
  • Setup and administered firewalls using Shorewall
  • MySQL replication integrity testing via pt-table-checksum
  • OpenVPN deployment including limited network access
  • Capacity and growth planning, Bottleneck identification
  • Automated schema change timing and testing utility
  • Automated database query log processing in Python
  • PXE kickstarting of CentOS servers
  • Subversion server administration and replication
Senior Development Engineer
Adapp Solutions, June 2009 - February 2010
 
  • Integrated Jquery based web 2.0 frontend elements
  • Wrote object cache layer backed by Memcache
  • ~2900 Customer Databases with up to 10 million rows
  • Developed schema upgrade and management tool
  • Developed database schema verification tool
  • Developed self contained deployment code
  • Enhanced error reporting code
  • Co-lead agile development team of 5 developers
  • Improved 'brand' creation time by a factor of 20x
  • Improved core CakePHP libraries to prevent exploits
  • Developed peer code review process
  • Standardized development and staging environments
  • Added internationalization features
  • Audited and repaired production database schema
  • Improved developer debugging tools
  • Audited and tuned production MySQL servers
  • Improved Nagios health check scripts
Lead Developer
Name Intelligence, June 2008 - June 2009
 
  • Managed team of 5 developers
  • Code-base of approximately 700,000 lines
  • MySQL database of approximately 3.5 terabytes of data
  • Development of staging process
  • Lead the design of a middle tier unified API layer
  • Reduced average page time from 4.4 seconds to 1.5
  • Refactor of existing code to reduce memory footprint
  • Development of customized live auction system
  • Deployment scripts to standardize code roll outs
  • Designed an site resource limits system
  • Enhanced shared security framework
  • Implemented per user 'click stream' tracking
  • Refactor billing system to increase reliability
  • Utilized SEO improvements to increase placement
  • Increased ad revenue by following UX research
  • Wrote Memcache object cache layer
  • Integrated Jquery based web 2.0 frontend elements
Devops
Silicon Mechanics, March 2005 - June 2008
 
  • Administratored MySQL multi-master replciation setup
  • Wrote core PHP web application librarys
  • Code architecture planning and implementation
  • Clarify existing code to reflect best practices
  • Convert existing procedural code by objectification
  • Added Web 2.0 functionality with PrototypeJS
  • Performance tuning in critical areas
  • Solved process inconsistencies
  • Architecture planning to satisfy growing needs
  • Addition of redundant servers for critical services
  • Off site backup coordination and restoration plans
  • Networking architecture implementation
  • Introduced the factory design pattern to the code
  • Managed helpdesk techniciation
  • Administrated CentOS PXE/Kickstart servers
  • Administrated Mitel VOIP system
  • Setup and administered firewalls using Shorewall
Application Developer
Reprint Management Services, January 2003 - March 2004
 
Tech Overview: PHP, MySQL, VB 6
 

Java MySQL Proxy
Released June 2012

A high performance daemon that sits between your client and MySQL server(s) that can monitor, analyze or transform their communication. Written with a modular, threaded structure, you can write plugins to convert queries, update/modify result sets, redirect traffic, automatically shard, anything you want.

Diamond
December 2011 - Present

Diamond is a python daemon that collects system metrics and publishes them to Graphite (and others). It is capable of collecting cpu, memory, network, i/o, load and disk metrics. Additionally, it features an API for implementing custom collectors for gathering metrics from almost any source.

Query-Digest-UI
Released December 2011

An advanced, but easy to install, ui for pt-query-digest or mk-query-digest.

 
 
 
 
 
 
 
MythTV - Mythweb
February 2007 - February 2012

MythWeb provides a frontend for scheduling and managing recordings on your MythBox from a web browser located on another machine.


Course Description


An intensive one-day workshop for MySQL database administrators and systems administrators that covers InnoDB and XtraDB, the most popular storage engines for MySQL.

  • Learn to be systematic about fixing performance problems
  • Optimize query performance
  • Understand the basic operation of InnoDB - including how data is stored on disk and in memory
  • Understand what InnoDB does internally when data is written, and how features like the transaction log files and undo space work
  • Understand how key features of InnoDB work, including the buffer pool, transaction logs, clustered indexes, insert buffer, adaptive hash, double write buffer
  • Learn to read diagnostic Information from InnoDB and make informed decisions while tuning configuration
  • Discover how XtraDB, and the Percona and Google patches will provide you better diagnostics and performance
 
 
 
 
 
MySQL 5.0 Performance Tuning
MySQL AB, March 2007

Course Description


  • Develop a tuning strategy
  • Display knowledge of MySQL architecture
  • Display knowledge and ability to use diagnostic tools
  • Display knowledge and ability to use tuning tools
  • Write queries against the INFORMATION_SCHEMA database and be able to decipher the meta data obtained
  • Understand the relational database model and both the positive and negative implications on performance
  • Display, decipher and edit server configuration variables to improve performance of your applications
  • Display and analyze status variables to ensure that their applications are utilizing the settings in the most effective manner
  • Write queries that take advantage of the MySQL 5.0 performance enhancements dealing with queries and indexing
  • Decide which of the storage engines could be used in their specific application needs
  • Evaluate the application architecture for efficient design, structure, caching, number of connections and other factors affecting performance
  • Evaluate hardware and OS for effects on performance
  • Evaluate techniques for loading data into the database and effects on performance