Ryan Davis’ Résumé
Last updated: 2012-01-20
You can email me for personal address or phone number.
Employment History:
- AT&T Interactive Señor Programmer & Manager of Application Services
- Working on ruby and/or rails stuff for internal and external projects.
- Taught various workshops internally.
- 2011-01: Managing the remote app services team.
- 2010-02: Managing the application services team. Pumping 50-70k rpm. rawr. Topped at 99k rpm or 1 billion reqs/week!
- 2009-10: Managing the tools team.
- 2009-02 to present
- Engine Yard
- Worked on Rubinius, an alternative implementation of ruby.
- 2007-10 to 2008-11
- University of Washington Educational Outreach
- Taught ‘Ruby: The Core Language’
- Co-teaching ‘Advanced Topics in Ruby’ 2008-Q3 w/ Aaron Patterson.
- 2007-Q1, 2008-2009 Q1 & Q3.
- LimeSpot (a division of Lime Wire LLC)
- Ruby on Rails development for a social yadda yadda website.
- Re-engeneered the entire application simplfying the design:
- Test time improved 20x.
- Code size was reduced 40%.
- Test size was reduced 50%. (code to test ratio went from 1:1 to 1:0.8).
- Massively improved developer productivity (and morale).
- 2007-01 to 2007-09
- Independent Consultant
- Ruby and Ruby on Rails development, development process improvement, TDD mentoring.
- 2006-01 to 2007-10
- SHPS
- Senior Software Developer
- Healthcare enterprise data integration with Java, Ruby, and Ruby on Rails.
- Addressed idioms, design patterns, refactoring, and testing on a medium-to-large sized j2ee implementation.
- 2005-06 to 2005-11
- Omni Group
- Team lead of two (inclusive) to test and validate four primary applications, some secondary applications, and many addons to our primary applications.
- Responsible for maintaining and extending all build scripts and related tools, written in zsh/sh, Ruby, and perl.
- Inherited the bug database and client application. Used XP with weekly releases and took the application from something that was reviled to a very functional app that is used by all engineers, tech support, and QA on a daily basis.
- Cut the number of DB tables in half.
- Cut the application code by one third.
- Designed and implemented an automated release process reducing the number of errors in software releases and reducing the time to release a product from 2 days to 1 hour.
- Implemented a continuous build system for all of our products. This insured that bad CVS commits were noticed immediately.
- Instituted a code review policy for (nearly) all commits, reducing the number of errors that get committed in the first place.
- Validated more (stale) bugs than I’d like to admit.
- 2002-09-01 to 2005-04-15
- Amazon.com (Reverse-chrono)
- Member of an uber-elite task force to refactor and port entire source repository (1000+ modules) to new scalable build system. Contributed to milestone 4-6 over a 6 month period. Lead milestone 5 over a 6 week period.
- Wrote C/C++ parsing tools in Perl to analyze file, module, and package level dependencies of the entire codebase (1000+ modules) and provide numerous reports and graphs.
- Investigated problems with the length of a full build. Profiled 10000 individual compiles and isolated problem files. Actually found a single file that took 18 minutes to compile. A very simple change reduced that time to 7 seconds. Directly reduced build by 30 minutes (serial).
- Investigated problems in scaling the build system. Wrote tools to analyze binary symbol sizes. With this I found and and fixed code that was producing 2 gig of bloat on disk, which was causing numerous problems in RAM and on disk in some configurations.
- Extended the same build system for compile-only (no application linking) runs to optimize refactoring runs. Brought build time from 12 hours (on desktop linux box) to 3 hours (first pass, 5 minutes for second pass w/ no changes).
- Verified and fixed make system for 500+ source modules and applications to optimize refactoring work and incremental builds. Brought incremental build time from 5 hours to 5 minutes. Literally.
- Created numerous systems in Perl and Berkeley DB for reporting and monitoring of various systems (production CVS checkout staleness, error log reporting, etc).
- Reverse engineered website order pipeline (many many many C/C++ files) to provide a scriptable tool (in C++ and ANTLR) to flexibly generate orders at a massive speed (compared to using the website). Saved at least 4 man-days/week for one QA group alone.
- Architected pattern-based distributed (client/server) multithreaded test/task execution engine in Java.
- Architected automated test engine for website testing including an easy to understand script language for writing tests, a non-linear multi-threaded task queue, with a well organized object design in Java.
- Lead Developer in Quality Assurance Tools group. Team topped at 5 engineers and produced over 75 systems, programs, CGI and scripts for various testing tasks, software engineering tasks, configuration management, and process management.
- 1998-09-01 to 2002-06-10
- Independent Contract with JoeAverage.com (dead)
- NOTE: I’ll never work on the windows platform again.
- Research with Java, C++, and other languages for internet programming.
- Internet Programming - ISAPI, CGI, ASP, and several other acronyms.
- Relational Database Programming t/SQL on SQLServer 6.5.
- Various System Administration duties for WinNT network.
- Various Webmaster duties on WinNT/IIS.
- 1998-01 to 1998-06, 1998-08-01 to 1998-09-01
- Gemstone - Software Engineer
- Perform regular QA duties (run, develop, and maintain tests) for Gemstone Smalltalk (backend).
- Original lead QA developer for Gemstone/J (Gemstone for Java). Duties included architecting and developing original test plan and framework. Development and maintenance of tests. Co-design in some of the API. Mentoring for contractor.
- Responsible as the Java certification engineer for Gemstone/J. I spent more than a year becoming an expert in testing Java VM’s on multiple platforms. Worked closely with key engineers at JavaSoft on the JCK’s tests, framework (JavaTest) and new framework subsystems (AssertionTest). Also used JavaTest to architect and implement new test systems for non-JCK use.
- 1996-06 to 1998-01
- TESC - Smalltalk Educator
- Helped students qualifying for KEY services with VisualWorks Smalltalk programming for Student Originated Software program offered at The Evergreen State College.
- 1995-11 to 1996-06
- Computer Solutions - Project Lead and Programmer
- Wrote specifications, analysis and design for distributed OODBMS for the Macintosh.
- 1995-06 to 1995-10
- WLN - Analyst/Programmer I.
- Debugged and documented previously existing Smalltalk database. Also designed and wrote C++ online-help app. for the Macintosh.
- 1994-06 to 1995-02
- Self Employed
- Various independent programming projects for various clients.
- 1991 to 1993
Speaker:
- Cascadia 2011: Size Doesn’t Matter.
- GoGaRuCo 2010: Workflow.
- RubyConf 2009: Worst. Ideas. Evar.
- RubyConf 2008: Seattle.rb Rocks! & Lightning Talks.
- Goruco 2008: Ruby Sadism: Hurting Code for Fun and Profit.
- RubyConf 2007: Ruby Sadism: Hurting Code for Fun and Profit.
- SDForum 2006: Test Driven Design with ZenTest.
- AjaxWorld 2006: Electric Kool-aid Acid Testing.
- FOSCON 2006: ruby2c and metaruby.
- RubyConf 2005: Polishing Ruby: ZenHacks and friends.
- Founder of RejectConf - speaker at many 2006 - present.
- many more given to Seattle.rb.
Projects:
Too many to list these days. Really. See http://github.com/seattlerb/ or http://github.com/zenspider/ for some of them.
See http://www.zenspider.com/~ryand/IntellectualProperty.pdf for a list of IP exclusions.
Education:
Sourcecode and Project Information is available on this website.
References are available upon request.
References are available upon request.