Talks

04-05 April 2008: Register
  • Keynote (Friday)

    Michael Koziarski

    Michael Koziarski will be talking on beautiful code, object orientation and their importance.

  • Keynote (Saturday)

    David A Black

    The Flying non-Scotsman: or, My thirty-two year trip from the Borders to Edinburgh

  • Code Generation: The Safety Scissors of Metaprogramming

    Giles Bowkett (slides)

    Metaprogramming is cool. Metaprogramming is hip. Metaprogramming has performance costs and is a serious pain in the butt to debug.

    You can get a lot of the benefits of metaprogramming from using code generation instead. In fact, most metaprogramming is really just dynamic code generation. Or maybe it’s the other way around. You could say that metaprogramming is really just dynamic code generation, or that code generation is just compiled metaprogramming. Code generation is code which creates text strings of code and saves them to the filesystem; metaprogramming is code which creates text strings of code and passes them directly to eval() or one of its variants.

    Either way you slice it, code generation is a powerful strategy. Using Ryan Davis’ awe-inspiring library Ruby2Ruby, it’s technically possible to unit test metaprogramming, but unit testing code generation is easier to do. Its results are also a lot easier to debug. Jack Herrington’s brilliant book “Code Generation In Action” demonstrates how you can generate the literally hundreds of Java files a non-trivial EJB application needs with a much smaller number of Ruby programs, slashing development time by months. Several aspects of Rails use code generation extensively, including scaffolding and the rails command itself. Rails’ core strategy of “convention over configuration” would be impossible without code generation.

    In this talk, I’ll demonstrate both how to unit-test metaprogramming with Ruby2Ruby, nd how to automate EJB application development with Herrington’s code generation techniques. Bring a nice Tupperware bowl to catch your brain in after it leaks out your ears.

  • Domain Specific Languages : Molding Ruby

    Joe O'Brien (slides)

    Ever wondered what all the fuss is about when it comes to DSL’s and Ruby? It seems to be all we hear about. This talk will peel away the onion and look at what it is about Ruby that makes it the perfect candidate for creating your own languages. I will show you, through examples, how you can create your own languages without the need for compilers and parsers. We will also cover some real world examples in areas of Banking and Medicine where DSL’s have been applied.

  • Advanced Ruby Class Design

    Jim Weirich

    The Ruby language is incredibly flexible, allowing the construction of libraries in ways not anticipated by conventional static OO languages. This talk will look into the design and constructions of three uniquely Rubyesque libraries: (1) Dynamic Expressions, or How to Parse without Parsing, (2) The Art of Doing Nothing, a look a how Blank Slate works and (3) Master of Disguise, how FileList manages to impersonate Arrays.

  • Handling Long-Running Tasks in Rails

    Andrew Stewart (slides)

    Rails is a web framework and thus designed for HTTP’s synchronous request and response: you make a request to the application, the application executes it and returns the response. For your application to feel snappy its filters and actions should take no more than a few milliseconds to execute. But what do you do if you need to run a task that takes more than a few milliseconds? Perhaps ten minutes or even longer? You need to move execution off the request-response thread and onto a different one.

    Rails doesn’t support this out of the box and it’s not obvious how to do this correctly. Happily a number of plugins fill the gap. They all work differently, though, and cater for different situations. The one you need for your application depends on your situation.

    This session lays out all your options and explains where each plugin is best suited. It shows you how to work with each plugin. By the end you will be able to make an informed decision about which one you need in any given situation—and how to use it well.

  • Rails Patterns

    Jonathan Weiss (slides)

    The aim of this session is to provide an overview of Rails patterns. We will look at typical problems of Rails applications like asynchronous image processing or authentication and their solutions. By examining those common scenarios, patterns and use cases will emerge.

    The patterns will be presented by providing some example scenarios and evaluating several possible solutions. Covered patterns and best practices will include

    • Authentication (Browser vs. API)
    • Doing asynchronous operations like image processing or long-running calculations
    • Scheduling and messaging
    • Handling many downloads and uploads without bringing down the application
    • Caching
    • Tracking and versioning external sources like plug-ins and libraries
    • Admin interfaces in a RESTful world
    • Deployment setups
  • Lessons Learned from Working With Rails

    Martin Sadler (slides)

    Why would you tie the pieces of the Rails community together? How would you do it? Where would you start? What are the challenges? What tools would you choose? What interesting statistics and trends can be gleaned?

    Working With Rails is the largest Ruby on Rails community site and serves as a focal point for the worldwide community. It helps developers connect with others through a range of innovative features and rewards contributors to the framework through Regular Hackfests.

    In this talk Martin Sadler takes you on a journey into the world of Working With Rails. Find out about how the project got started including interesting facts and revealing stats about the community. Get a behind the scenes look at the architecture, code, and development practices and discover why this site is such as plus for Ruby on Rails.

  • Regression Therapy - Contentful Testing

    Anthony Bailey (slides)

    I’ll discuss regression testing view content – comparing it directly with a known-good previously captured copy of that content.

    So-called regression testing is usually seen as the poorer cousin of “proper” domain-abstracted assertion-based testing. Often rightly so! However, with sufficiently powerful “review and accept” support in place, I have found that it can work very well in certain contexts, and that view content generated by a web app is one such.

    I’ll present the Contentful plug-in I’ve extracted and refined through testing my own (small, spare time) Rails apps. I’ll review the pros and cons of this and other approaches to testing the view, including using contentful testing as a temporary “vice” during pervasive refactorings. The approach and discussion extend outside of view testing in Rails to other languages/frameworks and other domains, and I’ll explore those areas as appropriate.

  • Story Driven Development: The Next Generation of Rails Functional Testing

    Bryan Helmkamp

    Story Driven Development (SDD) helps close the gap between the language of developers and product owners so they can clearly define when software is “done”. Readable and executable product requirements are now possible. We’ll explore tips for integrating SDD into your existing workflow and cover technical details for implementation.

  • Migrating to Ruby1.9

    Bruce Williams (slides)

    Ruby1.9, release just this last Christmas, has introduced a wide range of syntax and language features, many of them not backwards compatible with 1.8. This tutorial will focus on these changes and, being as real-world as possible, emphasise concrete steps needed to update existing Rails (and more generally, Ruby) applications from 1.8 to 1.9.

    The tutorial will introduce attendees to specific points of difference between the versions—beyond just the touted performance improvements – changes such as the new object literals, enumerators, text processing changes (encodings and onigurama regular expressions), new scoping rules, and completely new features like Fibers.

  • Pushing Rails onto our Stack: a system integration study

    Richard McMahon and Maria Gutierrez (slides)

    Over the course of the last four years, our small team has used Java Enterprise technologies to build a comprehensive content management system for mobile games. This system has become such an essential part of the business that demands for further features have come quick and fast ever since.

    About 2 years ago it became clear that further growth of the system was being hampered by its monolithic nature and the tortuous state of the aging Java frameworks that we were using.

    After the successful introduction of a small rails application, we decided to build out all new functionality as satellite Rails applications that communicated with one another, and our “legacy” codebase. During the course of this development we have explored a variety of techniques to get the applications to appear as one cohesive system.

    Our talk will focus on several of these integration scenarios and the techniques (web-services, replicated data, shared-database, use of iframes, messaging servers) that we used to make them work.

  • Good OO Design on Rails (CANCELLED)

    Steven Baker

    Ruby on Rails presents us with many great ways to design and develop our software quickly. Convention over configuration and “opinionated software” make many design decisions easy. The increased pace at which we can develop our software using Rails means that we wind up with larger projects faster. Poor understanding or abuse of these ideas, and not respecting good object-oriented design can destroy your project making maintenance a nightmare, and adding simple features a huge undertaking.

    This talk will introduce design principles and how they can benefit Ruby on Rails projects. Some of the principles covered will include the Open-Closed Principle, Single-Responsibility Principle, and others from Bob Martin’s ASD:PPP. We’ll also touch on traditional favourites such as the Law of Demeter. In addition, we’ll cover examples of good design that don’t yet have names, from real-world problems in existing Ruby on Rails projects. Finally, we’ll cover some of the popular-but-wrong principles that are common in Ruby on Rails projects, so that they can be avoided in the future.

    We’ll cover how these principles apply to Ruby on Rails and how they can benefit your application by making it more maintainable.

    The aim of this talk is to show how to apply good OO design that has been proven in the industry to Ruby on Rails, where good OO design is sometimes prematurely abandoned in favour of magic hackery.

  • BDD with Shoulda

    Tammer Saleh

    The Shoulda Rails plugin makes it easy to write elegant, understandable, and maintainable tests. Using Shoulda, you can write tests with nested contexts and human readable names, all the while staying compatible with existing Test::Unit tests. Shoulda also comes with a large number of test macros specifically geared to DRY up your Rails model and controller tests. Validations, flash messages, and the like can be tested in single line statements. Going further, Shoulda can test entire RESTful controllers based on short and concise specifications.

    Learn how to use Shoulda to increase your test coverage and readability as we walk through developing an application using BDD methodologies. In addition, you’ll learn good general testing techniques, including judicious use of mocking and stubbing. At the end of the presentation, you’ll be given a thorough crash course on the advanced meta-programming techniques that went into the development of Shoulda and the various model and controller macros.

  • mobileAct: a high-risk Rails app for Channel 4

    Thomas Pomfret

    mobileAct Unsigned is Channel 4 TV search for the best unsigned band in Britain. The site lets bands and fans to communicate and share media. In addition, users get to vote on who should win the million pound recording deal. “mobileAct: a high-risk Rails app for Channel 4” will report back on Mint’s experiences building this mass-market application. In the light of recent TV voting scandals, the spotlight was on voting. In a very public arena, we had to make sure not only that the vote was fair, but that it could be seen to be fair.

  • Collective Intelligence: Leveraging User Data to Create Intelligent Rails Applications

    Paul Dix (slides)

    Take advantage of user data to create intelligent Rails applications! This talk will focus on data mining to create complex application behavior and gain insight into the patterns and habits of your users. Examples of these techniques can be seen with recommendation systems like those created by Amazon, Netflix, last.fm, and others. Additional examples include spam filtering systems for email or comment filtering provided by Akismet.

    I will focus on techniques for gathering data, specific gems and plugins for performing various data mining and machine learning tasks, and performance issues like how to distribute the work to separate servers. Theory in this talk will be light and the specific algorithms will only get a mention by name. We’ll be looking at real world Ruby and Rails code examples for building recommendation, ranking, and classification systems.

  • Deploying Rails with Litespeed: a developers best kept secret!

    Tom Beddard

    Litespeed is a web server with dedicated Rails support but is still relatively unknown. It can completely replace Apache/mongrel configurations and its web based configuration interface makes setup and management super easy without needing to be a server geek. At tictoc we’ve been using Litespeed to power over 100 Rails based websites and apps for the past 18 months. The aim of this talk is to share the experiences we have gained and describe the real-world solutions to deploying multiple Rails applications with Litespeed.

  • JRuby on Rails: Up And Running!

    Charles Oliver Nutter and Thomas Enebo (slides)

    JRuby 1.1 has been released, and is becoming the Rails platform of choice for many Rails shops. In this session, we’ll show how to start from scratch or migrate your existing Rails app to JRuby. We’ll demonstrate the various deployment options on JRuby. We’ll show how to integrate Java libraries into your app. We’ll walk through NetBeans’ Ruby and Rails support and talk about how JRuby has enabled better tools and better solutions for Ruby developers. And we’ll have a conversation with the audience about where JRuby on Rails should go from here. Be prepared to talk shop and see lots of code and demos.

  • Bonus Ruby-free Erlang Session

    Gordon Guthrie

    Gordon Guthrie adds a bonus session to the conference that’s all about Erlang. Details to follow.

Platinum Sponsor

Sun Microsytems

Gold Sponsors

Engine yard JP Morgan

Silver Sponsors

elc technologies Morph Labs

Partners

minimetre xeriom-networks Skillmatter