Michael Granger

Journeyman Ruby Hacker

29400 NE Wilsonville Rd • Newberg, OR • 97132 • 971.645.5490

About Me

I’m a programmer who’s passionate about my craft. I tinker with personal programming projects for fun, learn new languages as often as I can, and I am constantly on the lookout for new problems and interesting people to learn from.

I have a wide range of experience, mostly in systems programming and database-driven web development, but I’ve also dabbled in computational linguistics, written network traffic analysis tools, created systems-provisioning and configuration frameworks, and tinkered with semantic web technologies.

I’ve been programming and doing system administration professionally since 1994, have spoken at a number of conferences, and I co-wrote a couple of sections of O’Reilly’s Ruby Cookbook. I maintain a number of Open Source projects, and I try to stay active in software- and technology-related communities.

Previous Work Experience

Cozy

Architect August 2013 to present

I provide technical leadership and excellent code as a member of a small development team responsible for the code behind Cozy.co. I migrated the backend from a failing Redis cluster to a PostgreSQL RDBMS, added integration with multiple payment systems, credit-reporting services, email and messaging services, and transitioned the site from a templated HTML-driven site to a Javascript application backed by a service-oriented architecture. I wrote customer support backend tools using Angular and Aurelia, rewrote the automated payment system to handle sending and receiving payments via different payment methods, replaced a failing email service with a transactional message system, added an asynchronous job runner using AMQP messaging, and wrote client libraries for integration with vendors like Experian, Stripe, Balanced, and Bancbox.

New Relic

Software Engineer, Ruby Agent January 2013 to present

I am a member of the Ruby Agent team, who is tasked with writing, maintaining, and supporting the code that runs in customer-side applications and send periodic reports back to the New Relic service about an application's performance.

LAIKA, Inc

Senior Technologist March 2006 to January 2013

I write web-based and command-line applications and services for controlling and maintaining the IT infrastructure of this Portland-based stop-motion and computer animation company. I use Ruby and C along with 0MQ, AMQP, Mongrel2, OpenLDAP, PostgreSQL, and other best-of-breed tools to construct systems distributed over three geographic locations, so our crew of 600 artists and their supporting crewmembers don't have to think about technology. I use JQuery and AngularJS with HTML5 and CSS3 for web interfaces to these systems, backed by a collection of REST services written in Ruby on the back end that provide integration with several databases, an LDAP directory, an Asterisk phone system, digital asset management, monitoring services, network storage, asynchronous job queues, and other systems.

ThoughtWorks

Programmer November 2004 to December 2005

I was a part of several ThoughtWorks teams hired by Fortune 500 companies to do web application development in Ruby and Java, as well as to help transition their teams to Agile methodologies from more-traditional project-management styles. I built web interfaces in HTML4, CSS, and Prototype with Ruby on Rails and MySQL back ends for tracking ingredients from suppliers to supermarket shelves, tracking credit card rewards programs, a customer-facing mortgage web portal for a major lender, and an intranet Java Struts application for tracking claims resolution for a discount insurance company.

LiveJournal

Programmer November 2003 to November 2004

Designed, implemented, and tested backend tools and systems for this online journaling website with 8 million users. We used Apache, mod_perl, MySQL, memcached, and a bunch of other interesting technologies. I wrote performance diagnostic tools, post-by-phone systems, syndicated Atom/RSS feed back-ends, picture-posting interfaces in Javascript, and an automated testing harness in Perl.

RubyCrafters, LLC

Partner February 2003 to November 2003

I started this programming consultancy with a friend after we discovered Ruby. We spent the summer writing a web application framework using Apache and mod_ruby, and then discovered that neither of us knew how to actually sell our services. It was a great learning experience, both as a programmer and as an entrepreneur, and I ended up with a great collection of Open Source code that I still use parts of today.

My earlier experiences (I'd be happy to provide more details if you should so desire):

Vericept Corporation June 2001 to October 2002
Linguistics Programmer
800-ALL-NEWS, LLC November 2000 to November 2002
Partner
Active.com January 2000 to November 2000
Senior Developer
World Wide Web Associates July 1999 to December 1999
Senior Web Systems Engineer
Rogue Wave Software October 1998 to July 1999
Perl Programmer
Digital Wellsite November 1996 to October 1998
Contract Website Design/Programming/System Administration
Journal Graphics November 1994 to May 1996
Webmaster/System Administrator
101st Airborne Division, United States Army July 1988 to May 1992
Infantryman

Projects and Example Work

In addition to a great deal of professional work, I've also created or contributed to many open source and free software projects. Some examples which I think are particularly representative:

There's a bunch of other stuff that you can find via my Github account, my Bitbucket account, or on my own site's projects section.