Archaeopteryx: Lambdas In Detail
Giles Bowkett – In 2008 a lot of people saw Giles Bowkett’s presentations on Archaeopteryx, his Ruby music generator. And a lot of people asked for more technical detail, especially on how Archaeopteryx uses lambdas and continuations. This presentation will focus on lambdas, because Archaeopteryx doesn’t use continuations at all, although the presentation can also look at an earlier version of Archaeopteryx which did use continuations at the time, if people want. The goal here is a Q&A with nothing but technical detail, no slides at all, and a focus on the extraordinary flexibility that lambdas give you.
Cooking with Chef – Your servers will thank you
James Golick – When you hear “sysadmin work”, do you think of ssh, vi, and shell scripts? If you do, it’s probably not the most fun sounding work. Repetitive, tedious, and error-prone are words that come to mind.
Thankfully, configuring servers is all but a solved problem thanks to Chef. The days of vi, and shell scripts are mostly over. Building complex infrastructure has never been easier.
Whether you manage a multi-datacenter cluster, or the VPS that runs your blog, you have a tremendous amount to gain from configuration management. In this talk, I’ll show you how it works.
Descent into Darkness: Understanding your system’s binary interface is the only way out
Joe Damato – The system’s binary interface exists under the candy coated Ruby world that most developers live in. If you can learn to embrace evil amazing things are possible.
This talk will cover the basics of the 64bit application binary interface showing off a Ruby threading performance patch and a memory profiler which exemplify the power you can possess with an in depth knowledge of your system’s ABI and other low level interfaces. Along the journey to darkness, we’ll cover useful concepts like virtual memory and threading until we arrive at the binary interface completing our journey into the Ninth Circle.
Documentation and the Whole Nine YARDs
Loren Segal – Dear framework and library developers: documentation is important, but there’s more to writing good documentation than spewing out a bunch of English words that resemble a method’s behavior. This talk will discuss why documentation matters, why “self-documenting code” doesn’t scale, conventions you can follow to make your API more inherently documentable, and how YARD, with its meta-data syntax, extensibility and other goodies, can help make consistent documentation easier to achieve.
Dynamic Generation of Images and Video with Ruby-Processing
Jeff Casimir – Ruby-Processing is an awesome library which wraps Processing with a JRuby interpreter and a simple Ruby syntax. Using ruby-processing your Rails app can programmatically create complex images using static images, 2D shapes, 3D with OpenGL, animation and video.
We can leverage the power of Processing and existing Java libraries from the comfort of Ruby.
In this session we’ll take a quick look at ruby-processing to understand how it works, then add dynamic image creation to a sample Rails app. We’ll discuss the potential of leveraging Processing from Rails and layout directions for further research.
Aman Gupta – EventMachine is an implementation of the Reactor pattern for Ruby, similar to Python’s Twisted. It provides event-driven I/O for MRI, YARV, Rubinius and JRuby, allowing a simple Ruby application to serve thousands of network connections concurrently.
This talk will cover the basics of the Reactor pattern and introduce the core EventMachine APIs. An emphasis will be placed on the common stumbling blocks encountered by new EventMachine users, in an attempt to bridge the gap between traditional procedural ruby code and the asynchronous coding style provided by EM. Along the way, we will cover relevant topics such as non-blocking I/O and TCP streams, and develop and benchmark some simple network applications.
How HTTP Already Solved All Your Performance Problems 10 Years Ago
Paul Sadauskas – This talk will be examples of how developers can take advantage of the advanced features of HTTP to maximize the performance and scalability of a web application. Caching is usually pretty well understood for static assets, but there’s plenty of things that can be done for dynamic pages. Managing resources in a ReST-ful way can also enhance the effectiveness of a client’s browser and caching proxies, as well as allowing for future scalabity modifications with minimal impact to users.
Hubris: The Ruby/Haskell Bridge
James Britt – According to the project site, Hubris is “a bridge between Ruby and Haskell, between love and bondage, between slothful indolence and raw, blazing speed.” Hubris allows for calling Haskell code from your Ruby programs, and JIT’ing Haskell code in-lined with your Ruby. Now you can get the speed, type safety, and power of Haskell where you want it while still using Ruby elsewhere.
I was wrong about Ruport
Gregory Brown – Ruport (Ruby Reports) was my first major open source project. In many ways, it was a success, and is still actively used today. But with 20-20 hindsight, it’s easy to find anti-patterns in a large codebase that started in the summer of 2005. I’ve learned from my mistakes in design, implementation, and project management, and I think you can, too.
I’ve combed through Ruport’s history for a good number of failure points that I was personally responsible for. With these counterexamples in hand, we’ll be able to explore better practices that were born out of bad ideas.
Managing ruby projects with rvm
Wayne E. Seguin – rvm is a command line tool which allows us to easily work with multiple ruby interpreters and sets of gems. Explore the use of rvm to manage a ruby project’s entire environment including interpreter, gems, testing, and other items.
Sarah Allen – Sarah Allen will share her experience developing mobile applications using Ruby. She will give a brief overview of today’s mobile platforms and marketplace, then she will dive into coding a native smartphone app using the Rhodes framework from Rhomobile.
The Rhodes framework enables you to quickly building native smartphone apps for major smartphones including iPhone and Android. These apps use device capabilities such as camera, geolocation and contacts. The optional RhoSync server transparently synchronizes information to these apps allowsing users to have their information available even when disconnected.
Kyle Banker – Many of us love the idea of a schema-free, document database. But when it comes to building an application, we may start to miss all those patterns familiar to us from relational databases. Here, I’ll present a dozen rules for working successfully with MongoDB. Including plenty of code examples, these rules will highlight the unique features of the database, among them atomic updates, map/reduce, and the notion of embedded documents. Having come away with a de-facto Elements of MongoDB Style (in Ruby), you’ll be prepared for many of the surprises and joys of building apps in MongoDB.
Rack for web developers
Michael J. I. Jackson – Rack is the central piece of technology in the Ruby web developer’s toolbox. If you’ve written a website in Ruby, chances are very good that you built it on top of Rack (yes, even if you were using Rails!) Learn Rack’s role in the Ruby community, how it interfaces with the various application servers and frameworks, and even how you can write an entire web application with a single lambda. A thorough understanding of Rack is vital for any Ruby web developer.
Caleb Clausen – RubyMacros is an extension which adds lisp-like macro capabilities to ruby. Macros enable a very powerful and fluid type of meta-programming by allowing you to manipulate ruby parse trees using ruby.
I will explain how to use macros and why you should want to. I’ll also show some examples of macros I’ve written.
Ruby Techniques By Example
Jeremy Evans – Many presentations focus on showing off new applications and libraries. They show you what has been accomplished, but rarely do they show you how. This presentation will take examples from production code (mainly from Sequel), showing techniques that you can use in your own code. Some of the techniques demonstrated will relate to:
- Creating more easily extensible code
- Handling class-level data within inheritance hierarchies
- Improving dynamically defined method performance safely
- Structuring DSL implementations
- Dynamically defining singleton methods
- Presenting multiple backends as one
This presentation is aimed primarily at intermediate rubyists, but others should benefit too.
A Tale of Two Codebases
Pat Maddox – Most projects reach a point where the developers are unsatisfied with huge swaths of the code but have lost the energy to do anything about it. That or after being continually traumatized by the code they become numb to it. Unfortunately this has severe consequences – the business loses their competitive advantage, developers burn out, and the good developers jump ship while the crappy ones stay and collect their paychecks. It doesn’t have to be that way though. Through the parable of the two codebases, I examine two ways of approaching working inside of a large, valuable codebase that has begun to show some signs of aging. One way results in early retirement, while the other makes you want to stab your own eyes. Most teams unwittingly choose the second.
Writing Modular Ruby Code: Lessons Learned from Rails 3
Yehuda Katz – In Rails 3, we wanted to significantly improve the framework’s modularity and clean up the way plugins expect to extend it. In order to achieve this, we leveraged the power of Ruby combined with tried and true patterns. In this talk, Yehuda will walk you through a few examples, and show how you can use the new capabilities in your own applications, libraries, or when interacting with Rails itself.
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 11-12, 2010
Salt Lake City Public Library
210 E 400 S
Salt Lake City, UT 84111
MountainWest RubyConf is brought to you by MountainWest Ruby, LLC. We are committed to promoting and supporting the Ruby community.