(

My First Quarter at The Clymb


I moved from San Francisco and joined The Clymb here in Portland in January. Since then I’ve kept me really busy making some sorely needed upgrades to our stack; here’s a list of big ticket items I’ve worked on:

Infrastructure

  • Upgrade the site from Rails 2.3 to 3.2
    This actually took six weeks and was quite an ordeal. First I got our test suite running 100% green and then upgraded to 3.0, 3.1 and finally 3.2 to ensure I caught all deprecations in each version. Lastly, we had about a two week period where one server ran Rails 3 to catch problems in untested functionality.
  • Upgrade from Passenger to Unicorn
    Passenger locks a ruby version to your Nginx installation so to easily upgrade future Ruby versions, we wanted to switch to Unicorn.
  • Upgrade the site from REE 1.8.7 to Ruby 1.9.3
    At this point, Ruby 1.9.3 is stable and significantly faster than 1.8 - there’s really no reason to stay on 1.8. Part of this effort required me to remove a few old gems and port some functionality to new gems which worked on 1.9.
  • Ensure our entire stack was UTF-8 friendly
    Ruby 1.9 is much more opinionated about string input and our database was incorrectly using Latin1 for its encoding.
  • Upgrade our asynchronous processing system from DelayedJob to Sidekiq
    I’m slightly biased but DJ was giving us daily problems so the team decided this was a worthy upgrade. Sidekiq has been very stable and significantly faster.
  • Integrate Airbrake, monit, capistrano and campfire Now we have a set of standardized tools to deploy, monitor and notify if there are site problems.

Functionality

  • Rewrite our shipping manifest processor
    Our warehouse sends us bulk updates every 15 minutes with the shipments that they sent. We map that onto the items that were ordered so we can tell which orders have been shipped. Before we assumed one shipment = one order, now we can tell which items were in which shipment and have a much more accurate view of an order’s current state.
  • Integrate a state machine for orders and items
    This allows us to lock down the actions that can occur at a given point in the fulfillment workflow, e.g. once an item has shipped, it cannot be cancelled and must go through an RMA process.
  • Lots of bug fixes and small functional changes.

As you can tell, I was focused mostly on infrastructure improvements. Since The Clymb was started two years ago, much technical debt has accumulated and I’ve helped us pay down a significant amount of that debt over the last quarter. I expect the next quarter to focus mostly on functional improvements and recruiting now that we’re in a better place and I’m up to speed on how the business works.


blog comments powered by Disqus
(