Pre-Conference Workshops

Monday, November 17

Behavior Driven Development with RSpec
Pat Maddox, Programmer

This session is a real-world introduction to behavior-driven development (BDD) with RSpec. Attendees will learn:

  • The fundamentals of unit testing
  • Acceptance testing with User Stories
  • How-tos and gotchas of testing Rails applications
  • Mock objects–how to use them effectively
  • Design benefits of BDD
  • How to get an existing system under test
  • Strategies for weaving BDD into your process bit by bit

In this workshop we will first discuss each of these topics in detail. Then we'll pull them all together by building a feature the true BDD way–beginning with a conversation with the customer, writing acceptance test scenarios, and test-driving the implementation. The goal of this workshop is for you to come away with a strong enough grasp on RSpec and BDD to begin using it at work (or home!) later that day.

Introduction to Ruby for Experienced Developers
Hal Fulton, Programmer

This session is an introduction to Ruby. It will begin with concepts and terminology related to object-oriented programming in general along with an overview of basic Ruby syntax and semantics. The material will continue with an overview of Ruby input/output, including console and files; basic types and data structures such as numbers, strings, regular expressions, arrays and hashes; control flow including branches, loops, and exceptions; an introduction to the Ruby core classes and standard libraries; some advanced techniques in OOP and meta-programming; and a few words on threads, GUI programming, and other topics as time permits. This session serves as a foundation for the rest of the conference, and is geared toward the person with little or no Ruby experience (though others may also benefit).

Fluent In Ruby: Getting Beyond The Basics
Russ Olsen, Developer

One of the best things about learning Ruby is that it is such a familiar looking language. Solve some straightforward problem in Ruby and your code will probably be a bit more compact, but recognizably similar to what you would have written in Java or C#. Don't let this familiar facade fool you. Underneath Ruby's very mundane surface lurks a wickedly powerful and flexible language that lets you cope with hard problems in some very unexpected ways.

In this seminar, Russ Olsen will look at the parts of the Ruby language that enable you to wage unconventional warfare on your coding challenges. In Ruby you can change classes on the fly, but why would you want to? Ruby has this method_missing thing but where and why would you use it? And what is the Ruby object model and what does it have to do with metaprogramming?

If you are familiar with Ruby but still wondering what all the shouting is about, come find out.

Core Conference Sessions

Tuesday, November 18

Case Study: Riding Rails at The New York Times
Jacob Harris, Senior Software Architect, The New York Times

With its emphasis on getting started quickly and producing quality websites fast, Ruby on Rails has been an excellent choice for many startups. Ruby on Rails does such diverse things as social networks, video sharing, and even social networks for video sharing. But it also is an excellent tool for the newsroom, where breaking news and the process of editorial adjustment demand nimble web frameworks. This talk will explore some of the ways the Interactive Newsroom Technology group has used Rails for real-world news-driven projects. We will also include the strengths and weaknesses of the framework and different ways in which Rails might be useful in your organization beyond appearing on the front website.

Ruby and the Java Virtual Machine
Thomas Enebo, Co-Lead for JRuby Project

Ruby has become one of the fastest-growing languages in the world. Java is the most widespread platform in the world. Therefore JRuby brings Ruby to the Java platform, allowing Java developers access to the beauty and elegance of Ruby. Ruby developers can have access to the scalability and strength of the JVM and Java's vast collection of libraries. This talk will give an overview of JRuby, along with real-world examples of JRuby in use.

Introduction to Mongrel
Matt Pelletier, Partner, EastMedia

Mongrel is a small, fast, mostly Ruby Web server used to run Rails applications in development and in production. It snaps neatly into the LAMP-style architecture and it works well with front-end Web servers like Apache and Nginx. Mongrel is also capable of handling all kinds of custom tasks, with or without Rails. You will learn how Mongrel works, how it fits into your deployment stack, and how it can be easily extended to serve custom requirements.

Case Study: The Many Facets of Ruby at YELLOWPAGES.COM
Coby Randquist, Partner, Confreaks.com

From system administration to web site development, you'll discover some of the many uses for Ruby and Ruby on Rails in the enterprise environment. You will learn about some of the techniques and practices used to make Rails scale to meet the needs of 22+ million unique visitors. Also, how it helped to improve the quality of software, whether it is based on Ruby or on other technologies.

Demystifying Rails Plugin Development
Nick Plante, Partner, Ubikorp Internet Services

The Rails plug-in system allows you to add powerful features to your applications by altering or enhancing key pieces of the framework. Plug-ins tend to be easy to use and can save precious development cycles, freeing you to focus on the elements that make your project truly unique. Although plug-ins are often dead simple to use, authoring them is not always quite as straightforward. This presentation will give developers an overview of the Rails plug-in architecture and the hooks that are provided for creating your own. We'll take a look at the genesis of a typical plug-in, and see how we can extract and generalize our code, repackaging it in a modular way such that it can be reused across projects and redistributed within the Rails community. Along the way, we'll also learn a thing or two about Ruby metaprogramming practices, and examine strategies for testing and redistributing plug-in code.

Four Years of Ruby Deployment
Ezra Zygmuntowicz, Founder and Developer, Engine Yard

In this talk we will explore the history and current state of the art in deploying and maintaining scalable Ruby applications. Over the last four years we've gone through countless web servers and deployment scenarios on the path to the ultimate deployment environment. In this talk we will do a brief history of where we've been, where we are now, and where we are headed for the future. We will also cover architectures for scalable websites with regards to backend messaging design and a world of services pattern.

Case Study: Nature Network Stays Agile in the Enterprise
Matt Jankowski, Business Development, thoughtbot, and Jared Carroll, Software Engineer

Depending on who you ask, the enterprise might be a place you need to be employed to have a "real job" or it might be the setting for a bureaucratic nightmare where it's impossible to get anything done. Somewhere between "profitable business entity" and "the land of pointless meetings" lies the reality of what the enterprise actually is. This talk will explore the successes and failures we had in building one web application within a larger organization with established methodologies. We will also discuss how the two cultures eventually learned from each other to deliver a successful product.

Refactoring Complex Domains in Ruby and Rails
Shane Harvie, Software Engineer

It is often easy to see that code is ugly. But it is not always easy to see how to improve it. Textbook examples need to be simple to explain concepts as concisely as possible, but when it comes time to apply that textbook principle to a large code-base, it's not always easy to see where it fits. In this session, we'll look at some ugly code from a complex domain. We'll identify its faults, and apply some refactorings to make it better. We'll highlight some powerful refactoring options that are available to you courtesy of Ruby's dynamic nature, which you won’t find in a statically typed language. This session will be light on the slides, and heavy on the code. So come prepared to delve deeply into some technical problems, and see what emerges on the other side.

Panel: Testing Methodologies
Bryan Liles, Pat Maddox, Sandi Metz, Tammer Saleh

Join this panel of passionate testing advocates as they discuss and analyze these issues:

  • Choosing Between Shoulda and RSpec
  • Factory Girl vs. Object Daddy
  • Is the Fixtures Debate Over?
  • Test All the Freakin' Time: Really?
  • USpecs: More Trouble Than They're Worth

Wednesday, November 19

Payment Processing with ActiveMerchant
Cody Fauser, CTO, Shopify

Many applications need a way of billing customer credit cards. Fortunately ActiveMerchant exists to make this task very simple. This talk will provide an overview of payment processing and will then walk through processing credit cards with ActiveMerchant. This session will also cover some of the security related concerns relating to processing credit cards in a Rails application and the implications of the Payment Card Industry Data Security Standard (PCI-DSS) on your application and business.

Rock Solid Ruby Deployment
Philippe Hanrigou, Software Engineer

Building, deploying, and maintaining large-scale Ruby on Rails applications is a lot of fun. However, it typically also involves overcoming a variety of vexing problems, some of which prove difficult to investigate using just the traditional Ruby stack. For these abstruse problems, the standard Ruby development tricks quickly become inadequate. This is especially true during the deployment phase for applications. This talk introduces and demonstrates some key system diagnostic tools and techniques in the context of Ruby on Rails development. Some are already well-documented in the Addison-Wesley Short Cut, Troubleshooting Ruby Processes, while others are new and remain relatively undocumented.

Messaging with Ruby and Rails
Blaine Cook, Software Developer

Face it. Ruby is slow. Rails is slower. The good news is that it doesn't matter. Long the domain of crusty academics and mega-money financial companies, asynchronous processing is finally as accessible as it is powerful. With modern messaging systems, you can build sites that are responsive, scalable, and easy to maintain. We'll explore the basics, talk about a few of the options for messaging infrastructure and libraries, and get into the mechanics of making it all work with a minimum of fuss and bother.

Rails Scales! How?
Matt Pelletier, Partner, EastMedia

Rails has earned its reputation as a modern, professional, rapid-development framework, but it also suffers from accusations that "it doesn't scale." This talk will clear up (with examples and facts) the Fear, Uncertainty and Doubt surrounding such claims. You will learn about modern definitions of scaling and performance, where Rails fits into the full request/response cycle, where the most common bottlenecks come from, and a review of the most common techniques (including query optimization and caching) to performance-optimize a Rails application.

Surviving as a Windows Based Ruby and Rails Developer
David Berube, Developer, Consultant, Author

Although many Ruby developers use OS X or Linux, it isn't always feasible or desirable to switch your desktop to another operating system. Unfortunately, Ruby development under Windows has occasionally been difficult. Often, directions for plugins and gems do not cover Windows, and many online and offline sources reference only non-Windows platforms.

Fortunately, this talk will cover ways you can productively and efficiently develop Ruby and Ruby on Rails applications under Windows. Configuring a Windows computer for Ruby will be discussed in detail, as will how you can handle differences between Windows and other platforms. Additionally, fast and easy tools and techniques to increase your Ruby productivity under Windows will be covered, including details on native Windows versions of popular GNU tools.

Testing as Communication: Real-World Techniques
Jon Larkowski, Developer

This session covers how Hashrocket, an experienced Ruby on Rails consultancy, uses a wide range of real-world testing techniques and Agile methodologies every day to satisfy client customer requirements. It will describe the life cycle of our testing workflow, from story capture to customer acceptance. This includes an overview of fine-grained requirements gathering in "user story" form; how to manage stories and communicate transparently with the client using a web-based tracking tool; how story-driven development is expressed as test-driven development; and, how to enhance client/developer communication by writing plain-text tests in the vocabulary of the customer's domain.

In this session, you will learn how to turn natural-language requirements into running code that both customer and developer alike can communicate around; how to express customer requirements at the appropriate levels of abstraction, from high-level integration tests all the way down to granular unit tests; and, how to properly employ the latest tools, such as RSpec, StoryRunner, Selenium, Webrat, and fixture factories.

Rails AntiPatterns
Chad Pytel, President, and Tammer Saleh, Developer and Systems Administrator, thoughtbot

Everyone knows about software development best practices and programming patterns. But what about the things you're not supposed to do? Do we need a similar guide for identifying the patterns and practices to avoid, rather than to embrace? This talk will run through common mistakes and misdirections we've seen "in the wild," and discuss ways to get back on track using a test-driven refactoring process.

Battle Royale: Merb's Role in the MVC Holy Wars
Foy Savas, Director, Unversive

"Should I use Rails or Merb?" As Ezra Zygmuntowicz has told us in the past, the answer to this question is a simple "yes." But when it comes to making a decision for your next project, you don't have the time to sit down and research the options. What you need is something clear and definitive; what you need is this Battle Royale. Watch as we tear out the internals of a MVC (Model-View-Controller) framework and prompt an ensuing bloodbath of code. Walking away from this talk, you'll know exactly when and where to use which framework and how to make sure the risks and challenges that come with each one match the development path of your project, as well as the interests of your client.

Case Study: Sinful Ruby at Sermo
Will Koffel, CTO, Sermo

Sinful Ruby will take a look at the business and technical challenges of integrating Ruby into a rapidly growing enterprise, from the point of view of the enthusiastic Rubyist. We'll examine the right and wrong ways to drive Ruby projects in a polyglot world. We'll touch on the major successes that Sermo has seen, and why sometimes with Ruby, it's okay to be sinful.

Thursday, November 20

Beyond the Mountains of Madness with Ruby
Giles Bowkett, Developer

For a long time the Ruby community directed its newbies to a cartoon guide by Why the Lucky Stiff. The guide demonstrates Ruby programming techniques with trucks, cats, gnomes, and foxes (who demanded chunky bacon). Poetic, challenging, and delirious, the book requires clever and dedicated readers. As an explorer's log and a map of new ideas, Why's guide is an incredible success, but it frustrates and confounds legions of enterprise engineers coming to Ruby because of Rails. To nine programmers out of ten, reading Why's guide is like climbing an unscalable mountain of incomprehensible madness. To see what lies beyond those mountains don't miss this talk.

RESTful Possibilities – REST in Rails and Beyond
James Golick, Software Engineer

The elegant simplicity of REST facilitates the diverse web we all know and love. Rails 2.0 introduced the notion of architecting web applications as a collection of RESTful resources. Following that convention gets you more maintainable code, and a free API, client included! But, RESTful Rails is just the beginning. Using the same standards, you can design interfaces for all kinds of services. Leveraging lightweight MVC frameworks like Sinatra, web servers like Thin, and client libraries like ActiveResource, writing RESTful services gives you a lot for a little. In this session, we'll start by taking a walk through RESTful Rails, and then move on to designing other kinds of services using REST and best of breed Ruby tools.

Using Berkeley DB and Ruby with Large Data Sets
Matt Bauer, Founder, Pedal Brain

Sometimes ActiveRecord and a relational database aren't the answer. This is especially true with large, rapidly growing and heavily reported on data sets. This talk will discuss how Berkeley DB is used at Pedal Brain to record and report in realtime performance data of cyclists. Areas covered will include ETL processing from ubiquitous devices, aggregate techniques for quick data access, concurrency strategies for ad-hoc reporting and using javascript graphing libraries to interact with data.

Case Study: Building the Insoshi Social Network
Michael Hartl, Developer

Insoshi is an open-source social networking platform built with Ruby on Rails. This talk takes a trip through the Insoshi development process by checking the code out from the public GitHub repository, making a change on a local Git branch, and contributing the change back to the project. In the process, we'll try a little test-driven development as we dig into some detailed examples from the Insoshi codebase.