Thursday, Feb 20
- Morning Sessions
Testing the Untestable
Good tests are isolatable, repeatable and deterministic. Good tests don’t touch the network and are flexible when it comes to change. Bad tests are all of the above. Bad tests are no tests at all - which is where I found myself with a 5 year legacy codebase running in production and touching millions of customers with minimal use-case documentation. We’ll cover this experience and several like it while digging into how to go from zero to total test coverage as painlessly as possible. You will learn how to stay sane in the face of insane testing conditions and how to use these tests to deconstruct a monolith app. When life gives you a big ball of mud, write a big ball of tests.
Lightweight Business Intelligence with Ruby, Rails, and MongoDB
Coraline Ada Ehmke
Agile companies need timely and reliable access to data to make critical business decisions. In the enterprise world, this is accomplished with expensive and esoteric data warehousing solutions, while younger organizations make do with generic analytics platforms. In this talk I will introduce an agile approach to business intelligence that drives decision support, feeds data analysis, and delivers flexible reporting capabilities.
We will explore the complete architecture of a lightweight BI system that is used in the real world to capture and analyze customer information, monitor user behaviour, feed machine-learning algorithms for decision support, and deliver real knowledge and value to business stakeholders.
Mo' Jobs Mo' Problems - Lessons learned scaling to millions of jobs an hour
At Tapjoy we process over a million jobs an hour with Ruby. This talk is a discussion of tools, techniques, and interesting problems from the trenches of scaling up over the last two years. Expect to learn a lot about Ruby job queues (beyond Resque/Sidekiq), performance, concurrency and more.
Building DEF CON CTF with Ruby
DEF CON Capture the Flag is the world series of computer hacking, with hundreds of teams from all over the world trying to qualify, and a select few competing on site in Las Vegas. For our first time hosting this event, we picked a Ruby-based stack running the game, which has teams attempting to defend their network services while hacking opponents' and stealing secrets.
What's involved in competing in DEF CON CTF? How did we build two complete competitions in five months? What kind of teams survive the experience?
12:45pm - 2:00pm
- Afternoon Sessions
How Shopify Sharded Rails
Last year at this very conference John Duff spoke about how Shopify scales while maintaing one of the longest lived and largest Rails deployments, and how we affront the challenges that come with growth. Shopify in 2013 became more than twice the size in every single aspect; requests per minute, GMV, merchants, number of developers, etc.
After CyberMonday 2012 it became clear that if we wanted to survive CyberMonday 2013 we needed to spread the load across more than a single huge database, and move to a model of smaller databases to enable horizontal scalability. This is the story of how, in 2013, we more than doubled the number number of databases that power Shopify, and all the challenges that come along when sharding a living, breathing and money producing Ruby application.
A 4-pack of Big Lightning Talks
If you get 10 minutes into this talk and decide you don't really like the topic, the topic will change! If you don't like the speaker, well ... there's no accounting for taste.
The Cobbler's Production Console Has No Shoes.
Don't give all your great stuff to your end-users, build something nice for yourself as well. We'll look at a few of the things I've built for myself at LivingSocial and hopefully will inspire you to do the same.
Do-It-Yourself Mocks and Fixtures. Big projects need some custom love.
factory_girl, ActiveRecord fixtures and mocha demo nice, but sometimes they wear out their welcome in a big code base. How hard could it be to do yourself? Let's find out! It might be easier than you think.
Track yer Big Stuff without screwing up production with Humperdink.
With over 2500 translation keys in one app, we decided to build out some tooling to track at runtime what was and wasn't being used so we could prune out the dead stuff.
ALL THE ANALOGIES
We've all tried to wield the construction analogy to help figure out what the heck it is we do. Let's get creative and think of 10 other ways that don't quite capture it either.
Open source isn't for everyone, but it could be
The state of diversity in open source contributions is abysmal. With the number of female OSS contributors at a shockingly low 1.5% and other groups not even documented, we need to ask what we can be doing better as a community. We’ll discuss the barriers that people face contributing to our open source projects and what we can do to increase participation.
Castle on a Cloud: The GitHub Story
When you think "GitHub", you're probably thinking of what we lovingly refer to as GitHub Dot Com: The Web Site. GitHub Dot Com: The Web Site runs on an incredibly interesting infrastructure composed of very powerful, cleverly configured, and deeply handsome servers. This is not their story.
This is the story of the other 90% of our infrastructure. This is the story of the 350 AWS instances, 250 Heroku dynos, and dozens of Rackspace Cloud, Softlayer, and ESX VMs we run. This is a story of tooling and monitoring, of happiness and heartbreak, and, ultimately, of The Cloud.