"Capability vs. Suitability" by Gary Bernhardt

Software marches forward; each new piece is better than the last in every way! Not quite... it's a bit more subtle than that. There are patterns in the history of our industry: each tool or practice is a reaction to something before it. By paying attention to the pattern, and to the types of reactions, we can better understand our history and our current tools' place in it. More importantly, we can avoid repeating the mistaken reactions that our predecessors have had to new tools.

Gary Bernhardt (@garybernhardt) is a creator and destroyer of software compelled to understand both sides of heated software debates: Vim and Emacs; Python and Ruby; Git and Mercurial. He runs Destroy All Software, which publishes advanced screencasts for serious developers covering Unix, Ruby, OO design, and TDD.

"It's the Little Things" by Jamis Buck

Ruby is a fantastic language, largely because it pays attention to the Little Things. Details matter! Here you'll hear about some of the littlest things that make Ruby big, and you'll learn about why they matter. Whether you're an experienced Rubyist or a newcomer, you'll come away with a greater appreciation for the language, and hopefully put a few more tools in your toolbelt.

Jamis Buck (@jamis) has been writing Ruby code full-time since before it was cool to do so. He works for 37signals, lives in Idaho, and plays the guitar passably.

"Does Pair Programming Have to Suck?" by Angela Harms

On some teams pairing is the norm; developers enjoy the collaboration & experience enhanced productivity. Others, though, work on teams where pairing is shunned, avoided, or just faked. Why do some craftsmen thrive with pairing while others want nothing to do with it? Why does coach- enforced pairing turn into something dry, distracted, imbalanced & ineffective? Effective pairing can increase creativity, energy, speed & quality. What factors make that possible? Learn how to take action on your team to put an end to soul-sucking, miserable, fake pair programming, and begin teaching your team to collaborate effectively on code.

Angela Harms (@angelaharms) makes software at LeanDog in Cleveland. She loves beautiful code that emerges from collaboration, and learning new ways to make it work. When not pairing on tests and the code they inspire, you can find her at conferences speaking about what she's learned (so far), or discussing puzzles and new ideas in open space. Her website,, has invited lots of answers from practitioners and industry leaders..

"Designing Hypermedia APIs" by Steve Klabnik

Rails did a lot to bring REST to developers, but its conception leaves the REST devotee feeling a bit empty. "Where's the hypermedia?" she says. "REST isn't RPC," he may cry. "WTF??!?!" you may think. "I have it right there! resources :posts ! What more is there? RPC? Huh?"

In this talk, Steve will explain how to design your APIs so that they truly embrace the web and HTTP. Just as there's an impedance mismatch between our databases, our ORMs, and our models, there's an equal mismatch between our applications, our APIs, and our clients. Pros and cons of this approach will be discussed, as well as why we aren't building things this way yet.

Steve Klabnik (@steveklabnik) is a Ruby Hero, maintainer of Hackety Hack and Shoes, and all-around open source enthusiast. In his spare time, he dabbles in the *gasp* humanities rather than sciences, and reads too many philosophy books.

"Coming to Grips With JavaScript Heavy Apps" by Yehuda Katz

As Rubyists, we love Ruby and want to write Ruby all the time. But when writing apps for the web, we need to come to grips with the increasing amount of JavaScript we need to write when building web applications. This means more than just a difference in the language: the JavaScript ecosystem looks a lot different than the Ruby ecosystem. Not only is the tooling much less mature than the tools we know and love when writing Ruby, but integrating a JavaScript application with a Ruby codebase still resembles black magic for many people.

In this talk, Yehuda will talk about his workflow for building Ruby-based applications that make heavy use of JavaScript, based on his recent and current experience building several such applications. He will cover building a consistent, consumable API in Rails, packaging your assets, and a good development environment.

Yehuda Katz (@wycats) is a member of the SproutCore, Ruby on Rails, and jQuery Core Teams; he spends his daytime hours at the startup he founded, Tilde Inc.. Yehuda is the co-author of the best-selling jQuery in Action, Rails 3 in Action, and is a contributor to Ruby in Practice. He spends most of his time hacking on open source--his main projects, along with others, like Thor, Handlebars, and Janus -- or traveling the world doing evangelism work. He blogs at

"Schemaless SQL — The Best of Both Worlds" by Will Leinweber

Schemaless database are a joy to use because they make it easy to iterate on your app, especially early on. The relational model isn't always the best fit for evolving and messy data in the real world. And let's be honest—it's painful to persist rich domain models across millions of little tables. However as your data model stabilizes, the lack of well-defined schemas becomes painful. On the other hand, relational databases are proven, robust, and powerful. How are we supposed to pick one or the other? Simple: pick both.

Recent advances in Postgres allow for a new hybrid approach. The hstore datatype brings key/value pairs to Postgres, and PLV8 embeds the super-fast V8 JavaScript engine into Postgres. These in turn make Postgres the best document database in the world. This talk will explore when and how to take advantage of them, and how we use these techniques at Heroku.

As a member of Heroku's Department of Data, Will Leinweber (@leinweber) enjoys improving the experience his customers have with their data.

"Better Ruby" by Mike Gehard

Do you know what SRP and SOLID mean? No? Then this talk is for you. This talk will introduce you to some lesser-practiced techniques in the Ruby world. These techniques will allow you to write code that is easier to test, easier to maintain, and easier on the eyes.

Mike Gehard (@mikegehard) is Lead Software Engineer at the LivingSocial office in Boulder, CO. He has a passion for code that doesn't leave him scratching his head wondering what the code does. He also has a passion for the outdoors and good beer when he's not looking at code.

"What's Wrong With Ruby's Object Model (And Why That's A Good Thing)" by David Brady

In this stunning half-hour EXTRAVAGANZA of mind-blowing talkifying, I will show you what's wrong with Ruby's objects is actually what's right about Ruby--and how this has led a lot of programmers down the garden path to unintentionally writing hard-to-maintain code.

You may think you know how to problam with the Object Oriented Things. But! My friend, listen: There is a worldwide CONSPIRACY TO HIDE THE TRUTH about REAL object-oriented programming!

BUT NO MORE! For in this big-budget presentation MAELSTROM OF KNOWLEDGE, I shall RIP ASUNDER the veil of ignorance and together we will walk, hand in hand, arm in arm, or at a polite distance of your prefererence, into the LIGHT OF WISDOM.

I'm gonna bring some nasty code, and we gonna refactor it. We will use objects. We will use Immutability. We may even use EAST-FACING CODE. That didn't actually need to be in caps because it's a real thing. And it's going to be sweet. CAN I GET AN AMEN

David Brady (@dbrady) has been programming professionally for 20 years this year. He runs Shiny Systems and is an active contributor to the open source community. He loves teaching and presenting, and when not programming he can be found goofing around on the Ruby Rogues podcast, doing his own stunts on the ADDcasts videocast, or letting his blog get out of date at

"Business Intelligence with Ruby" by Xavier Shay

Business Intelligence: it's not just a buzz word for the enterprise! The modelling requirements for business analysis are at the opposite end of the spectrum to those of a transactional system (your website), yet all too often they are muddled together in a solution that serves neither purpose well. Learn the basics of dimensional modelling, how to apply and build them in a typical Ruby environment, and get an inside look at how it fits in to the bigger picture of the analytics platform at Square.

Xavier Shay (@xshay) recently emigrated from Australia to San Francisco to work as tech lead for the analytics team at Square. Prior, he worked on data warehousing projects at The Conversation and ClearGrain, and presented a world tour of a training course titled "Your Database Is Your Friend". He's been working with Ruby on Rails for half a decade, and has published and contributed to over 80 open source projects according to GitHub.

"Concurrent Programming with Celluloid" by Tony Arcieri

Threads versus events: which should you choose? How about both? In this talk you'll learn about the Celluloid concurrency framework, which combines OOP and the Actor Model to give you concurrent Ruby objects. You'll also learn about how Celluloid lets you combine blocking I/O and asynchronous evented I/O, offering you all the benefits of EventMachine without the restrictions of a single event loop. The talk will also provide a brief introduction to DCell, a distributed extension to Celluloid.

Tony Arcieri (@bascule) has been dabbling in concurrency in Ruby for many years. He is the creator of the asynchronous I/O library, Revactor actor library, and Reia programming language. When he's not programming you'll probably find Tony drinking beer, scotch, or singing his heart out at karaoke.

"Keeping your code strong" by Jack Danger Canty

All Ruby projects start small and begin to grow. Where, exactly, do they go wrong? Is it when they begin to rely on 3rd-party services? When the tests get slow? When the framework falls behind by a major version?

When your project gets unmanageable you stop having fun. Let's talk about the actual metrics you can use to track when your project is starting to fall apart and what you can do about it. We'll cover cyclic complexity in code, test suite refactoring, project size awareness, naming and organizing conventions, gem extraction, and how to split projects in half.

Since 2005, Jack Danger (@jackdanger), has built countless fast-growing (and fast-decaying) Ruby apps and over 20 Ruby gems. He works on the team at Square.

"MiniTest: Write Awesome Tests" by Michael Jackson

MiniTest is a full-featured testing framework for Ruby that ships with the standard library in Ruby 1.9. Unlike some of the more well-known incumbents in the Ruby testing world, the MiniTest library is blazing fast and incredibly concise. It can be used for writing unit tests, BDD-style expectations, mocks, and benchmarks. Become familiar with MiniTest, and you'll gain a valuable tool you can use to improve any Ruby project you'll ever work on.

Michael Jackson (@mjackson) is a Ruby/JavaScript developer at Twitter in San Francisco. I have been developing full-time in Ruby for the past few years, and I love the language. I also hate Rails.

"Devops for Developers - Why you want to run your own site, and how" by Matthew Kocher

Devops is a buzzword, but in reduction it means putting the people who are responsible for new features in charge of getting them out there. At Pivotal Labs we work with 30 startups at a time, and have seen what works well and what makes developers cringe and slows down progress. I'd like to convince every developer to start running the sites they work on, embrace change throughout their infrastructure, and give some tips for how to do it along the way.

Matthew Kocher (@mkocher) is a developer at Pivotal Labs who brings the dev to operations. He's worked on sites for Fortune 50 companies and for startups with three employees. He enjoys watching logs fly by at 400 requests/second to code that he worked on. In his spare time, he works on open source projects such like Soloist and Lobot.

"Frustration Driven Development" by Evan Light

Everyone draws inspiration and motivation from different sources.

For most, it's often frustration.

We make life decisions, define new features, or refactor code when we get too annoyed by current circumstances. This is where I admit that I have a low tolerance for frustration. Having been frustrated a great deal during my career, I'm going to discuss several anti-patterns that I've seen in code and how to use the Dark Side of the Force (frustration, anger, and rage) to escape from them.

Evan Light (@elight) is a freelance software developer from just outside Ocean City, MD, with 15 years of experience designing, implementing, and maintaining commercial and enterprise applications for telecoms, government, and web startups. He's been a frequent speaker and attendee at technical conferences, has published magazine articles on developing with Ruby, and founded and organizes the annual Ruby DCamp unconference.

"Service Oriented Architecture #REALTALK" by BJ Clark

Everyone has *heard* about SOA. If you've come from Java, you were probably forced to do SOA at a past job. But what does it mean to actually do SOA in Rails apps? What does it afford? What are some common patterns and implementations? And most of all, what works and what doesn't?

At Goldstar, our small team has been slowly breaking up our monolithic Rails and Perl legacy application into small apps that handle just one part of our business at a time. We love it. Our small apps are self contained, have crazy fast test suites (without parlor tricks) and it's made our mean time to delivery faster than ever. I'll tell you what has worked, what hasn't, and some patterns that have made the job easier.

BJ Clark (@RobotDeathSquad) is a artist/scientist and maker of things. He has been involved in various startups and Rails for the past 5 years, and making website since he wasted his summer vacation learning Frontpage when he was 14. He currently works for Goldstar doing product, UX, and engineering from their offices in Portland, OR.

"UXDD (User Experience Driven Development): Build for your users, not your tests" by Ted O'Meara

All too often programmers get into a productive rhythm where they receive their requirements, write tests aligned to those requirements, and then look for the green and red. While this process is proven to be highly effective, it can lead to developers missing the mark, as they aim for functional completeness and not the polish that an end user requires.

We should start proposing breakpoints for developers to step away from their automated tests, and play with the features they are working on. It's too easy for developers to get caught up in their process and forget about the end user experience. In this presentation you will learn several techniques for developing for the user experience, even when you're buried in code.

Ted O'Meara (@tomeara) has worked the across the gamut from Fortune 500 companies to fresh, up-and-coming startups. Currently employed at Intridea, he is a big proponent of the Ruby language, User Experience, and striving to build and design simplistic and enjoyable interfaces. He is also a graduate student at UMBC in the Human-Centered Computing program, and focuses his research on the cognitively impaired. When he is not consulting commercial operations, Ted likes to build software that is accessible and affordable for all users.

"Hacking Education" by Bracken Mosbacker

Free online educational resources like Kahn Academy, the Stanford online CS classes, and the MITx program have gotten a lot of attention lately, even outside the education technology nerd circles. These programs are changing how educational content is created and consumed online. It's a great time to catch this wave and create your own educational tools, games, and content; regardless of the scale or whether it's free for everyone, meant for specific K-12/Higher Ed curriculum, or for corporate training.

This talk will show you how to use current standards and protocols in your Ruby applications that make them available as educational resources. You'll see how your apps would be used in the context of a traditional K-12 or college course, and I will demo some cool implementations like interacting with Khan Academy.

Bracken Mosbacker (@brackenm) works for Instructure which created an open source rails project for course management. He is very excited about Open Educational Resources and hopes to incite more hacking enthusiasm in the education space..

"Prying into your app's private life" by Corey Woodcox

Pry is a relatively young tool that makes DRb a whole heck of a lot more useful. Paired with pry-remote for easy setup with Pow or Passenger, it provides a useful window into the execution of your app/program/nuclear launch script, with its mad live-code-modification-fu and step-by-step execution.

I'm Corey (@cwoodcox), and I talk too much about things I don't know enough about. Sometimes people like to listen to me. I've been writing Ruby professionally for a little over a year, and programming since I was 12, back when I had the glasses to prove it.

"Rack Middleware as a General Purpose Abstraction" by Mitchell Hashimoto

We've all seen monolithic Rails models: pages and pages of methods all dumped into one class. Inevitably, someone starts moving things around just to feel better about the line count, but this doesn't make any real difference to the overall structure of the code. How can we reify actions on an object and simplify our classes?

In this talk I'll speak about using the concept of "middleware" (in the way Rack uses "middleware") as a general purpose abstraction for improving the organization, testability, and maintainability of complex pieces of code. I'll talk about my first hand experience of using middleware to power Vagrant (, and we'll use these ideas to simplify an existing application.

Mitchell Hashimoto (@mitchellh) is the creator of Vagrant and is an operations engineer for Kiip. He is passionate about all things ops and open source, and enjoys spending hours of his free time each day contributing to the community. In addition to simply contributing to open source, Mitchell enjoys speaking at conferences and user groups about Vagrant.

Previously, Mitchell was a web developer for Citrusbyte and an evangelist for Zend Technologies. He can be found on GitHub and Twitter as @mitchellh.

"Continuous Deployment" by Matt White

When you write code, how long is it before that code makes it to production? Days? Weeks? Months? LONGER?!?! Deploying code to production multiple times a day as automatically as possible will make all your dreams of green grassy meadows filled with rainbows and prancing unicorns and ponies come true. Or at least one or two of them.

Matt White (@whitethunder922) Matt has been writing Ruby full-time for 5 years, the last of which has been with Goldstar where some form of continuous deployment is used. He dabbles in finance-related side projects and has authored several Ruby gems in connection with those projects.

MountainWest RubyConf 2012

Gold Sponsor



MWRC is a two-day single-track conference for just $100. Come rub elbows with some of the smartest Rubyists in the world.

Conference: March 15-16, 2012
Workshops: March 17, 2012
Salt Lake City Public Library
210 E 400 S
Salt Lake City, UT 84111

Thursday Drinkup Sponsor


Friday Drinkup Sponsor

Pivotal Labs

Silver Sponsors

Scan Alliance Health Service Repair Solutions

Bronze Sponsors

Software Technology Group Bloomfire Blue Box Instructure Wufoo

Previous Conferences

Find Us Online

MountainWest RubyConf is brought to you by MountainWest Ruby, LLC. We are committed to promoting and supporting the Ruby community.