podcasts

S01E01: Dr. Nic Williams

03 Dec 2010

Tune in to the very first broadcast of Cloud Out Loud! Engine Yard’s own Dr. Nic Williams joins us for a lively discussion of new developments in JRuby and Rubinius, the supreme importance of Continuous Integration, and why Windows users are people, too. EY: Would you talk a little bit about your role at Engine Yard?

Dr. Nic: So, I have the distinguished role of VP of Technology. I am in charge of our open source program, which includes the \"Rubinius\":http://rubini.us/ project, which is the re-implementation of Ruby with all new ideas and technologies on how Ruby can be implemented virtually. I’m in charge of the \"JRuby\":http://jruby.org/ project which is Ruby for the JVM It is a wonderful opportunity for Java developers to be able to use Ruby, and for Ruby developers to be able to work on the JVM.

We have another open source project: \"Fog\":https://github.com/geemus/fog which we sponsor full time through \"Wes Beary\":https://github.com/geemus, which allows us to provision cloud-resources--that’s storage and compute resources on Amazon, Rackspace--as well as other cloud players that come along.

So, I’m responsible for all those, and I’m responsible for lots of other secret things, that I’m not sure I’m ready to talk about.

EY: Okay. Despite the secrecy, is there anything you can tell us about what your day-to-day work looks like?

Dr. Nic: In my day-to-day, some of the internal secret things, which I subtly alluded to, are the products themselves, AppCloud and xCloud, and the technology that goes into those products. I love writing rails apps. I make rails apps. I deploy them on AppCloud. I’ll have good experiences and I’ll have experiences that could be better. When I have the latter I go and yell at people, I say, “Could this be better, please?” I’m also working on some peripheral projects, which apply to Engine Yard and more specifically to customers: \"Continuous Integration\":https://github.com/engineyard/engineyard-hudson and \"Rails for Windows\":http://docs.engineyard.com/appcloud/tutorials/setup-environment#windows. Both of these are high priorities for Engine Yard.

EY: Why are you so passionate about Continuous Integration?

Dr. Nic: It is entirely unfair for a customer to be the person in charge of testing an app. It’s unfair to the customer and they’re not very good at it. They don’t give very good feedback, and what they’ll do, more often than not, is they just won’t use Your Thing, and they’ll walk off and use Someone Else’s Thing. And it’s great that in the Rails community, one of the things we learned was testing, we had a lot of education in writing tests first—in test-driven-development. And there’s been, to a lesser extent, education around continuously running those tests, so that in a team-scenario, you constantly know the complete codebase, all the tests work, and you have a high level of confidence that you are ready to deploy at any given moment.

Whilst we know that we want to do this, a lot of customers don’t have a setup that allows them to do this. Specifically for AppCloud and xCloud customers, it’s highly desirable that they are running their tests in an environment that’s similar to, if not exactly the same as their AppCloud or xCloud environment.

So those are some of the things we’ve been working on. There are specific technologies that we care about, but the fundamental idea is: Can we help our customers who are interested in Continuous Integration to do it, and for the ones who aren’t, twisting their arms to make them realize how important it is, so that they have a happier experience owning their application.

EY: You also mentioned Rails on Windows.

Dr. Nic: Yeah, it turns out there are some people out there using an operating system called Windows. And they are somewhat unloved historically by both the Rails and Ruby communities, and I don’t want to lay blame just on \"David Heinemeier Hansson\":http://docs.engineyard.com/appcloud/tutorials/setup-environment#windows, who wrote this very cute introduction to using Ruby and Rails which showed this text-editor called \"TextMate\":http://macromates.com/ in 2005, and all of a sudden everyone knew that you needed to own a MAC, obviously, and it sold a lot of Macs. And I know I’m one of those, and I think most developers own a Mac.

But the great, vast majority of people who are new to rails don’t know that yet. You, as a Windows developer, think, “I would like to play with this rails thing.” That’s all you know. How do you use it? How do we make that experience work, so that they don’t have to go scour the internet for little scraps and ideas? It’s little things--The Rails 3 Guide, the canonical reference for how to get started in rails, refers to the Instant Rails project as a solution for how to get started in Windows. Well, the project hasn’t been updated in three years, it bundles an old, old version of Ruby-- Ruby 1.8.6-- that doesn’t work with rails.

We love them so little, these Windows people, that there’s no system that’s known to work, there’s no easy, go-to place. But I care about them. I care about them because there are so many of them. I care about them because I used to be one of them. I feel sorry for their experience. And here at Engine Yard, it’s time for us to turn around and help the millions of Windows users who would like to \"start using Rails\":http://docs.engineyard.com/appcloud/tutorials/setup-environment#windows.

EY: What steps are you taking to make it easier for Windows users to get started with Rails?

Dr.Nic: We’re restoring the \"Instant Rails\":http://instantrails.rubyforge.org/wiki/wiki.pl?HomePage project! It’s called Rails 2011. There’s a group of us forming around this problem space. We are going to package it up, and we’re going to run the first ever Rails for Windows conference. These people are new, they need a place where they can talk to each other about what life is like on Windows and help each other fix things. So it’s really a few things. It’s Instant Rails revisited, it’s Rails 2011, and it’s conferences and meet-ups.

EY: Could you talk a little bit about Rubinius?

Dr. Nic: different people have different ideas about what \"Rubinius\":http://rubini.us/ is, based on when you first heard about it. People aren’t really expecting a lot from Rubinius. I think people were surprised that Rubinius works at all. There’s an assumption that a ruby implementation built in ruby is inherently slow. It’s actually quite the opposite—it’s self-optimizing. The way it’s been written, it can only get faster. It’s very modular. The more apps we begin to see being written on top of Rubinius the more information we can get about how to optimize those. So, the world is our oyster with Rubinius.

EY: How about JRuby?

Dr. Nic: One of the reasons I came to Engine Yard is do my part to ensure the success of Rubinius and \"JRuby\":http://jruby.org/ as the two future languages.

The thing that excites me the most about JRuby is C Extensions: the ability to load up ruby libraries that have C Extensions, into JVM, is not something that the purists would think is desirable, but it just allows so many more rails apps or ruby apps to be loaded into the JVM, without having to have Java-specific extensions.

One of the great things about Ruby is the ability to write C Extensions, to be able to map Ruby down into other libraries, and to be able to use them. Because then different things can be written in C, and they can be faster, theoretically. Sometimes, if an application’s used a library that has a C Extension, you aren’t able to use that same thing in JRuby unless it was re-implemented. So in Ruby 1.6, it’s kind of allowed for a large set of C Extensions to be loaded into JRuby. They’re not necessarily going to be fast, but they will basically work, allowing you to at least experiment and play. I personally think that’s wonderfully exciting. Both Rubinius and JRuby are implementing the \"Ruby 1.9\":http://www.ruby-lang.org/en/ syntax and feature-set, now that it’s stabilized, so I believe both will have high compliance with that plug-in.

EY: I don’t know if everyone is aware of your thriving comedy career. One of your Twitter subscribers asks, “Did you move to San Francisco because of its proximity to Hollywood in an effort to further your comedy career?

Dr. Nic: How approximate is this proximity? Hollywood is 7 hours from here, and that’s a long way to go just to do a \"five-minute comedy bit\":http://drnicwilliams.com/2009/12/03/first-5-minutes-of-stand-up-comedy/. At best I have five minutes. Now, I haven’t done any since about a year ago. It was a great, wonderful experience. It is hard. Comedy is hard. Being funny is, apparently, very difficult.

EY: This Twitter-submitted question is my favorite. When lecturing, does your tee-shirt fetchingly land on top of your belt naturally? Or is that planned?

Dr. Nic: I take a lot of pride in my appearance. In fact, if you look—just to show my commitment to consistent appearance—For the last three years I believe I’ve consistently worn a Twitter tee-shirt that I was given by \"Alex Payne\":http://al3x.net/. On the same day he gave it to me, I decided I should probably create a Twitter account.

That was at Rubyconf 2007. I believe I’ve worn that shirt at a lot of conferences. So if anyone has a comment about the way in which my shirt does or does not position itself while caressing my body, why not talk to the people who designed the Twitter tee-shirt from 2007? Obviously it’s not crafted to my physique, and that is not my fault. I did go on a diet at the start of this year, I would hope that that would help, although since Alex left Twitter I’ve decided to retire the tee-shirt from public performances.

I’m not sure if I look too good in a suit. But \"Aaron Patterson\":http://tenderlovemaking.com/ presents in a suit, \"Geoffrey Grosenbach\":http://nubyonrails.com/ presents in a suit. So we have a lot of people taking it to the suit level. I’m not sure if I’m ready.

I’m going to have to find a clown outfit or something.

Other Awesome People that Dr. Nic Mentioned

Evan Phoenix (http://blog.fallingsnow.net/) Alex Payne (http://al3x.net/) Luis Lavena (http://blog.mmediasys.com/) Charles Nutter (http://blog.headius.com/) Wesley Beary (https://github.com/geemus)