RubyFoo proudly presents

Yukihiro "Matz" Matsumoto


1. What three things do you love and dislike about Ruby?
I love everything in my masterpiece language. Object-orientation, blocks, Meta-programming to name a few. I love Ruby too much to find things I dislike. Love is blind. I just remember compatibility issues bothered me in the past. But they are trivial.

2. How do you get yourself into flow?
The love to programming and languages drive me to work on Ruby for past 16 years.

3. Favourite text editor
Emacs. I am a natural born Emacs user

4. Name a book you read recently that you would recommend?
Beautiful Code (including chapter 29).

5. What inspires you?
Programming Languages. They includes essence of life, the universe, and everything.

Matz' presentation: Styles of Ruby programming

The real power of the language lives not only in the syntax, but the community, culture, and styles of programming, it brings.  In 16 years of history, Ruby has been grown so much.  At the beginning, it was a mutant hybrid of Perl, C, Lisp and Smalltalk.  Now it is establishing its own culture and styles.  In this talk, the creator of the language reviews the history of evolution of the Ruby.

  Sam Aaron


1. What three things do you love and dislike about Ruby?

  • flexible syntax, 
  • extensive use of blocks, 
  • Ruby people.  


  • the dot syntax for message sends, 
  • no standard AST, 
  • lack of explicit named parameters for methods.

2. How do you get yourself into flow?
Putting on a pair of closed-back headphones emitting esoteric electronic music.

3. Favourite text editor

4. Name a book you read recently that you would recommend?
Notes on the Synthesis of Form by Christopher Alexander. It was written in the 60s yet is profoundly relevant to many aspects of our current development practices.

5. What inspires you?
I'm inspired to improve our ability to communicate, providing people with greater freedom to express themselves in order to collaborate and share their ideas together.

Sams presentation: Notes on the Synthesis of Ruby Form

Communication is a key aspect of software development; it drives the conception, design, implementation and evaluation of the software we create. Is it possible that learning to more effectively communicate can enhance our ability to implement more relevant and maintainable software?

In this talk we will explore methods and strategies to combine Ruby's flexible syntax and powerful features with linguistic concepts such as abstractions and analogies. In doing so we shall explore the importance of the more natural communication of intention and design whilst enjoying how much programming with Ruby can help us to achieve these goals.

Aslak Hellesoy

1. What three things do you love and dislike about Ruby?

a) Productivity: Less reading, typing and waiting. I (like all other programmers) spend most of the time reading code, and with Ruby there is less scrolling and mental filtering of syntax noise than some of the more mainstream languages. Not having to set up a complex build environment (that I have to wait for everytime I want to run a test) helps keep my pace.

b) Community: The Ruby community is full of people with a sense of innovation, simplicity, elegance and pragmatism that keep me busy learning new things every day. An example is the massive adoption of DSCM (Git/GitHub) - it makes collaboration so much easier. People in the Ruby community also understand the web. They get HTTP, Javascript, HTML and CSS. This is unknown to most mainstream programming language programmers.

c) Freedom: I'm allowed to take shortcuts and bend things. I believe programmers should be set free, not put in a straightjacket, and Ruby is a language of freedom.

a) Poor Windows support. I have been using OS X since 2004, but I frequently have to work in a Windows environment, and it is always a huge pain for various reasons. The situation is getting better, but I still feel uneasy whenever I use Ruby on Windows.

b) Lack of refactoring tools in editors and IDEs. This is getting better too, especially with RubyMine (and possibly other IDEs I haven't tried).

c) Adoption: I work for a consulting company, and many of the clients I work with are sceptical when we recommend Ruby. The most common questions are: "Where will we find other skilled Ruby programmers?", "Does it scale?" and "If it's so great, why don't more people us it?". The community needs to grow (and then we'll get other problems, when the fools rush in).

2. How do you get yourself into flow?

The backbone of my flow is BDD, working from the outside in, starting with a simple outcome expressed as a Cucumber scenario and code until I it passes, then repeat. I never know where I'm going and for me there is no better guidance than a failing test that tells me what to do next.

Once I get into this flow I can usually repeat the cycle a dozen times or so per hour.

Work environment is important for me in order to get into this state of mind. My favourite is to sit down with a pair and do ping pong programming, switching the keyboard for every passing test.

When I work alone I like to shut down all external communication channels. People around me don't bother me (I don't even know they are there), but I usually turn off chat programs so I can keep focused.

3. Favourite text editor

TextMate. I want to learn vim, but haven't gotten around to it yet.

4. Name a book you read recently that you would recommend?
War Trash by Ha Jin. It's a fascinating book about the Korean war. I don't read many computer books - I use the net to stay current.I do have a long geeky wishlist on Amazon though.

5. What inspires you?
People who believe in something that others don't believe in, and follow through with it to prove to others it can work.

Aslaks presentation: Do you speak my language?

We programmers use two different kinds of languages in our work. We use a natural language (English, French, Norwegian etc) to discuss and express what the software should do. This happens both through conversation and writing.

We use programming languages to translate the ideas expressed in natural language to code. Most of us use a single programming language per project, but in the past couple of years it has become more common to use several programming languages within the same project.

When Cucumber entered the scene a year ago, many teams (both programmers and non-programmers) finally got a simple way to bridge the gap between natural language and Ruby.

But what about other programming languages than Ruby? And what aboutother natural languages than English?

I will show you the basics of Cucumber with English and Ruby. Then I will show you how polyglot teams can use Spanish with Cucumber to develop a Scala application. Or a team of LOLCATS writing a Groovy application. In fact, I will show you how you can use Cucumber with almost 40 natural languages and 8 different programming languages: Ruby, Java, Groovy, Scala, Python, C#, Erlangand Haskell.

Cucumber speaks *your* language.

Ola Bini

What three things do you love and dislike about Ruby?

  • The flexible syntax
  • The simplicity of the object model
  • The community
  • All the corner cases in the syntax
  • The lack of a simple macro facility
  • The ad hoc versioning and upgrade paths

How do you get yourself into flow?
I turn on some really good music and then just focus.
Favourite text editor
Emacs. Emacs is the ONLY text editor. Really. All the other ones are implemented on top of Emacs. (This is a well kept secret)
Name a book you read recently that you would recommend?
I reread it recently, so it qualifies. This is a book all programmers should read at least thrice: Gödel, Escher, Bach - An eternal golden braid, by Douglas Hofstadter.
What inspires you?

Programming languages. Finding the beauty in a program. Finding how to express that in your chosen language.

Olas presentation: JRuby for the win!

JRuby is emerging as one of the most interesting language implementations on top of the JVM. Together with Groovy, Scala and Clojure, it is changing the way people are using and combining languages together with the Java platform.

The Ruby language is beautiful, powerful and extremely malleable. By using Ruby on top of the the JVM it is possible to create the most unusual combinations of languages, principles, paradigms and libraries.

This presentation will explore JRuby, by first looking at its place in the Ruby ecosystem and then rapidly explore the many possibilities a life on the JVM gives. JRuby can be used as an excellent platform for polyglot programming, and can take your project to the next level. But it can also be lots of fun. Doesn't that sound like winning?

Adam Wiggins


What three things do you love and dislike about Ruby Love:

* It strikes a perfect balance between succinctness and expressiveness.

* Metaprogramming.

* It's just so damn pretty.


* Backtraces doesn't show the values of method call arguments.

* Confusion over string vs. symbol hash keys. myhash['key'] != myhash[:key]

* That defined? returns a string instead of true/false. I even wish that Ruby automatically ran the return values from any method name ending in a question mark through !!, to force them to true/false.

How do you get yourself into flow?

I turn off all distractions: close the door, turn off the phone ringer, log out of chat. Then, I grab a project that ignites my passion, find the smallest conceivable iteration that would produce a measurable chunk of value, and dig in on that.

Favourite text editor

Ed. It is the Standard Text Editor.

Name a book you read recently that you would recommend?

"Future Imperfect" by David Friedman

What inspires you?

Complexity. I am inspired to destroy it. People that quietly and consistently kick ass at whatever they do. I am inspired to be like them, for what I do. Reading about the history of technology. Every piece of modern life has an innovator behind it, buried somewhere in history. These innovators challenged the status quo to make the world a better place for everyone, forever.

Adams presentation: Next-Generation Ruby Deployment with Heroku

Agile development, web standards, Ruby frameworks like Rails and Sinatra, and cloud computing are all speeding trains rushing headlong toward each other. The convergence of these things will be a massive explosion of awesome.

Heroku, the instant deployment platform for Ruby, puts all these pieces together into a way to deploy and manage your Ruby web apps. Manage your deployments using Git; scale your app up and down instantly by grabbing a slider; and fast, headache-free deployment.

In this talk we'll cover the basics of using Heroku, as well as advanced topics like using work queues for background jobs, HTTP caching, memcached, full text indexing, config vars, and streaming database transfers. Then we'll dive into how it all works behind the scenes: how Heroku uses AMQP messaging for communication between Ruby and Erlang components; how we can scale your app instantly; and how we use cloud computing (in the form of Amazon EC2) to its full advantage.