<?xml version="1.0" encoding="UTF-8"?>
<event>
  <created-at type="datetime">2009-07-22T17:27:21+00:00</created-at>
  <creator-id type="integer" nil="true"></creator-id>
  <description>Rails Underground '09 takes place 24-25th July in London at the Royal National Hotel.

We'll be talking about cutting-edge subjects, the latest developments and the considerable benefits of the Rails platform</description>
  <end-date type="datetime">2009-07-25T00:00:00+00:00</end-date>
  <event-url>http://rails-underground.com/</event-url>
  <hashtag nil="true"></hashtag>
  <id type="integer">143</id>
  <location>London, UK</location>
  <series-id type="integer" nil="true"></series-id>
  <start-date type="datetime">2009-07-23T00:00:00+00:00</start-date>
  <title>Rails Underground</title>
  <updated-at type="datetime">2009-07-27T12:08:17+00:00</updated-at>
  <average-rating type="decimal">3.87</average-rating>
  <talks type="array">
    <talk>
      <created-at type="datetime">2009-07-27T12:00:49+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1276</id>
      <info>Chris Parsons from Eden Development is putting together a half-day workshop on Cucumber &amp; BDD techniques for the day before the conference. These topics have been very popular on the forums and in the feedback I've received, so I hope you will find the workshop useful!</info>
      <location></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url></slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url>http://www.rails-underground.com/workshop-details.html</talk-url>
      <title>BDD Workshop</title>
      <updated-at type="datetime">2009-07-27T12:18:22+00:00</updated-at>
      <when type="datetime">2009-07-23T09:00:00+00:00</when>
      <average-rating type="decimal">4.65</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-24T11:58:14+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1264</id>
      <info>Keynote at Rails Underground</info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url></slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url></talk-url>
      <title>Rails Is a Hammer</title>
      <updated-at type="datetime">2009-07-24T11:58:14+00:00</updated-at>
      <when type="datetime">2009-07-24T09:05:00+00:00</when>
      <average-rating type="decimal">3.36</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-24T11:55:36+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1262</id>
      <info>Cucumber is a BDD tool that can execute plain-text documents as automated functional tests through Ruby mappings. It allows you to build up a custom domain language to talk about your applications behaviour that non-technical users can understand and write. We'll look at working outside-in with Cucumber and the importance of focusing on customer value. Look at how Cucumber fits into the testing workflow, how it compliments Behaviour Driven Development and give practical examples/tips.</info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url></slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url>http://www.rails-underground.com/2009/06/talk-working-outsidein-with-cucumber-joseph-wilk.html</talk-url>
      <title>Working outside-in with Cucumber</title>
      <updated-at type="datetime">2009-07-24T11:55:36+00:00</updated-at>
      <when type="datetime">2009-07-24T10:05:00+00:00</when>
      <average-rating type="decimal">4.08</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-27T15:58:05+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1279</id>
      <info> New features in Rails are opportunities to improve your code. If you're handed an unmaintainable project, should you refactor it gradually or kill it with fire and start again? If you're refactoring, how do you stop the scope creeping all the way back to a rewrite-by-stealth? If you do choose to cut your losses and rewrite, then how do you avoid the 'second system' effect?

This session will use live code from several of our recent projects, and will discuss how we made the decision, how we managed the resulting work, and some of the techniques we used to beautify the code. </info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url>http://www.slideshare.net/gwynm/refactoring-with-fire</slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url>http://www.rails-underground.com/2009/06/talk-refactoring-with-fire-gwyn-morfey.html</talk-url>
      <title>Refactoring With Fire</title>
      <updated-at type="datetime">2009-07-27T15:58:05+00:00</updated-at>
      <when type="datetime">2009-07-24T10:05:00+00:00</when>
      <average-rating type="decimal">4.19</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-28T14:25:31+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1283</id>
      <info>The big product launch is approaching for your shiny new application and you&#8217;re scrambling to fix last minute bugs and work out the kinks. Deep down, you have this suspicious feeling that you&#8217;re forgetting something important. Whether it&#8217;s your first or your twentieth time that you&#8217;ve launched an application, it&#8217;s almost guaranteed that there are things that will get overlooked.

In this talk, Robby Russell, a partner and the Chief Evangelist at Planet Argon will walk the audience through his team&#8217;s Project Launch checklist, which has evolved through several years of designing, developing, and deploying web applications. Robby will share his experiences and outline a collection of best practices such as; keeping your project releasable at all times, managing staging and production environments, bootstrapping your application for SEO and analytics/conversion tracking, preparing for the unexpected, and most importantly&#8230; making sure your clients are ready for the bumpy ride.

Robby&#8217;s goal is to share from the hard lessons that his team has experienced over the years and provide you with some ideas to walk away with you. As you&#8217;ll learn, it&#8217;s never too early to start preparing an application for the big launch.</info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url>http://www.slideshare.net/robbyrussell/launching-ruby-on-rails-projects-a-checklist</slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url>http://www.rails-underground.com/2009/06/talk-launching-ruby-on-rails-projects-a-checklist-robby-russell.html</talk-url>
      <title>Launching Ruby on Rails projects: A checklist</title>
      <updated-at type="datetime">2009-07-28T14:25:31+00:00</updated-at>
      <when type="datetime">2009-07-24T11:05:00+00:00</when>
      <average-rating type="decimal">3.77</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-24T11:57:04+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1263</id>
      <info>Many of us have found ourselves having to deal with a difficult Rails codebase. Maybe you wrote it before you got good at Rails. Maybe you are rescuing a disaster caused by someone else. Many times our gut reaction is to scrap the legacy codebase and rewrite, but what about times when that isn't a feasible approach? What to do? I will talk about some techniques for working with legacy code, estimating work on legacy apps and other such fun topics.
</info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url></slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url>http://www.rails-underground.com/2009/07/talk-working-with-legacy-rails-apps-technical-debt-hell-and-how-to-work-your-way-out-of-it-desi-mcad.html</talk-url>
      <title>Working with Legacy Rails Apps - Technical Debt Hell and how to work your way out of it</title>
      <updated-at type="datetime">2009-07-24T11:57:04+00:00</updated-at>
      <when type="datetime">2009-07-24T11:05:00+00:00</when>
      <average-rating type="decimal">3.21</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-24T11:59:14+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1265</id>
      <info>Take a break from the technical mumbo-jumbo and listen to Obie leverage his wit and real-life experience in what promises to be an entertaining and insightful session geared towards current and aspiring Rails entrepreneurs.</info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url></slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url>http://www.rails-underground.com/2009/06/talk-blood-sweat-and-rails-obie-fernandez.html</talk-url>
      <title>Blood, Sweat, and Rails</title>
      <updated-at type="datetime">2009-07-24T11:59:14+00:00</updated-at>
      <when type="datetime">2009-07-24T12:05:00+00:00</when>
      <average-rating type="decimal">4.08</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-28T14:25:32+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1284</id>
      <info>Charlie Nutter is co-lead on the JRuby project. He went to his first Ruby conference 5 years ago, and liked the language he quickly started contributing. In 2006 he joined Sun Microsystems, and has been working on JRuby ever since. Over the past couple years, he has also been an advocate for JVM languages and Java/JVM improvements that would make language development easier.</info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url>http://github.com/headius/railsunder/tree/master</slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url nil="true"></talk-url>
      <title>Plenary: JRuby &amp; Rails</title>
      <updated-at type="datetime">2009-07-28T14:25:32+00:00</updated-at>
      <when type="datetime">2009-07-24T13:40:00+00:00</when>
      <average-rating type="decimal">3.98</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-27T16:02:13+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1280</id>
      <info>(presented by Gwyn Morfey, after Laurie Young was forced to drop out) 

Deploying to and living with a number of different servers is a common requirement. Laurie Young will introduce the best ruby tools for managing this as part of your Agile life.


In order to meet the needs of the various people in a project, as well as deploying software to real live users, we regularly need to use several servers. Developers, product owners, testers and users all have very different needs, which change throughout the lifetime of the project. It can be a real headache managing a number of servers, and keeping them all up and running, with the right version of the code.

Laurie will talk about the types of servers you are most likely to need, how they can be used to give all the people on your project what you need. He will also explain how you should manage these servers, and what tools you can use to make this easy and pain free. </info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url></slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url>http://www.rails-underground.com/2009/06/talk-agile-deployment-with-ruby-laurie-young.html</talk-url>
      <title>Agile Deployment with Ruby</title>
      <updated-at type="datetime">2009-07-27T16:02:13+00:00</updated-at>
      <when type="datetime">2009-07-24T14:40:00+00:00</when>
      <average-rating type="decimal">3.84</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-28T14:25:32+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1285</id>
      <info>The Git Basics talk is geared towards people who want to use Git more effectively on a daily basis. Driven by real-life examples different git related techniques will be covered. From basic branching and tagging to how to manage/organise your repository. Special attention goes to hosting an open source project on GitHub effectively.

**Details**

  * Short introduction to git
  * Short introduction to branching
  * How to use branches and tags with your Rails app and different environments (test, staging, production)
  * How to manage forks and patches from other (GitHub) users (how to use the ForkQueue and the Signed-off-by feature)
  * A few minutes are reserved to answer questions</info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url nil="true"></slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url>http://www.rails-underground.com/2009/06/talk-git-basics-ariejan-de-vroom.html</talk-url>
      <title>Git Basics</title>
      <updated-at type="datetime">2009-07-28T14:25:32+00:00</updated-at>
      <when type="datetime">2009-07-24T14:40:00+00:00</when>
      <average-rating type="decimal">3.35</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-25T21:20:42+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1269</id>
      <info>Gave an overview of how to develop a commercial B2B SaaS web app using the Invoicing Gem (http://ept.github.com/invoicing/) and Rails or other Ruby web frameworks. Explained some of the best practices for structuring accouting data in a developer-friendly way, some background of where those conventions come from, and some perspectives for open standards for exchanging financial data via clean web APIs.</info>
      <location></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url>http://www.slideshare.net/martinkleppmann/invoicing-gem-sales-payments-in-your-app</slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url>http://www.yes-no-cancel.co.uk/2009/07/24/invoicing-gem-at-rails-underground/</talk-url>
      <title>Invoicing Gem - Sales &amp; Payments In Your App</title>
      <updated-at type="datetime">2009-07-25T21:22:23+00:00</updated-at>
      <when type="datetime">2009-07-24T15:40:00+00:00</when>
      <average-rating type="decimal">3.92</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-28T13:33:56+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1282</id>
      <info>CouchDB is a distributed document orientated database built in Erlang with a RESTful HTTP/JSON API. It avoids the need for migrations, plays well offline and promises easy scaling. This talk introduces the concepts specific to CouchDB, looks at the benefits of using CouchDB compared to a relational database and demonstrates how to use it with rails. </info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url>http://www.slideshare.net/Georgio_1999/couch-foo-couchdb-on-rails</slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url></talk-url>
      <title>CouchDB and Ruby</title>
      <updated-at type="datetime">2009-07-28T13:33:56+00:00</updated-at>
      <when type="datetime">2009-07-24T16:30:00+00:00</when>
      <average-rating type="decimal">3.9</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-25T21:36:40+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1270</id>
      <info>In big companies it can be fairly difficult to introduce new tools and technologies for many reasons. Although Ruby and Rails have become very popular over the last years, there are still software developers who have not even heard about them. That's especially true for enterprise developers whose working days are often dominated by Java and friends.

Rails has been used in production environments since its early days and it made many people's daily work much more productive and way more fun. But there are common issues many developers face when trying to get Ruby/Rails adopted: Nobody knows it. We have invested so much into other technologies. It does not scale. There is no big company behind it. It is too slow. There are no tools. And so on...

In this talk you'll learn why Ruby/Rails adoption is more often a social problem than a technical one. You'll also learn about different strategies to convince your boss, your fellow developers, and the operations department of the many advantages of Ruby and Rails. For example, you'll see why it's often advantageous to start with a pure Ruby project and not with a Rails application.

Among many other things you will learn how tiny trade-offs prevent your database administrators from suffering a cultural shock and how to turn &quot;we always did it this way&quot; colleagues into enthusiastic Ruby fans. </info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url></slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url>http://www.rails-underground.com/2009/06/talk-sneaking-ruby-rails-into-big-companies-maik-schmidt.html</talk-url>
      <title>Sneaking Ruby &amp; Rails Into Big Companies</title>
      <updated-at type="datetime">2009-07-25T21:36:40+00:00</updated-at>
      <when type="datetime">2009-07-24T21:00:00+00:00</when>
      <average-rating type="decimal">3.95</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-25T21:38:28+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1271</id>
      <info> The internet of things is a meshing of the physical and online world.

The first stage is labelling the objects around us in such a way that the label corresponds to online resources ('augmented reality'). This element has been present in Japan for a few years now, and is used for many applications. This talk will discuss what's required to make this truly practical in Rails. The second stage of this integration is to have objects communicate actively. This at present requires custom hardware with sensors - talking to APIs. </info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url></slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url></talk-url>
      <title>Rails and the internet of things</title>
      <updated-at type="datetime">2009-07-25T21:38:28+00:00</updated-at>
      <when type="datetime">2009-07-24T21:00:00+00:00</when>
      <average-rating type="decimal">3.9</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-28T14:25:32+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1286</id>
      <info>Yehuda Katz, member of the core teams for Rails and jQuery, lead developer of the Merb project, core contributor to DataMapper contributor to Rubinius and Johnson,creator of Thor and Moneta, and works for Engine Yard.</info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url nil="true"></slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url nil="true"></talk-url>
      <title>Keynote</title>
      <updated-at type="datetime">2009-07-28T14:25:32+00:00</updated-at>
      <when type="datetime">2009-07-25T09:00:00+00:00</when>
      <average-rating type="decimal">3.9</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-22T17:27:26+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1260</id>
      <info>The benefits of Rack support in Rails have become increasingly obvious; Rails Metal and integrating multiple Rack applications have made possible architectures that were impractical before, and some long-held opinions are ripe for change. In this session, we'll see how to set up this integration and explore real examples of how it can be used&#8212;including the rehabilitation of page caching.
</info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url></slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url></talk-url>
      <title>And the Greatest of These Is ... Rack Support</title>
      <updated-at type="datetime">2009-07-22T17:27:26+00:00</updated-at>
      <when type="datetime">2009-07-25T10:05:00+00:00</when>
      <average-rating type="decimal">3.85</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-28T14:25:32+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1287</id>
      <info>RabbitMQ is a fast, reliable, open source Enterprise Messaging system. If you&#8217;re doing high volume messaging and need a high degree of reliability, you should definitely consider using RabbitMQ!

EventMachine is a fast, simple, lightweight event-processing library for Ruby programs. It lets you write network clients and servers without handling sockets- all you do is send and receive data. EventMachine is designed to simultaneously meet two key needs:

  * Extremely high scalability, performance and stability for the most demanding production environments; and
  * An API that eliminates the complexities of high-performance threaded network programming, allowing engineers to concentrate on their application logic.

In this talk:

  * Learn how to process tasks in a distributed environment using RabbitMQ,
  * Learn what's behind the asynchronous amqp gem and how it relates to EventMachine
  * See some code with EventMachine teasers and learn how to use RabbitMQ to tame your cloud environment.</info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url nil="true"></slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url>http://www.rails-underground.com/2009/06/talk-distributed-and-concurrent-programming-using-rabbitmq-and-eventmachine-paolo-negri.html</talk-url>
      <title>Distributed and Concurrent Programming using RabbitMQ and EventMachine</title>
      <updated-at type="datetime">2009-07-28T14:25:32+00:00</updated-at>
      <when type="datetime">2009-07-25T11:05:00+00:00</when>
      <average-rating type="decimal">3.87</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-26T10:35:06+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1275</id>
      <info>For details, see talk URL.</info>
      <location></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url>http://www.slideshare.net/clemensk/rails-i18n-from-the-trenches</slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url>http://www.rails-underground.com/2009/06/talk-rails-i18n-from-the-trenches-clemens-kofler-.html</talk-url>
      <title>Rails i18n From the Trenches</title>
      <updated-at type="datetime">2009-07-29T09:17:11+00:00</updated-at>
      <when type="datetime">2009-07-25T12:15:00+00:00</when>
      <average-rating type="decimal">3.99</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-27T13:49:47+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1277</id>
      <info>An overview of some of the more advanced features of Sphinx and Thinking Sphinx, including Facets, Excerpts, Geo-Searching, Internationalisation, Delta Approaches, Multi-Server Deployment, and Sphinx Scope.</info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url>http://www.slideshare.net/freelancing_god/sphinx-beyond-the-basics</slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url></talk-url>
      <title>Sphinx: Beyond the Basics</title>
      <updated-at type="datetime">2009-07-27T13:49:47+00:00</updated-at>
      <when type="datetime">2009-07-25T12:15:00+00:00</when>
      <average-rating type="decimal">3.96</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-25T13:56:06+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1267</id>
      <info>Mobile communication and interaction shouldn't just be limited to voice. There are many ways to effectively take advantage of mobile technology that can help us build better Rails application tailored to portable devices.  Taking your application into the mobile space is easier than one would think. Find out why it&#8217;s important to go mobile and just how to do so.</info>
      <location></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url></slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url></talk-url>
      <title>Mobilize Your Rails Application</title>
      <updated-at type="datetime">2009-07-25T14:12:57+00:00</updated-at>
      <when type="datetime">2009-07-25T13:45:00+00:00</when>
      <average-rating type="decimal">4.1</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-28T14:25:32+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1288</id>
      <info>David Heinemeier Hansson is the original author of Ruby on Rails. He is also a partner in 37signals. The company behind Basecamp, Highrise, Backpack, Campfire, Writeboard, and Ta-da List. For the work on Rails, he won Best Hacker of the Year 2005 at OSCON from Google and O'Reilly. And in 2006, he accepted the Jolt award of product excellence for Rails 1.0.

Obie Fernandez is author of the The Rails Way and the editor of Addison-Wesley's Professional Ruby series He founded and heads Hashrocket, a company offering Ruby development services Obie founded the Ruby practice at ThoughtWorks and is a proponent of rails maturity models.

Jim Weirich is the Chief Scientist for EdgeCase LLC, and is the creator of rake. Jim is very active in the Ruby community, presenting at many conferences and contributing to open source projects such as RubyGems and flexmock. Jim blogs at http://onestepback.org/.

Jonathan Siegel is the founder of ELC Technologies, which has its headquarters in Santa Barbara, California, and president of ELC Technologies&#8217; London-based operation, which services clients throughout Europe. As founder of ELC, Jonathan has established long-term relationships with global corporations including Cisco Systems, LiveNation, Formula 1 and others. As an entrepreneur, Jonathan has played a founding role in several Ruby on Rails product businesses including RightCart.com, RightScale.com and now RightSignature.com.</info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url nil="true"></slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url nil="true"></talk-url>
      <title>Panel Q&amp;A</title>
      <updated-at type="datetime">2009-07-28T14:25:32+00:00</updated-at>
      <when type="datetime">2009-07-25T14:30:00+00:00</when>
      <average-rating type="decimal">3.13</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-28T14:25:32+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1289</id>
      <info>Many words of programming wisdom have been written to promote the idea of low coupling between modules. &quot;Prefer delegation over inheritance&quot;, &quot;The Law of Demeter&quot; are examples of these words of advice. But why does delegation introduce less coupling then inheritance. And how does the law of Demeter reduce coupling. To understand these issues, we will look at the concept of &quot;connascence&quot; how it appears to unify many different design principles under an overall view of coupling.</info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url nil="true"></slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url>http://www.rails-underground.com/2009/07/talk-grand-unified-theory-of-software-jim-weirich.html</talk-url>
      <title>Grand Unified Theory of Software</title>
      <updated-at type="datetime">2009-07-28T14:25:32+00:00</updated-at>
      <when type="datetime">2009-07-25T15:55:00+00:00</when>
      <average-rating type="decimal">4.36</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-28T14:25:32+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1290</id>
      <info>During the course of this talk I'll look at Ruby's support for the *nix process model and explore some of the cool ways this can be exploited to create multi-process applications suited to today's multi-core systems.

There will be a fair amount of code for off-line study which will be glossed over during the presentation due to the time constraint and overall the pace is likely to be brisk with the intention of going from basics to intermediate level in about thirty minutes. I would estimate between thirty and forty slides in total, which will be available online as soon as the presentation is over.

We start with the basics, demonstrating the uses of Kernel#fork and Process to spawn and manage *nix processes. This is followed by coverage of interprocess communication using signals, pipes and sockets. Next we introduce Kernel#syscall as a means of tapping directly into low-level functionality, rolling our own version of Kernel#fork on OSX before looking at named pipes and memory mapped files.

Example applications will be examined such as watchdog timers, background I/O processes and parallel enumerators.

With time running short we'll optionally follow up with coverage of System V IPC using Kernel#syscall for message queues, semaphores and shared memory.</info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url nil="true"></slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url>http://www.rails-underground.com/2009/06/talk-the-ruby-guide-to-nix-plumbing-eleanor-mchugh-.html</talk-url>
      <title>The Ruby Guide to *nix Plumbing</title>
      <updated-at type="datetime">2009-07-28T14:25:32+00:00</updated-at>
      <when type="datetime">2009-07-25T15:55:00+00:00</when>
      <average-rating type="decimal">3.23</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-28T14:25:32+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1291</id>
      <info>Setting up monitoring for web applications can be complicated - tests tend to lack expressiveness, and quite often don't even test the right problem in the first place.

cucumber-nagios lets you write behavioural tests for your web apps in plain English and outputs the test results in the Nagios plugin format, letting Nagios notify you when your production apps aren't behaving.

Lindsay will be covering how to get up and running with the tool, writing tests for your web apps, and why it's important to test the behaviour (and not just the availability) of your production web apps.</info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url nil="true"></slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url>http://www.rails-underground.com/2009/06/talk-behaviour-driven-monitoring-with-cucumbernagios-lindsay-holmwood.html</talk-url>
      <title>Behaviour driven monitoring with cucumber-nagios</title>
      <updated-at type="datetime">2009-07-28T14:25:32+00:00</updated-at>
      <when type="datetime">2009-07-25T16:45:00+00:00</when>
      <average-rating nil="true"></average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-25T15:04:51+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1268</id>
      <info>Programming is hard. Consulting is hard. Keeping clients happy is hard. But they needn't be impossible. Agile development sprung up in the mid-nineties specifically to combat common software development failures like scope creep, client communication and buggy code. There's no one silver bullet to these approaches, but I'll show how a truly agile approach teaches a means to an end, a discipline and as a set of practices and attitudes will lead to happy, productive and profitable development all round.</info>
      <location></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url></slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url></talk-url>
      <title>Agile Happiness</title>
      <updated-at type="datetime">2009-07-25T15:04:51+00:00</updated-at>
      <when type="datetime">2009-07-25T16:45:00+00:00</when>
      <average-rating type="decimal">4.28</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-25T21:40:17+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1272</id>
      <info>Dead simple JavaScript Unit Tests in Rails with Blue Ridge and Screw.Unit Rails was the first place many of us learnt about unit testing, and then learnt TDD/BDD. Yet everyday Rails developers use JavaScript without writing any unit tests. This is sad.

In the past, perhaps you didn't know how to get started? Didn't know what files were needed? How to write tests? How to emulate user actions?

Not any more. The Rails plugin blue-ridge bundles one of the best JS testing frameworks Screw.Unit, with simple conventions, getting-started generators, and even a headless &quot;rake test:javascripts&quot; task for your continuous integration process.

After this session, you'll never write another line of JavaScript without first writing a test. Or the pagan gods of client-side scripting will slap you. </info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url></slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url></talk-url>
      <title>Dead simple JavaScript Unit Tests in Rails with Blue Ridge and Screw.Unit</title>
      <updated-at type="datetime">2009-07-25T21:40:17+00:00</updated-at>
      <when type="datetime">2009-07-25T21:00:00+00:00</when>
      <average-rating type="decimal">4.52</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-25T21:42:42+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1273</id>
      <info>Web-based APIs abound and give you easy access to your data.

Instead of fighting with browser implementations, write your next administrative or client-side app for the desktop with MacRuby! You get access to native widgets, graphical layout tools, and powerful APIs. Consuming XML or JSON web services is a breeze. Transparent interaction between Objective-C and Ruby source files make integration of existing code possible.

If you're familiar with Ruby or want a better way to write web-connected desktop Mac OS X apps, come learn how to get started! </info>
      <location nil="true"></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url></slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url></talk-url>
      <title>Bringing the Web to Your Desktop with MacRuby</title>
      <updated-at type="datetime">2009-07-25T21:42:42+00:00</updated-at>
      <when type="datetime">2009-07-25T21:00:00+00:00</when>
      <average-rating type="decimal">3.57</average-rating>
    </talk>
    <talk>
      <created-at type="datetime">2009-07-25T21:49:32+00:00</created-at>
      <event-id type="integer">143</event-id>
      <id type="integer">1274</id>
      <info>Encouragement and suggestions for how to use web/software development skills to help others - whether they be fellow developers, those in your local community, or those in challenging situations in developing nations.</info>
      <location></location>
      <series-id type="integer" nil="true"></series-id>
      <slides-url>http://www.slideshare.net/freelancing_god/from-the-keyboard-to-the-community-rails-underground</slides-url>
      <slideshare-key nil="true"></slideshare-key>
      <talk-url></talk-url>
      <title>From the Keyboard to the Community</title>
      <updated-at type="datetime">2009-07-27T13:51:29+00:00</updated-at>
      <when type="datetime">2009-07-25T21:00:00+00:00</when>
      <average-rating type="decimal">3.9</average-rating>
    </talk>
  </talks>
</event>
