Event Schedule

8:30 Friday Saturday
9:30 Registration &
Continental Breakfast
Registration &
Continental Breakfast
9:45 Welcome and Introduction Announcements
10:15 Being Your Best Asset and Not Your Worst Enemy
Evan Phoenix
Rails is Obsolete (But So's Everything Else)
Avi Bryant
10:30breakbreak
11:00 Real World Ruby Testing
Rein Henrichs
Eschew Obfuscation and Omit Needless Words: Writing Clear Acceptance Tests
Elisabeth Hendrickson
11:15breakbreak
11:45 Ruby APIs for NoSQL
Sarah Mei
Intelligent Ruby: Getting Started with Machine Learning
Ilya Grigorik
12:00breakbreak
12:30 Data-Driven Government and the Ruby Developer
Eric Mill
The Revolution will not be Tweeted
Rich Kilmer
1:45LUNCHLUNCH
2:15 Extending Rails 3
Yehuda Katz
The Shell Hater's Handbook
Ryan Tomayko
2:30breakbreak
3:00 Bryan's ActiveModel Extravaganza
Bryan Liles
Workflow
Ryan Davis
3:15breakbreak
4:15 Keynote: (Parenthetically Speaking)
Jim Weirich
Lightning Talks
4:45snack breaksnack break
5:15 Test-First Teaching
Sarah Allen & Alex Chaffee
Arel: The Ruby Relational Algebra Library
Bryan Helmkamp
5:30breakbreak
6:00 Polyglot: When Ruby isn't enough or even sane
Blake Mizerany
Hidden Gems of Ruby 1.9
Aaron Patterson

Session Descriptions

Keynote: (Parenthetically Speaking)

Jim Weirich

In any discussion on how to improve your programming skills, one book gets more recommendations than any other: The Structure and Interpretation of Computer Programs (SICP) by Abelson and Sussman. SICP was the introductory computer science text at MIT for many years. But how much could a professional developer really learn from a first year CS book?

Last fall I embarked on an adventure and invited folks to join me in a weekly study of SICP. We worked the examples and compared our answers. I am here today to share what mind-blowing concepts we discovered in just the first two chapters of SICP. Expect to see some Ruby code like you've never seen before.

Test-First Teaching

Sarah Allen, Alex Chaffee

We've all learned that writing tests before code is a great way to develop software. It turns out that it's also a great way to learn how to develop software in the first place! In this talk we discuss a number of projects that have used test-first approaches to teach Ruby, including Ruby Koans, RailsBridge Workshops, Wolfram Arnold's BFT (behavior-first teaching), Blazing Cloud JavaScript and Rails classes, plus our own open-source Learn Ruby TFT (test-first teaching) curriculum (at testfirst.org). Come hear about our experiences or share your own.

Rails is Obsolete (But So's Everything Else)

Avi Bryant

Back in the old days, you submitted a form to some URL and you got back some HTML. These days, you probably didn't hit submit, your URL probably didn't change, and what you got back was probably JSON—but you never saw it because it came in asynchronously in the background. Best practices around web applications are changing fast, driven by new browser standards, sophisticated JavaScript libraries and super fast JavaScript implementations. Why would a web framework design from 2004 still be appropriate? What can we be doing to adapt, or reinvent, our approaches to building web apps?

Workflow

Ryan Davis

How do you develop software? Is it effective? Could you do better? Where could you put the least amount of effort to improve the most? When do you do that? What would your teammates answer? What can you learn from them?

I shall give you my answers. You will give me yours.

Intelligent Ruby: Getting Started with Machine Learning

Ilya Grigorik

Machine learning is a discipline that is concerned with the design and development of algorithms that allow computers to evolve behaviors based on empirical data — a fancy name for a simple concept. Behind all the buzzword algorithms such as Decision Trees, Singular Value Decomposition, Bayes and Support Vector Machines lie the simple observations and principles that make them tick. In this presentation, we will take a ground-up look at how they work (in practical terms), why they work, and how you can apply them in Ruby for fun and profit.

No prior knowledge required. We will take a quick look at the foundations (representing and modeling knowledge, compression, and inference), and build up to simple but powerful examples such as clustering, recommendations, and classification — all in 30 minutes or less, believe it or not.

Arel: The Ruby Relational Algebra Library

Bryan Helmkamp

Arel (also known as ActiveRelation) is the Ruby relational algebra engine powering ActiveRecord in Rails 3. By replacing string concatenation with an object model to express SQL queries, Arel had a big immediate impact on the ActiveRecord codebase and opens the door for more powerful Object Relation Mapping (ORM) functionality in the future. This talk will introduce the concept of relational algebra, cover the past, present and future of Arel, and dive into how you can leverage it today either on its own, or in your Rails 3 applications.

Eschew Obfuscation and Omit Needless Words: Writing Clear Acceptance Tests

Elisabeth Hendrickson

Modern acceptance testing frameworks like Cucumber express tests in natural language, enabling organizations to establish their own Domain Specific Languages (DSLs). This powerful capability is a huge boon for communication: technical team members and non-technical business stakeholders can use the same vocabulary in expressing both requirements and tests. However, just creating a DSL does not ensure we will write good, clear tests. Indeed, it is all too easy to create acceptance tests that contain so many extraneous details that the real intentions behind the tests are obfuscated. In this session, Elisabeth will demonstrate how to edit technically correct but verbose Cucumber tests to increase clarity, reduce extraneous distracting details, and improve maintainability. Along the way we'll see how paying attention to the advice in Elements of Style applies to writing better automated acceptance tests. Strunk and White would be proud.

Real World Ruby Testing

Rein Henrichs

Are you confident that your code works the way you expect? Is it easy to change? Do you get accurate feedback when you do change it? If the answer to any of these questions is no, the problem is not your code: it's your tests.

We'll look at the state-of-the-art Ruby testing libraries and frameworks to start you off with an effective testing toolset. In addition to the toolset, we'll also explore the testing mindset. Should I mock this or stub it? Should I write a unit test or an integration test? How do I write tests that allow me to refactor with confidence? If you've ever asked yourself questions like these, this session is for you.

Intended for new testers; those who "just don't get this testing thing;" people with brittle, unwieldy test suites they need to work into shape; and everyone in between.

Extending Rails 3

Yehuda Katz

Rails 3 has added quite a number of new ways to extend the framework. These include swapping in a new ORM that still works cleanly with ActionPack, a brand new instrumentation system, and ways to build custom controllers, mixing and matching the pieces that you want. In this talk, Yehuda will give an overview of these new systems, and show some real-world examples of using them in plugins and in your application itself. He will also talk about how to think about using the new Rails architecture to streamline your stack for performance-critical parts of your app, without losing the integration you've come to expect or the features you absolutely need in those cases.

The Revolution will not be Tweeted

Rich Kilmer

The Rails revolution, and Ruby along with it, began in the loud public echosphere of startup companies. The arrival of the Rails framework and the "Web 2.0" explosion created a very thunderous effect. Magazine after magazine reported on Rails. All the hip, funded and loud startups were using Rails to build their wares. It became a thing that VCs would assume you were using, and if not, why? The first RailsConf was 90% attended by startups. Rails was a revolution. Since then the loudness has waned. Is the revolution over? Is Rails done? Au contraire, the revolution has gone underground. It's penetrating places that Twitter does not hear. It's building things that are not reported. It's entered the enterprise. This talk will document the rise of Rails and glorious revolution which we barely see, but is happening every day.

Bryan's ActiveModel Extravaganza

Bryan Liles

Imagine you are at a conference. Imagine while you are at the conference, there are 30-minute sessions of various Ruby related topics. Imagine Bryan Liles is at this same conference. Imagine Bryan Liles. Imagine ActiveModel. Imagine Bryan Liles talking about ActiveModel. Can you imagine anything better? Maybe vanilla ice cream on apple pie. As a close second place, Bryan will show you why you need to at least investigate ActiveModel for your current or next project. Of course there will be tests, code, and more tests at Bryan's ActiveModel Extravaganza.

In this session, I will discuss why ActiveModel could be a great interface to allow Rails to get access to your data on your own terms. I'll start from the beginning, and using TDD, I'll explore the interfaces Rails 3 exposes in their API. Next, I'll explore the components of ActiveModel. Finally, I'll show you how I'm using ActiveModel right now, and give you a real-world war report. I repeat: There will be code.

Ruby APIs for NoSQL

Sarah Mei

I secretly think that NoSQL data stores are rabbits. They're breeding under the floorboards when we're asleep. How else do you explain a landscape that includes Redis, Riak, CouchDB, Tokyo Cabinet, Flock, MongoDB, and Cassandra, among many others? Mopsy and Cottontail can't be far behind.

Given this, picking the right rab… er, data store for your project can be a challenge. There are lots of factors to consider, such as tail fluffiness, consistency guarantees, replication strategies, and ear length.

But the Ruby API for the data store is important too. That's what you'll be dealing with day in and day out once you make your choice. If you can't stand the interface, you'll get sick of cleaning the cage pretty quickly.

In this talk, I'll run you through the mechanics of accessing several NoSQL data stores with Ruby. I promise not to bring a rabbit to the conference, and I definitely won't bring two. The last thing we need is more.

Data-Driven Government and the Ruby Developer

Eric Mill

A radically new relationship between developers and our government is taking shape. All levels of government—federal agencies, states, and cities—have begun opening their vast troves of data to citizens, free of charge and license.

It started small, but as inspired citizens, including many Ruby developers, have taken government data and created awesome apps, more and more governments have taken the leap to give their data away. Some have even started collaborating with citizens and creating new government services that never existed before.

It's a historic and powerful opportunity for us as Ruby developers, and we need to take advantage of it. This talk is about why you should care, what your fellow developers have been doing so far, and what you might do yourself.

Polyglot: When Ruby isn't enough or even sane (I'm going to hurt your nerd-feelings)

Blake Mizerany

You're so polyglot and you don't even know it. You may be using Ruby for too much. It's not the holy grail. This talk will pull from my experience at Heroku where I use much more than Ruby everyday; and I'm not just talking JavaScript. Technologies are designed to take on problems of a specific nature. There are those that are great for systems work and those that are not. Some make generating reports a cinch. A few are remarkable at digging through data. Networking can be a nightmare in some. I'll start with a swift but gentle introduction to Ruby's good but not great suits and move us into what to replace them with.

Hidden Gems of Ruby 1.9

Aaron Patterson

When attempting to solve our latest programming conundrum, we typically reach for the latest Ruby Gem that solves the problem for us. Oftentimes in our search for a solution, we neglect to look through some of the great libraries that come shipped with Ruby. In this talk we'll explore some of the tools we can use that don't require a gem install. We'll especially focus on the new toys in Ruby's standard library that ship with Ruby 1.9, but also look at some of the toys that ship with Ruby Classic™. Be prepared to be amazed and entertained. But most of all, be prepared to go home with something useful!

Being Your Best Asset and Not Your Worst Enemy

Evan Phoenix

Ruby is almost synonymous with Open Source thanks to an amazing community. Managing a successful Open Source project requires maintaining a careful balance of pragmatism, exuberance, and patience.

As soon as you have your first contributor you have to begin to think about how to manage not just the code but also the people. There are no org charts or managers to lean on for assistance; you have to figure out how to keep your contributors happy and on the right path. The tone you set for your project early on will stick with it for a very long time, so it's important to be sure you're the one setting it rather than allowing it to happen outside your control.

Evan will discuss managing a project as well as how contributors can make life easier for fellow developers.

The Shell Hater's Handbook

Ryan Tomayko

The Unix shell is widely despised as a modern programming language due to its arcane syntax, unpredictable control flow, and lack of support for fundamental constructs like: exception handling, objects, a module system, string functions, or even local variables! It's old. There are a billion implementations of the core language and userland utilities, each with subtle and incompatible differences. Documentation is too sparse or too dense or available only at your local library. It's a minefield.

But for all its perceived flaws, the Unix shell can be an amazingly productive environment—once you learn to hate it properly. It has super powers. Stuff you won't find in more general purpose languages. Learn to harness the shell's AWESOME POWER and you'll be able to quickly automate a wide range of tasks related to development workflow, source code editing, and systems administration/analysis.

In this talk, I want to show how to navigate the minefield, how to "think in shell," demystify the strange grammar (yes, there's an actual grammar in there), and compare approaches to common problems in shell vs. Ruby.

Lightning Talks

Get electrified with a dozen five minute talks on various topics by your fellow conference attendees, or give a talk yourself!

Brought To You By

Platinum Sponsors

New Relic

Pivotal Labs

Involver

Yammer

Wildfire

Gold Sponsors

AT&T Interactive

Silver Sponsors

Scribd

Orange Labs

Engine Yard

Recurly

Carbon Five

Zendesk

Bronze Sponsors

WyeWorks

New Leaders

OpenHosting

The Hybrid Group

Stickermule

Posterous

StreamSend

BlueBoxGroup

Aurora Feint

Interested in Sponsoring GoGaRuCo?
Download the Prospectus,
or contact Leah Silber for more info!