Brandon Keepers, Mark Van Holstyn, Zach Dennis, and Craig Demyanovich have been working on RubyConf*MI, a regional Ruby conference in Michigan for a while now. Now that they’ve announced it publicly (and opened up the registration — only $20 for a full day), I wanted to talk to them about what it’s like to set up a conference.
I think regional RubyConfs are going to be a big part of the Ruby community. So getting some pioneers’ takes on how to run one should be helpful to everyone who follows.
Update: I’ve posted retrospective interview with the RubyConf*MI team over on my blog.
How did you find your way to Ruby?
Mark: Last summer, while working at Market Technologies Inc., we started working on a web based reporting application. Initially, we looked into using Hibernate to create it because Java was our main development language at the time, and it also needed to interact with a desktop java client. After examining Hibernate and other alternatives, my co-worker decided to go with Ruby on Rails. I spent the next few weeks learning Ruby and Rails together. Previously, my only experience with scripting languages was PHP, which I really liked. I was resistant to Ruby at first, however after using it for the whole summer, I committed my life to it. I no longer use PHP, and my interactions with Java have been greatly reduced ever since.
Brandon: I became interested in Ruby in early 2005 when I first started to hear the Rails buzz. I ignored it for a while because I didn’t want to be one of those that drank the kool-aid, and I was too busy being verbose with Java. I looked through a few of the Ruby books at the book store, but was turned off by the syntax. Not long after, I tried to modify the python script that I was using to generate RSS from subversion commits, but couldn’t get it to do what I wanted. So I decided to give Ruby a chance, and rewrote the 2000 line python script in 25 lines of Ruby in an evening–an insanely short amount of time considering I had to learn the language and wrap my mind around this “blocks” concept. I started to use it more and more as a replacement for shell scripting and various maintenance tasks. I loved it.
Craig : Like so many others, my path to Ruby can be traced back to the Pragmatic Programmers, Andy Hunt and Dave Thomas. Martin Fowler deserves some credit, too. I found their work at about the same time. These guys were transforming the way that I thought about and wrote software. One day I found some blurb somewhere from one of them about this cool little OO scripting language called Ruby. More and more, they were writing how productive and *fun* it was. Although I wasn’t ready for Ruby then, I kept watch. About a year ago, with renewed interest (in no small part due to Rails), I searched for a local Ruby user group, and I found one! Then there was an opportunity to use Ruby for some administrivia on a .NET project! Then my user group was talking about a Michigan Ruby Conference! Then I found myself working for some time with the people who were creating RSpec! Then I was attending RailsConf! Then…! Well, whatever is next, Ruby will be a part of it somehow.
Zach: A few years back I was reading “The Pragmatic Programmer” book by Dave Thomas and Andy Hunt. At that same time I was learning Perl because a coworker was really into it. Inside one of the flap’s of the book was the first edition of “Programming Ruby”. I ordered it, and when I got it I gave Ruby/Perl a 30 day comparison. After the 30 days I gave up on learning Perl and went straight for Ruby. I met Dave and Andy at OSCon 2006, and well, “Thanks again Dave and Andy!”.
Okay, you guys are organizing the Michigan Ruby Conference. What’s involved in running a conference?
Brandon: A lot more than one would think! None of us have ever done this before, so we’re sort of winging it. Most of us have been to conferences, and know what a good conference looks like. But until you actually run one, you don’t realize how many little details are involved. Like Craig said, it comes to a point where you just have to start making decisions about what you can do and what you can’t.
Craig: Even if you’ve attended many conferences, the answer is still the same: it’s more than you think it will be. It seems to me that the more that we accomplish in planning this conference, the more ideas we generate for what we can do and how we can do it. In the end, though, we must choose which ideas to implement and which ones to set aside. As much as we can, we choose those that will enrich the experience for the attendees. Sometimes, however, we must choose those that will allow us to finish the planning for the conference and actually execute it. We only hope that we are able to choose enough of the experience-enriching ideas that people will want to attend the next conference.
Mark:There have been quite a few things I have done so far. My first task was checking out the room which Calvin College donated. There were a number of requirements which the room had to meet for the conference, so it was important to take a look at the room ahead of time to be sure it would be sufficient. I also took on the responsibility of arranging for the technical details, such as projectors, presentation computers, video cameras, microphones, etc which we would need during the presentations.
There have been many other decisions to make, such as “What time should we start/end?” and “How long should each speaker have to present?” Many of the questions could be answered in a number of different ways, so we had to weigh the benefits and drawbacks of each and make decisions as a group. One specific question I looked in to was “What should we do for lunch?” We had the thought of providing lunch for all attendees, or just letting them loose with a map of nearby restaurants. In the end, I arranged for a lunch, donated by the Adobe In & Out, to be served at Calvin College.
Zach: I think Craig hit the overall process for running a conference perfectly. So I’ll just emphasis on “People” and on “Basecamp”.
You need people who want the vision for the conference to succeed. I think Ruby itself brings those types of people together. Finding those people for this conference was easy. At a meeting the topic was brought up and when we asked who was in favor and interested, everybody say “aye”.
On a planning note we used Basecamp to organize the event. It has worked great since our conference organizers all live in different cities. Without Basecamp I think one of two things would happen. 1) Our organizers would be a lot poorer due to gas pricers and having to drive so much or 2) there would be chaos and frustration in planning the conference. Both of which we’ve been able to avoid!
How will you measure the success of your conference?
Craig: People will complain that there wasn’t enough time to talk between presentations, and they’ll want to stay afterward to talk and code even though they need to get on the road if they want to be home at a decent time.
Brandon: The mission of the Michigan Ruby Users Group is to promote the adoption and use of Ruby. If we can attract those that haven’t had the opportunity to work with Ruby, and encourage them to try to incorporate it into their day jobs, then I think the conference will have been successful. How will we measure that? I don’t know, but I think we’ll have a sense of it based on the feedback that we get. Another indicator of success is what the response will be if (when) we try to have this conference next year.
Zach: With this being our first year I don’t think we can set our bar too high. I agree with Craig and Brandon’s answers. Although I don’t want people to complain, complaints that indicate an interest in interaction with people at the conference whether it’s speakers or other attendees would be a good place to start measuring success. This reminds me, I should start getting my speaker and conference evaluation forms ready for print…
Mark: I will look at how much interest was generated by the conference, both in terms of attendance and any talk I hear during and after the conference. Since I attend Calvin College, I think a big part of the way I will gauge the success will be based on what I hear from my professors and peers at the start of the next school semester.
RubyCentral is now running a grant program for regional conferences. If someone wants to run a regional conference, how should he or she get started?
Mark: A conference is far too complex for one or two people to organize and run. The only way to get a large conference off the ground is to get people involved. For a while this conference was just an idea. We had talked about it a couple of times, but nothing really started happening until we finally got together, discussed what (specifically) needed to be done and handed out tasks. Beyond that, I think frequent (weekly, at least bi-weekly) gatherings of the organizers is essential so that everyone knows what has gotten done and what there is left to do. This helps every to stay on track, as they have more accountability to the other group members.
Brandon: From our experience, not surprisingly, the two most difficult constraints have been time and money. We had plenty of great ideas, but we just didn’t have the resources to do some of them. My advice for someone wanting to organize a conference is to start making todo lists and assign them (Basecamp is great for this). Sponsorship is a huge, so the sooner your can work out some of the details and create marketing materials, the sooner you can start soliciting sponsors.
Zach:Get people involved, obtain non-profit status and lead by example.
Spread the word. The more people who are interested in organizing the conference, the lighter the workload will be for everyone involved. This also helps keep the motivation up when things don’t seem to be going as smoothly as you’d wish. Organizing a conference isn’t like writing ruby code, there isn’t much elegance to it! Once you get a group of organizers together plan out the objectives, prioritize them and have people choose which ones they are willing to do.
Also, you want to get non-profit status set up sooner rather then later or find a non-profit organization who you can use to front your event. Most companies will not consider donating to your conference if you are not an official non-profit group. I believe this is related to tax-break and accounting reasons. The non-profit status involves two primary steps, becoming a non-profit organization within your state and then becoming official as a 501(c) (or another official non-profit) with the federal government and IRS. If you go through this route try to find a lawyer/accountant who will donate their time in helping you setup, or look for a sponsor to help reduce those costs.
Lastly, lead by example. Not all of the tasks are the fun tasks. Be the first one to take the non-fun tasks and let other people do the more fun ones.
Craig: Attend a conference. It doesn’t have to be a Ruby conference; any well-known, respectable one will do. Then, find as many people as you can who are as passionate as you are to host a regional conference. Finally, make that first plan, complete that first task, update your plan and go again.
This grant program from RubyCentral will be such a big help. I don’t know if they offer only money or if they also offer advice based on all of their successful conferences, but either would be most welcome, and both would be invaluable!
What will people see at the Michigan RubyConf?
Craig: People sharing their knowledge of and passion for Ruby and Rails. It’s that simple.
Mark: I think people will get to see many things, from some of the more basic concepts necessary for Ruby, to some highly advanced features which can be used to increase productivity. Hopefully, everyone will be able to learn something new, meet new contacts in the Ruby world, and be able to share their knowledge with others.
Brandon: There should be a good range of topics offering something for everyone from Ruby newbies to expert Rubyists. It looks like testing will be the most popular topic.
Zach: They’ll see presentations that range from testing to rails to ruby’s standard library. They will see a group of individuals who are passionate about writing software and interested to learn new tools and methods in which they can write better software. And they’ll see a nice Calvin College campus on the way in to the conference.
What are your 5 favorite libraries/frameworks for Ruby (whether in the standard library, or off the ‘Net)?
Craig: In no particular order, they are: Rails, ActiveRecord, RAKE, RSpec, Test::Unit.
Mark:
- libxml - Very fast XML library with a nice API. I have made a couple contributions to it, and plan to contribute more in the future.
- NetSSH/SFTP - Great for automating remote tasks.
- FasterCSV - Makes parsing files a breeze
- Rails, Active*, Action*
Brandon: Rails, Mongrel, Capistrano, Active Merchant, collections (Array, Hash, Enumerable, etc),
Zach: ActiveRecord, Net::SSH, ruby-libxml, Oniguruma, ActiveRecord::Extensions (ok i am writing this, but it is my favorite 6th man!)
What’s next for Ruby?
Craig: I’m not sure. For some, lack of Unicode support is a barrier to using Ruby. I hope that we see such barriers begin to disappear. I’m looking forward to learning more about this from Tim Bray at RubyConf in Oct.
Mark: I am really hoping for some big advances in speed. Though Ruby is plenty fast for most tasks, it would be really nice if some speed advances could be made for things with need to run at a large scale.
Brandon: It seems that Ruby is trying to figure out where it fits into the “enterprise” world (and if it really wants to be there). If it’s not already a viable solution for most enterprises, Unicode support and DRb, among others, will help remove any technical barriers. Now it’s just a matter of overcoming the reputation of being a scripting language.
Zach: Ruby is making it’s way into the enterprise in terms of exposure, but it’s becoming a better and more complete technology as it moves closer to Ruby 2.0. Having a Ruby VM with comparable or faster benchmarks then Java’s VM or the .NET interpretor is something to really look forward to. I think the ruby community is really going to blossom as well. I’m estimating that we’ll have twice the number of Ruby Users Group this time in 2007. I am really excited to see all of this come together!
What’s next for Rails?
Craig: I hope that the community answers the challenge to build plugins and/or provide patches that make Rails the right tool for even more situations than it is now. A good example of this already happening is Dr. Nic’s work on composite keys.
Mark: Again, I would like to see rails get some work done in the performance area. It would also be nice to get a nice collection of plugins and engines which can be used to add common functionality to applications easily. This will provide increased productivity for all rails developers.
Brandon: As always, there are a lot of exciting things happening with Rails right now. With the recent addition of simply restful and Active Resource to edge-rails, I’m looking forward to Rails doing for web services what it does for web development in general.
Like Craig, I’m looking forward to what the community will do with plugins. The plugin architecture is good enough in its current form, but it could be a lot better. It is long overdue for an overhaul. There are several efforts underway to add dependency resolution and other metadata.
Zach: I am very excited about where plugins are headed as well. The rails core team is always coming out with something one step head of any other web framework, and I can’t even anticipate what they’re planning for next.
I think the Rails community will start donating a lot more to increase performance and flexibility of Rails and the different subcomponents that make up Rails. Stefan Kaes is working on optimizing Rails performance, and I am working on enhancing and extending ActiveRecord to support more features.
On the flip side of the user community I think the corporate world will start embracing Rails a lot more as well.
What’s next for you?
Craig: I need to hone my Ruby and Rails skills. I have some freelance work lined up for the summer to do just that.
Mark: This next year I will be finishing up my senior at Calvin College as well as continue my work at Market Technologies, Inc. Early next summer I will also be getting married!
Brandon: We’ve been developing exclusively in Rails for the past 6-8 months at Collective Idea, and we’re working on a lot of exciting projects. In addition to our client work, we’re working on a couple hosted applications, one of which — eventable.com — we’re using for the conference registration. We’re looking forward to what we’ll be able to do with Rails and ways that we can contribute back to the great community.
Zach: To continue writing better software through the use of Ruby, Rails and related technologies. I also plan on writing more articles in relation to small company culture change on my blog which I started in May of this year and I will be releasing more features to my ActiveRecord::Extensions plugin.
On the non-technical side of things I am very excited to become an uncle later this month to my first niece Olivia Erin, and I am looking forward to spoiling her for the next 18 years of her life.
Craig Demyanovich practices his craft at the Bahá’í National Center, where he’s a member of an Agile team. He’s been an active member of the Michigan Ruby Users Group almost since its inception, and he now sits on its board. A lover of hockey since the age of 5, he still plays year-round. He lives in west Michigan with his wife and daughter.
Mark Van Holstyn, a senior at Calvin College, is studying for his bachelors degree in Computer Science. He is currently employed at Market Technologies Inc. as a software engineer, where he uses ruby and rails on a daily basis. Mark also sits on the board of the Michigan Ruby Users Group.
Brandon Keepers is V.P. of Collective Idea — a cutting-edge web application development company that develops usable and accessible web applications in Ruby on Rails — and an active member in the Michigan Ruby Users Group.
Zach Dennis, has been writing in Ruby for almost four years, and has been developing with Rails since early 2005. He is the founder and president of the Michigan Ruby Users Group, and the Director of IS at Market Technologies Inc. Zach has contributed in the development of RDT and sits on the advisory board of Ruby Code & Style


From 2000 lines of python to 25 lines of Ruby in one evening? No offense, but that sounds waaaay too good to be true. Did he switch from using his own code to using a prewritten module or something?
Reedo,
Honestly, it's the truth. I was using SubveRSSed.py, which now at version 1.1, has removed "full RSS feed support" and is only 424 lines. But if I remember right, 1.0 was nearly 2000 lines. I couldn't get it to do what I wanted it to, so I wrote my own in Ruby. My inital version was 25 lines, and nothing fancy. Shortly after I modified it a little to move some of the hard-coded paramters into variables so I could reuse it, so its about 50 lines now, but still better than 2000, or even 424. The only external library I'm using is Ruby's built-in RSS library. See for yourself. I haven't touched it since I modified it back in mid-2005, so it could probably be cleaned up event more.
To quoth Vader...impressive...most impressive. Thank you for sharing. (Although even now I wonder how the two would compare if, only speaking hypothetically, the python version had used 'svnlook' and a full-featured rss module).
Ruby is based on Perl. Following Perl's direction, it has the philosophy "There are more than one way to do it". So many modules and functions are made for helping to reduce code. That makes perl and ruby good.
I wanted to learn some Python. But when I read "There is only one good way to do it", I quit learning it immediately.
Brandon,
I'm the author of that awful piece of code named SubveRSSed, i've seen your Ruby equivalent and yes, it's much simpler mainly given two facts:
- ruby comes with a RSS library
- you directly use svnlook and i preferred developing a cross-platform helper instead of that
And finally:
$ svn co -r 1 https://svn.pythonfr.org/full/pythonfr/utils/subversion/
$ wc -l subversion/subverssed.py
187 subverssed.py
I don't know where you've seen those 2000 lines ;) Anyway i still need to learn Ruby, i promised that to myself sometime ago but never took the time, i'm so happy with Python :)
Another great interview Pat. Keep it up.
- Dan
Phil,
I didn't mean to bash on SubveRSSed. It does a great job for what it is. I used it in production for several months before I decided to come up with something custom. The point was to show just how easy Ruby makes it to "hack" (term used loosely, because even though my script is a hack, it's a clean, maintainable hack) something together.