Rocky Mountain Ruby schedule

Thursday 1st September 2011

  • Focus? Why Do I Need More Stinkin' Focus?

    by Mike Gehard

    Ever have one of those days where you sit back at the end of the day and realize that you didn't get anything tangible done? Why do those days happen? Many times is it because we lack focus during the day to complete even the simplest of tasks. Our modern lives don't allow us to practice focus; in fact they conspire against us being focused. This talk will explain why focus is important to productivity and teach one way you can practice focus through meditation.

    At 9:00am to 9:15am, Thursday 1st September

  • Keynote: Code Blindness

    by Michael Feathers

    Michael Feathers will be giving the opening keynote this year at Rocky Mountain Ruby. Michael is well known in the software community for his work with XP/Agile, improving software development and working on large legacy codebases.

    At 9:15am to 10:00am, Thursday 1st September

    Coverage video

  • API Design Matters

    by Comte Anthony Eden

    The effects of API design will likely live with your project for a long time, often beyond your tenure with the project. Yet good API design is very rarely discussed and often leads developers to the conclusion that good APIs are something that "we know when we see them."

    This talk will attempt to layout a set of fundamentals for good API design so that we can begin to really understand the difference between well-designed APIs and those that are mediocre. It will also explain about various trade-offs that are made when designing APIs and some of the pros and cons that come with each trade-off. Finally we'll take a look at some good APIs and bad APIs in Ruby.

    At 10:30am to 11:00am, Thursday 1st September

    Coverage video

  • CRUD Is Not REST - Hypermedia For Y'All!

    by Nick Sutterer

    REST is an architectural style for distributed systems. However, many implementations forget about the distributed part of REST and simply map CRUD operations to HTTP verbs in a monolithic application. We're gonna go further and learn why hypermedia is the crucial part of REST architectures and how machines can browse resources just like humans using self-describing representations.

    Monolithic applications are boring, so let's separate things and create a REST system as it is intended to be. Let's build a simple system using the Roar gem, Rails and Sinatra and discuss the benefits and drawbacks we get from distributed hypermedia systems.

    At 11:00am to 11:30am, Thursday 1st September

    Coverage video

  • If You See the Mountain Lion, It's Too Late

    by Grant Blakeman

    People often think of design as something that helps solve problems, but design should actually prevent problems in the first place. While you may not be a designer, applying tenets of design thinking to your life and work will help you make better decisions, build better stuff, and give you a framework to keep life and work moving forward.

    At 11:30am to 11:50am, Thursday 1st September

    Coverage video

  • Things You Didn't Know About Exceptions

    by Avdi Grimm

    You know how to raise and rescue exceptions. But do you know how they work, and how how to structure a robust error handling strategy for your app? Starting out with an in-depth walk-through of Ruby's Ruby's rich failure handling mechanisms -- including some features you may not have known about -- we'll move on to present strategies for implementing a cohesive error-handling policy for your application, based on real-world experience.

    At 1:30pm to 2:00pm, Thursday 1st September

    Coverage video

  • Mastering the Ruby Debugger

    by Jim Weirich

    You are happily writing new code for your system when all of a sudden the code is not behaving the way you thought it should. Perhaps you just created a failing test, and the code you wrote was expected to make the test pass ... but it doesn't. What's the first thing you do?

    Some Rubyists will drop some "puts" statements into the code. Some will add a raise statement. And still others will depend on logging to trace the internals of the code. But a surprisingly few Rubyists will reach for the Ruby debugger.

    Despite a general disdain for the debugger in the Ruby community, the Ruby debugger is a powerful tool that can quickly get to the heart of a coding problem. This talk will concentrate on getting Rubyists up to speed on the debugger, how to use it effectively and learning other general debugging tips.

    At 2:00pm to 2:30pm, Thursday 1st September

    Coverage video

  • Code First, Ask Questions Later

    by Tim Clem

    Ever wonder how software is designed and developed at GitHub? Are you curious about how new features are deployed to the site? (Hint: ask the robot.) Want to know why we don't have any managers and don't track vacation days?

    This talk will explore running your company like an open source project and give some insight into how GitHub continues to leverage ruby and other open source tools to keep up with massive data loads and a growing community of users.

    At 2:30pm to 3:00pm, Thursday 1st September

    Coverage video

  • Cognitive Psychology and the Zen of Code

    by Jay Zeschin

    Many of us are familiar with the old adage about writing code "for people to read, and only incidentally for machines to execute" (thanks, Abelson and Sussman) - but it's easier said than done. The fields of object-oriented design, patterns, and software architecture are vast, but primarily concerned with the mechanical structure of code - what if we took a step back from the nuts and bolts of the code and look at the way we as humans read and write it? Can we use our understanding of the psychology of human cognition to better understand our target audience, and in turn write code that is more intuitive, readable, and maintainable? This talk will walk through some of the basics of cognitive psychology and relate them back to concrete ways that we as developers can optimize our code for high performance in the interpreter between our ears.

    At 3:20pm to 3:40pm, Thursday 1st September

    Coverage video

  • Cognitive Psychology and the Zen of Code

    by Jay Zeschin

    Many of us are familiar with the old adage about writing code "for people to read, and only incidentally for machines to execute" (thanks, Abelson and Sussman) - but it's easier said than done. The fields of object-oriented design, patterns, and software architecture are vast, but primarily concerned with the mechanical structure of code - what if we took a step back from the nuts and bolts of the code and look at the way we as humans read and write it? Can we use our understanding of the psychology of human cognition to better understand our target audience, and in turn write code that is more intuitive, readable, and maintainable? This talk will walk through some of the basics of cognitive psychology and relate them back to concrete ways that we as developers can optimize our code for high performance in the interpreter between our ears.

    At 3:20pm to 3:40pm, Thursday 1st September

    Coverage video

  • Using Your Intuition for Innovation and Decision Making

    by Suzan Bond

    Learn how to go inside out vs. outside in so you can tap into your intuition to make strong decisions and come up with innovative solutions. It might just help you invent the next big thing rather than being the next Groupon clone.

    At 3:40pm to 3:55pm, Thursday 1st September

    Coverage video

  • That Stuff They Don't Teach You in a Computer Science Program

    by Suzan Bond, Jay Zeschin and Mike Gehard

    There are plenty of resources on the web for the technical skills you need to be a good developer but it is harder to find good resources for the "soft" skills that make you a well rounded developer. Join Suzan, Jay and Mike for a interactive discussion about the skills that will make you not only a better developer but a better person in general.

    At 3:55pm to 4:15pm, Thursday 1st September

Friday 2nd September 2011

  • Real Time Rack

    by The Konstantin

    At least since node.js, everyone knows that real time HTTP responses are the next big thing. The secrets of handling incoming requests asynchronously with Ruby is not yet far spread among Rubyists, as the internals needed for such responses are neither specified nor documented and there is a lack of tools. Still, it is possible to use Server-Sent Events, Websockets and akin with Rack today. This talk will demonstrate the underlying technologies and how to use them.

    At 9:00am to 9:30am, Friday 2nd September

    Coverage video

  • Implementing Rails 3.1, Backbone.js, CoffeeScript, jQuery, Sass, and CouchDB on EC2

    by Rod Cope

    In under two months, my team:

    • Learned all about Rails 3.1, Backbone.js, CoffeeScript, Sass, and CouchDB
    • Wrote a new application that deploys open source stacks in the cloud
    • Created some stacks (e.g., Rails, Tomcat, BIRT)
    • Went to production on Amazon EC2

    Come to this session to see what went right, what went wrong, and how this all compares to one of our other production stacks based on Rails 2.3, JavaScript, jQuery, Redis, and MySQL. In particular, you'll learn how to take advantage of some hot new tools while avoiding many of their pitfalls.

    At 9:30am to 10:00am, Friday 2nd September

    Coverage video

  • There Are No Tests

    by Jeff Casimir

    The Ruby community is obsessed with testing, supposedly. In my experience about four out of five applications have either zero or completely ineffective test coverage.

    Have the courage to change it. Whether your own projects or recovering someone else's mess, let's talk strategy:

    • Starting with metrics
    • Refactoring for understanding
    • Comment-driven development
    • The unit testing foundation
    • Bug reports are your best integration tests
    • Focusing on value

    Rescue projects are popping up everywhere, and a strategic testing approach can save the day.

    At 10:00am to 10:30am, Friday 2nd September

    Coverage video

  • Ruby Messaging Patterns

    by Gerred Dillon

    As Ruby continues to mature as a language, its use in large scale (enterprise!) codebases is expanding - and the need to integrate into larger architectures is already here. It is tempting to build networks of APIs in order to integrate applications, but there is an answer - messaging. This talk will reveal the benefits of messaging, and describe patterns that can be implemented at any level - from workers on single applications, to integrating separate codebases, all the way up to massive, concurrent service-oriented architectures that rely on messaging as the backbone. Prepare to be assaulted with an inspiring way to integrate and scale - and leave armed with the tools required to do so.

    At 11:00am to 11:30am, Friday 2nd September

    Coverage video

  • Cloning Twitter: Rails + Cassandra = Scalable Sharing

    by Charles Max Wood

    Cassandra is a highly scalable and fast database engine based on its column architecture. It's a powerful alternative to most RDMS systems. Adding it to Rails gives you a great way to get a scalable system with many rows that can grow to meet your needs.

    At 11:30am to 12:00pm, Friday 2nd September

    Coverage video

  • Start using Jasmine. Write better JavaScript. Profit.

    by Justin Searls and Cory

    As practitioners who comprise the Ruby software community, we have made great strides to establish testing as a best practice. We have done so in order to build quality into our processes and systems.

    It seems, however, that we have a blind spot when it comes to one of the most important parts of our applications: rich user interaction written in JavaScript.

    It used to be the case that we could blame this disregard for JavaScript tests on a lack of good testing tools, or having very limited amounts of JS in our applications.

    Now more than ever before, rich user interfaces are prevalent, and testing tools have made great strides; specifically with regard to Jasmine.

    We will briefly discuss reasons why JavaScript tests are critical, and easier than ever before.

    The purpose of our presentation is to provide fellow software developers with actionable knowledge of how to:

    • Add Jasmine to your applications
    • Use common patterns for testing JavaScript
    • Stop lying about testing all the time
    • Create and maintain automated tests for your JavaScript
    • Start using Jasmine. Start writing better JS. Profit.

    At 2:00pm to 2:20pm, Friday 2nd September

  • Surviving Growing from Zero to 15,000 Selenium Tests

    by Jim Holmes

    Selenium’s a wonderful tool for automating acceptance and functional tests; however, real-world implementations bring a lot of pain. I suffered all that pain, and more, as I piloted an effort that started out with Selenium IDE, moved through RC, and ended up with WebDriver. This talk covers things like setting up baseline data, creating backing test frameworks, dealing with brittle tests, and figuring out how to appropriately manage all those incredibly slow Selenium tests so that you actually get effective, useful testing in. Learn from my pain (and successes!) so that you don’t have to suffer it in your own projects!

    At 2:20pm to 2:40pm, Friday 2nd September

  • Testing Panel

    by Cory, Jim Holmes, Justin Searls and Jeff Casimir

    Jeff Casimir will lead a follow-up panel focusing on testing topics with Justin Searls, Cory Flanigan and Jim Holmes.

    At 2:40pm to 3:00pm, Friday 2nd September

    Coverage video

  • A Documentation Talk

    by Zach Holman

    "A Documentation Talk" sounds pretty boring, right? Wouldn't it be scandalously titillating if this talk's title included detailed analysis of the expectations and results of the talk itself? Jeez it's like someone's making an overt metaphor for how Rubyists document their code.

    At GitHub, we add docs to every single method we write, and we couldn't be more excited about it. It means faster and simpler code. It means stronger tests. It means your developers can pay attention to new commits without stressing about them. Documentation will make your project so very happy.

    At 3:30pm to 4:00pm, Friday 2nd September