James Edward Gray II – LittleBIGRuby

LittleBIGPlanet is kind of an open source game creation engine for the PlayStation 3. There are two very important things we can learn from it:

  • Creative problem solving
  • Code reading

Those are some of the strongest weapons in the programmer’s arsenal and we all need to make sure we are employing them regularly. I’ll prime the pump by taking you on a tour of some of the most creative LittleBIGPlanet levels–err, Ruby projects–out there. Let’s see how the pros build servers, communicate between processes, process data, optimize code, and more. This turns out to be a double-win as you will become more familiar with other projects you might be able to make use of while you are learning handy techniques to use in your own creations. Jolly great, eh?

A PlayStation 3 is optional for attendees of this talk.

James Edward Gray II use to be a Java programmer without equal. There were poems and songs about the code he wrote in those days. Having conquered that world, he left and came to Ruby. Unfortunately, his Ruby contributions are much closer to the efforts of 1,000 monkeys with keyboards. The Ruby community would love to find a way to get rid of him, but he just won’t take a hint. In order to keep the focus off of his numerous shortcomings, James pokes fun at the code of others (RubyQuiz), copies instruction manuals written by smarter people (TextMate: Power Editing for the Mac), and writes parsers for obsolete formats no one still uses (FasterCSV). He has also been known to barge into Ruby conferences and monopolize time just to tell attendees about what TV shows he has been watching and what games he has been playing.

Jim Weirich – The Building Blocks of Modularity

Many words of programming wisdom have been written to promote the idea of low coupling between modules. “Prefer delegation over inheritance”, “The Law of Demeter” 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 “connascence” how it applies to creating modular Ruby programs.

Jim Weirich is the Chief Scientist for EdgeCase LLC, a Rails development firm located in Columbus Ohio. Jim has over twenty-five years of experience in software development. He has worked with real-time data systems for testing jet engines, networking software for information systems, and image processing software for the financial industry. Jim is active in the Ruby community and has contributed to several Ruby projects, including the Rake build system and the RubyGems package software.

Jeremy McAnally – Jive Talkin’: DSL Design and Construction

This is a talk on DSL purpose, design, and construction. There’s a lot of FUD for and against DSL’s, and hopefully this presentation will cut through a lot of the B.S. and present the costs and benefits in a straightforward and intellectually honest manner with a pinch of sarcastic humor and a dash of LOLCATS. It’ll kick off with a discussion of what a DSL is and isn’t, the distinction between internal and external DSL’s, and what benefits these little languages confer to the users. Next, I’ll take a few common DSL’s from the Ruby world and discuss how they work, why they work so well for what they do, and if any adjustments could be made to their syntax or implementation that would improve their effectiveness.

Jeremy McAnally tweets at @jeremymcanally and works at @entp.

Jeremy Evans – Sequel

Sequel is the database toolkit for ruby. This session will discuss the philosophy, design, implementation, and use of Sequel, as well as its history, current status, and future directions. It will show how to use core Sequel via datasets to manipulate sets of objects, as well as Sequel models to manipulate individual objects. It will discuss how to use Sequel’s standard pagination, caching, and migrations, as well as the methods that Sequel adds to ruby’s core classes. It will also cover advanced Sequel usage such as eager loading custom associations, prepared statements, stored procedures, and master/slave and sharding database configurations.

Jeremy Evans has been the maintainer of Sequel since March of 2008, and has been programming in ruby since early 2005. He has developed numerous ruby libraries and programs such as ThirdBase (a replacement for the standard ruby Date/DateTime classes), Scaffolding Extensions (multi-web framework, multi JS-library, multi-ORM database administrative front end), and ruby-style (a clustering and availability program). Jeremy has contributed to numerous open source projects, such as DC++, BitTorrent, Rack, Ruby on Rails, and Sinatra. Jeremy is also a developer of Aqualung, an open source audio player written in C. He works in Sacramento for a small government agency.

James Britt – Wii Ruby: All work and no play just won’t do.

The presentation will explain how to control Ruby applications using the Nintendo Wii game controllers. The Wii uses infrared cameras and acceleration detectors to send positional information over Bluetooth.

Applications built with JRuby can use Java libraries for reading Wii controller data, allowing Rubyists to use the Wii to play games, make music, even help the physically challenged.

The presentation will include demonstrations and explanations of Ruby libraries written to make Ruby + Wii application development as seamless as possible.

James Britt lives and works in the Sonoran Desert, happily hacking Ruby desktop applications as co-owner of Happy Camper Studios.

He has presented at various Ruby conferences in the US and Europe, written numerous technical articles for publications such as Dr. Dobbs and Linux Journal, and wrote a good chunk of the Web development section in Hal Fulton’s book, The Ruby Way, 2nd ed.

He likes making stuff.

Adam Blum – Rhodes: The Open Source Ruby Framework for Building Mobile Applications

The Rhodes framework is a platform for building locally executing, device-optimized mobile applications for all major smartphone devices. These applications are optimized for interacting with transactional enterprise application backends. It is also designed to work with synced local using the other “RhoSync”. It is initially available for iPhone, Windows Mobile and Research in Motion (Blackberry) smartphones. Support for Android and Symbian is planned. Rhodes takes much of its inspiration from web-oriented MVC style frameworks such as Ruby on Rails. However it has several simplifications and optimizations for the mobile scenario. For more information go to http://www.rhomobile.com/ or go to the Rhomobile Github repository at http://github.com/rhomobile

Adam is a longtime VP of Engineering/CTO of several successful startups. He is now CEO of Rhomobile, which makes open source tools for developing mobile applications. He is also an adjunct professor at Carnegie Mellon University and an adviser to several other software companies.

Jeremy Hinegardner – FFI

MRI, JRuby, Rubinius and other ruby implementations. What is an extension developer to do? One for each? Enter Foreign Function Invocation. Rubinius and JRuby ship with a version of libffi, and the ‘ffi’ rubygem for MRI. Now we, as extension developers, can write an extension once, and have it run on multiple ruby engines.

We will look at differences between building a tradition MRI ruby extension, and building an extension targeting FFI. We will look at the development effort and performance differences between traditional and FFI extensions, and what, if any compatibility issues there are between ruby engines around FFI.

Jeremy Hinegardner lives in Boulder, CO and has been programming Ruby since 2001. He writes weird corner case gems such as crate, heel, amalgalite, hitimes and a few others. Jeremy also contributes to the Fedora/EPEL community by packaging nginx, HAProxy, beanstalkd and a few other applications.

He works for Collective Intellect writing Ruby applications converting social media data into market intelligence, and in his copious free time plays at being a nature photographer, tweets @copiousfreetime, and especially enjoys being one of 3 Jeremy’s speaking at Mountain West.

Ben Mabey – Outside-In Development with Cucumber

Cucumber is a BDD tool that aids in outside-in development by executing plain-text features/stories as automated acceptance tests. Written in conjunction with the stakeholder, these Cucumber “features” clearly articulate business value and also serve as a practical guide throughout the development process: by explicitly outlining the expected outcomes of various scenarios developers know both where to begin and when they are finished. I will present the basic usage of Cucumber, primarily in the context of web applications, which will include a survey of the common tools used for in-memory and in-browser testing. Common questions and pitfalls that arise will also be discussed.

Ben has been working with Ruby professionally since 2006 and is currently a Senior Software Engineer at Alliance Health Networks in Salt Lake City. He is an active member of the Utah Ruby Users Group and the Cucumber and RSpec communities. The majority of Ben’s open source efforts are directed toward these communities in the form of patches, auxiliary libraries and tools, and helping out on the mailing lists and IRC channels (as mabes). He also has a technical blog where you can see an occasional post about BDD.

Kirk Haines – Vertebra

Vertebra facilitates fault-tolerant operations among autonomous agents. It addresses the challenges posed by writing distributed, performant applications at cloud scale. Vertebra is implemented using both Ruby and Erlang. This talk will give an overview of Vertebra, and then delve into the challenges that have been faced on the Ruby side of the project, and the solutions we’ve implemented to solve them.

Kirk has been using Ruby professionally for almost seven years, and did Perl/Java/C/unix sysadmin work professionally for seven years before that. He maintains/uses Swiftiply, Analogger, IOWA, and Kansas, and now works for Engine Yard as a Ruby developer.

Brian Marick – Test-driving GUIs (with RubyCocoa)

Test-driven design is probably more popular in the Ruby community than in other language communities. Nevertheless, test-driven design of graphical user interfaces is still seen as something of a black art.

In this talk, I’ll demonstrate how to test-drive a Mac GUI, using either RubyCocoa or MacRuby. I’ll concentrate on opening a File Chooser, then move to drag-and-drop (if there’s time). Along the way, you’ll also see Shoulda, Assert{2.0}, and some hackery on top of FlexMock.

Although the Mac’s GUI framework is probably friendlier to test-driven design than most, the principles should be broadly applicable.

Brian Marick was a programmer, tester, and team lead in the 80’s, a testing consultant in the 90’s, and is mostly an Agile consultant this decade. He was one of the authors of the “Manifesto for Agile Software Development” and is the author of three books (The Craft of Software Testing, Everyday Scripting with Ruby, and the forthcoming RubyCocoa). He learned Ruby in 2001 after he told two people on a shuttle bus that he was kind of liking Python. They turned out to be Andy Hunt and Dave Thomas, and they would not permit him to leave the bus until he agreed to purchase the first edition of the Pickaxe book.

Alan Whitaker – La Dolce Vita Rubyista

A talk interspersed with film about overcoming resistance, (re)discovering your passions, sustainable high performance, and enjoying your craft (Ruby and otherwise). Featuring clips from the feature that won the award for best foreign language film at the 2009 MountainWest RubyConf film festival.

Alan is the co-founder and CTO at Lead Media Partners in the Salt Lake area. A couple of years ago he left a role in big business to practice Ruby and entrepreneurialism.

Jon Crosby – In a World of Middleware, Who Needs Monolithic Applications?

With Rack emerging as the standard for composing web applications and services, most recently with Rails adoption, an architectural shift is taking place. Learn how to create next generation web services by reusing existing Rack middleware and supplementing with your own components and micro-frameworks like Sinatra.

Jon Crosby is an independent San Francisco bay area developer specializing in Ruby, JavaScript, Objective-C, and Open Web technologies. Jon is the author of CloudKit, an Open Web JSON Appliance and most recently helped Songbird deliver their suite of Rails and Sinatra applications in support of their 1.0 launch.

Philippe Hanrigou – What The Ruby Craftsman Can Learn From The Smalltalk Master

This session will highlight some of the most fundamental and timeless best practices described in Kent Beck’s book “SmallTalk Best Practice Patterns” in the context of Ruby development.

The Ruby community has fostered a great pioneering spirit at its core. Rubyists eagerly investigate new tools, approaches and programming techniques to unleash Ruby’s full power and expressiveness.

Sometimes however, this pioneering spirit often comes at the expense of learning from previous collective knowledge in the developer community. We do not have to rediscover all classic edge wisdom on our own. There is much to learn from best practices documented by the Smalltalk community which had a very similar dynamic to our own, and which attracted the best programmers of their generation:

“I always knew that one day Smalltalk would replace Java. I just didn’t know it would be called Ruby.” – Kent Beck

Philippe Hanrigou has over ten years of experience developing enterprise software and web applications. As a ThoughtWorks consultant, he focuses on designing enterprise software — understanding what makes a good design and implementing practices that encourage it. For the last 3 years he has enthusiastically embraced Ruby and used it to deliver large enterprise systems.

Philippe continually seeks ways to improve the state of the software craft and has found agile methodologies to be especially efficient and rewarding for developing enterprise software. He spends much of his time sharpening his expertise in this area and advocating agile methodologies.

Philippe is the author of Troubleshooting Ruby Processes, an Addison-Wesley Ruby Professional Series shortcut, that introduces key system diagnostic tools in the context of Ruby development. Philippe is also the principal developer and author of Selenium Grid, a tool that transparently distribute your web testing infrastructure so that you can run Selenium tests in parallel.

Adam Dunford & Jason Edwards – Improving the Usability of Your Ruby on Rails Applications

This session will explain the importance of usability and teach essential interface design principles for better user experiences on the web. The session will then dive into how to apply these principles in Ruby on Rails code, using a simple rails app to progressively add interface design improvements to enhance the usability.

Adam Dunford is a freelance interaction designer and information architect whose past and present clientele include DCEdental, Microsoft, Primary Intelligence, and the states of California, Utah, and Vermont. He can be found at http://www.steepleashton.com/

Jason Edwards is a software developer for payment gateway iTransact and leads their Ruby on Rails development. He formerly worked for Utah Interactive, developing Java enterprise applications for state agencies and departments. He can be found at http://www.jtanium.com/

David Brady – TourBus

TourBus is an app that does web testing on real-world servers. It combines the flexibility and expressiveness of a functional web test suite, the statefulness and intelligence of a regression test suite, and the concurrency of a load/stress/bench suite. In short, it can test your web application from end to end, and it can do it 100 times at once concurrently. Imagine if someone harnessed the power of a DDoS botnet for good.

Daniel Philpott – Herding Tigers – Software Development and the Art of War

This is a presentation on how an Agile team works in the real world. The composition and function of a Tiger Team is described. Daily activities, roles of QA, Product, Developer, Manager, and other needed disciplines for a project are described as well. These Tiger teams function as very high speed “Special Forces” groups, and produce an enormous amount of high quality product.

Daniel Philpott is a 20 plus year veteran of the software industry. Daniel has built and managed systems for Citibank, Dell, Ticketmaster, Quest Diagnostics, US Military and other organizations. Daniel is currently serving as an architect for AT&T Interactive, and is building the Tiger Team program for the company.

Paul Sadauskas – Writing Adapters for DataMapper

Some might think of DataMapper as a better, faster, competitor to ActiveRecord. However, they would be missing on of its greatest strengths. At its core, DataMapper provides a uniform interface on top of ANY persistance layer. All thats needed is a simple adapter class that can translate the native persitance into a simple 4-method API for DataMapper to consume. This talk will cover that API, and some best-practices on implementing an adapter. We will explore the YAML Adapter, which I will be writing for the purposes of this talk.

Paul Sadauskas is a web developer, with his current passion being Ruby. He’s managed to convinced Absolute-Performance, Inc do pay him to do what he loves, and he writes web services and GUIs for their server monitoring software for them. His current open-source projects include DataMapper, Merb, and Resourceful, an easy-to-use HTTP library that exposes everything HTTP has to offer. When he’s not coding, he enjoys hiking, backpacking & camping, and drinking beer. He lives in the mountains above Boulder with his two cats, one dog, and his wonderful girlfriend. http://theamazingrando.com/blog

Jay Phillips – Adhearsion

Adhearsion is an open-source framework for developing voice-enabled applications. Everyone in the audience will get a chance to write voice-enabled applications on their laptops and call in to them using their cell phones.

Yehuda Katz – The Great Rails Refactor

The third edition of Rails will see an overhaul of the framework to merge the philosophies and features of the Merb framework into Rails. Among other things, that includes providing support for ORMs like DataMapper, Sequel (and even Hibernate!) and for JavaScript libraries like jQuery and Dojo. It will define an explicit public API for users and plugins, backed up by a test suite. It will have loads of performance enhancements, with the hope that Rails3 can be as performant as Merb is currently. Finally, Rails3 will have significantly cleaner internals, with three full-time employees hard at work to make it so.

It almost sounds like unicorns will be frolicking at the end of rainbows this summer.

In this talk, Yehuda will go deeper, explaining some of the details of the work. He will explain how Rails is becoming ORM agnostic, with code samples of work done so far. He will show some of the more significant performance enhancements, and explain why they increased the performance of the framework. Finally, if time permits, he will go into some of the more interesting refactoring experiences of the transition.

Yehuda is currently employed by Engine Yard, and works full time on Rails and Merb. He is the co-author of jQuery in Action and the upcoming Merb in Action, and is a contributor to Ruby in Practice. He spends most of his time hacking on Rails and Merb, but also on other Ruby community projects, like Rubinius and Datamapper. And when the solution doesn’t yet exist, he’ll try his hand at creating one – as such, he’s also created projects like Thor and DO.rb.

Andrew Shafer – Practical Puppet: Systems Building Systems

Server Configurations are often an afterthought. Configure the server once with Rails and get to the real work, right?

But what happens when there are 2 servers? 3? 5? 8? 144? Maintaining consistency becomes more difficult over time and inconsistency can significantly hinder productivity. As applications scale, there are also the inter-system configurations as tiers need to be load balanced and monitored. How to manage all that configuration?

This presentation will introduce Puppet, provide an overview of its language and resources while demonstrating Puppet usage by building representative applications and infrastructure on EC2 with Puppet code that is free and open source.

Andrew Shafer works at Reductive Labs to make Puppet more awesome. He brings with him a background in high performance computing, computational science, embedded Linux development, data warehousing, web operations, Agile methods and masquerading as a manager.

Andrew has a Bachelor’s in Mathematics and a Master’s in Scientific Computing. He has never installed Textmate, but he can use vim just as poorly as emacs. Andrew is currently blaming Ruby for making him install SLIME.

His two sons think he is pretty cool, but they are still young.


The single-track conference is two full days for just $100. It is a terrific opportunity to rub elbows with some of the smartest Rubyists around. We have a great list of presenters with compelling presentations.

March 13-14, 2009
Salt Lake City Public Library
210 E 400 S
Salt Lake City, UT 84111
8:00 AM - 6:00 PM (both days)



MountainWest RubyConf is brought to you by MountainWest Ruby, LLC. We are committed to promoting and supporting the Ruby community.