You are here: Home Blog Discover the Ruby on Rails community

CNET on Rails

November 29th, 2007


CNET Logo CNET Networks, Inc. (the "Company" or "CNET") is a global media company producing a branded Internet network, a computer product database, a print publication, and television and radio programming for both consumers and businesses.

In this interview we talk to Seth Thomas Rasmussen who works on the CHOW and Chowhound sites under the CNET Networks Entertainment and Lifestyle brand.


BACKGROUND

Q: How did you come to be working at CNET?

I started working at CNET in April of 2007. Chris Wanstrath let me know that they were looking to hire. I was looking to be hired, so it was a good setup.

Q: What is your background?

I started doing web design and development for my high school drumline. After high school I got an A.A.S. in Multimedia and Web Design. I spent my first few years at my first "real" job learning things I should have learned in school such as the importance of standards, separation of concerns and the basics of web programming. In general, I came from more of a design and interaction focus than, say, computer science.

Q: How easy was it to get Rails adopted at CNET?

I'm not sure what it was like getting Rails in the door at CNET. When I came around, CHOW and Chowhound had been online for almost a year. I'm told it was initially brought up by Mike Tatum and Tim Myrtle who had been using it for Wayfaring. Chris and PJ Hyett, now at Err Free, along with Evan Weaver, were key to getting CHOW and Chowhound off and running on Rails.

There is increasing interest in Ruby and Rails around CNET. Having some significant Java systems in place, I've talked with several people who are interested JRuby in particular.

Q: What is your work environment like?

The office space is basically one large room with half-cubes and offices located at the headquarters in San Francisco. I spend varying amounts of time there and elsewhere such as my apartment. Other than things like having that freedom of location, one awesome perk is definitely the leftovers and test samples from the food team!

I mostly work with small teams, though we do integrate with larger groups and systems with CNET. A real joy is working with such a concentration of passion and talent. I fear that reads like cliché bullshit, but I've no reason to kiss ass here, people.. it really is a fantastic group all around.

PROJECTS

Q: What kind of projects do you work on at CNET?

I work mostly on CHOW and Chowhound. I am part of the Entertainment and Lifestyle group at CNET which includes those properties as well as some others like Gamespot, TV.com and Urban Baby. CHOW and Chowhound are the only ones on Rails, though Urban Baby recently saw work begun to move elements of it over to Rails.

One of the features I've spent the most time on for CHOW so far is Places. Users can create records of places and link them in the context of Chowhound discussions. We recently launched Member Recipes wherein users can publish recipes either by entering from scratch or cloning an existing recipe and making modifications. Though they work mostly with a vendor platform and their own video production staff and tools, I've worked some with the video team and I just wanted to call them out because they are doing some really awesome stuff.

I've done some work in integrating OpenSearch on CHOW(add us in Firefox or IE7!), and hopefully we'll see some effort put into a CHOW API one of these days. Lately I've been focused on expanding our facility for running contests and challenges on the site, integrating the recently released user recipe features in particular.

There are several other features and areas of concern I deal with, but that's a decent sampling.

Q: What is your typical development process at CNET?

Product, sales, editorial and a handful of other influences produce the features that we then develop and maintain. We don't adhere to any formal practices or methodologies per se, though we take bits from here and there like most people. The Urban Baby team is trying some agile processes on their current work. Our test suites are a salad of test/unit, test/spec and rspec.

We run an edge revision of Rails and adhere to RESTful design as much as is reasonable. The applications are a mix of DIY and vendor plugins and systems. Urban Baby will see its blogs relaunched on Rails code converted from a Typo base which will eventually be integrated further with the plugins and other resources used to support CHOW and Chowhound.

I work closest with about eight other people, with handfuls scattered about the periphery. Of that initial eight, three comprise the current engineering team with a fourth working on a contract basis.

Q: What kind of infrastructure do you run your sites on?

We have a few Redhat boxes running a mongrel cluster supported by Apache and MySQL.

Q: Do you always use Rails as a preference over other languages?

Not necessarily, but the vast majority of what I develop against and maintain is Ruby and Rails.

Q: In your experience where has Rails proved to be the most challenging?

Rails can be confusing to debug before you know about things like how sometimes errors just get swallowed. I've hit a stride with my testing in Rails in recent months, and I've found that functional test coupling of controllers and views is a bit of a shame. I've yet to try Test::Rails or other alternatives other than stubbing out renders in my own tests. ActionMailer is a bit of a siren with the way it leads you on like it has "normal" Rails views, only to leave you marooned in a bit of a foggy abyss.

Q: What is the best part about using Rails?

I enjoy the higher level designs and expressions it encourages. The stuff conducive to RESTful design that is being worked in currently is also quite nice. And of course it's running on Ruby!

Enjoy the article? Digg It and help promote Rails.

Pratik Naik is a long-standing Rails contributor. He has won the Hackfest on multiple occasions.

Originally from India he currently lives and works in London and is a regular attendee to the Ruby users group in the city.

Pratik is also best known in the community for creating the popular Rails blog aggregation site Planet Ruby on Rails

Q: What is your connection to Ruby on Rails?

I started my career with Oracle India, and spent almost 2 years there working on several customer facing internal web apps using perl/mod_perl. And 2 years on perl were enough to build a love/hate relationship, so while looking at new technologies/solutions I came across ruby/rails and fell in love with it instantly. And now I've been working professionally with Rails for almost a year and half.

Q: Tell us about the sort of contribution you made during the contest.

Apart from minor ActiveRecord/ActionPack fixes and pluginizing some functionalities, my major patches were for refactoring of render methods and association callbacks.

Q: How did you first get involved contributing to the Rails source?

In the past, I had made some contributions to mod_perl project. And I first got involved contributing to rails in a very short time after starting to work on edge rails. Contributing to rails is a lot easier than people ( mainly those who are new to rails ) usually think. Everything in rails is pure ruby after all. #rails-contrib irc channel is probably the best ( and fastest ) way to get core related help and finding people to review your patch.

Q: Tell us about your development environment

Mac and big screens.

Q: Rails 2.0 and beyond - where next?

I think the next steps would be to work towards making rails thread-safe and cleaning up some fugly code. And also have rails run smoothly on next major stable ruby release in 1.9 series, as it has major performance enhancements over 1.8.x.

Q: Closing words

I've been meaning to bring back to life my first rails project - FreeOnRails, which is hibernating at the moment due to my time crunches. It's a project for providing quality free rails hosting to those in need. Interested people can join the mailing list where I'd be posting all the further updates.

Apart from that, you can usually catch me in #rails-contrib and #rubyonrails irc channels (nick : lifofifo) or lrug meets. I also try to blog regularly at http://m.onkey.org

Enjoy the article? Digg It and help promote Rails.

Juanjo Bazán heralds from Spain. He works for Cafelink focusing on usability and building a wide range of software, from web applications to scientific simulators.

In this interview find out about his experience during the August 2007 Hackfest, how he got started with Rails and where he sees it going to next.

Juanjo Bazán

Q: What is your connection to Ruby on Rails?

I tried Rails a couple of years ago when a friend told me about the buzz about Rails. I had been programming mostly in Java since 1999 and I was already used to object oriented programming, MVC frameworks and OR mappings so I found Rails and its conventions really useful and decide to learn more ruby.

Now I use ruby/rails professionally almost fulltime (still teaching Java in an IT-college in Madrid) and currently I'm involved in different projects with great people doing cool rails code in cafelink, tractis or palabea.

Q: Tell us about the sort of contribution you made during the contest.

During the contest I contributed patches and little fixes in ActionPack, ActionSupport, ActionMailer and ActiveRecord. Most of them were little improvements in utility classes, things like new methods on the time class, better xml request parsing or trying to kill some bugs in the mailer lib. Aditionally a couple of doc patches from past months were commited during the contest. With the new contribution system I also spend some time reviewing other people's patches and commenting them.

Q: How did you first get involved contributing to the Rails source?

When you are using an opensource tool often and are familiar with its code at some point contributing becomes natural. I watched a Ryan Bates' railscast about contributing and started the easy way: improving documentation. Is a good way to understand the contribution process and to learn where you can get help, like the #rails-contrib irc channel. Once you are contributing fixes probably the hardest thing is exploring the rails code structure, with the code of most of the classes being distributed in many files.

Q: Tell us about your development environment

My dev box is a 3000+ AMD booting both Ubuntu and XP. I use RadRails as coding enviroment for Rails projects, helped by other usual tools like trac, subversion, autotest, firebug, paper and pen. The plugins I use more often probably are those related with common tasks like attachmentfu, restfulauthentication (or actsas_autenthicated) or annotatemodels. Recently I'm playing with haml for the views and trying to improve my skills with rspec and the new capistrano.

Q: Rails 2.0 - What kind of features and functionality do you think we are likely to see in this release?

With a preview release already out, is nice to see not only the expected cleaning and pluginization of the 2.0 code but also some significant changes. Maybe there are not big new concepts but definitively there are some nice improvements: sexy migrations, the namespaced rest routes, caching of queries and the HTTP basic authentication module are really useful. I also like the new convention for naming views to use diferent render engines easily. Now I'm fearing the loads of deprecation warnings :)

Q: Closing words

I would like to encourage everyone to participate contributing to rails, sharing ideas and joining the great rails community. I'm part of the organization of the annual Spanish Rails Conference. It was a great success last year and it has become the major rails event of the spanish community, so if you are near Madrid next november don't miss it, I'll see you there.

Enjoy the article? Digg It and help promote Rails.

Another month another set of Hackfest winners emerge.

Cheah Chu Yeow broke into the top 10 at the last minute. All good action!

October promises to be an exciting month with a new top prize and changes to the scoring system - watch this space.

Enjoy the article? Digg It and help promote Rails.

Matthew Bass is a freelance Rails developer, Terralien crew member, Mac addict, and passionate about making top-notch software.

In this interview find out about his experience during the July 2007 Hackfest, how he got started with Rails and where he sees it going to next.

Matthew Bass

Q: What is your connection to Ruby on Rails?

I started learning about programming during an apprenticeship at Ken Auer's XP studio, RoleModel Software, in 2002. From 2003 to 2006 I worked as a Java and .NET developer at SAS Institute, the world's largest privately owned software company. I made the jump to independent consulting with Ruby on Rails in mid-2006.

Since then, I've worked with my own clients and also subcontracted for other Rails shops like Terralien and Relevance. I'm seriously enjoying my work with Rails and have no intention of stopping anytime soon. The market for Rails developers right now is wonderful. If you really want to work with Rails, don't let the excuse of "I can't find work!" be the one to stop you. It's not an issue anymore.

Q: Tell us about the sort of contribution you made during the contest.

Almost exclusively, my contributions were documentation. I added docs for existing methods that didn't have any, and clarified or expanded docs in other areas. Adding documentation is a really easy way to get started with contributing to Rails, and it's also quite valuable since the docs always need love.

Q: How did you first get involved contributing to the Rails source?

I had contributed to smaller open source projects prior to Rails, but nothing as large or well-known as Rails. Contributing just makes sense when you're using the framework so often. There is really no excuse not to since there are so many good tutorials out there about how to contribute. The toughest part for me was figuring out how the code in Rails was organized. Once I got my head around that, things got easier.

Q: Tell us about your development environment

From a hardware standpoint, I'm using an Intel Core Duo iMac with 2 GB of RAM. When I'm on the road, I develop on a Core Duo MacBook with only 1 GB of RAM. I haven't had an issue with either. To the contrary, I've been quite pleased with my Mac experience since switching last year.

I code in TextMate, use Capistrano for deployment, and work with Subversion via the command line. Lots of Rails plugins have become my friend, including acts_as_authenticated and acts_as_dropdown. More recently, and at the encouragement of my friend Nathaniel Talbott, I've begun hacking with the Camping framework, which I'd have to say is my favorite little library right now. I've also been experimenting with Jim Weirich's X10 library for the CM17A Firecracker device.

Q: Rails 2.0 - What kind of features and functionality do you think we are likely to see in this release?

I'm not sure what we'll see. I'm encouraged by DHH's desire to keep the core of Rails small, and add additional functionality through plugins and whatnot. Being in Java development for many years, I experienced firsthand how difficult it can be to wade through an API that has thousands of classes. I was glad that no super big feature was announced at RailsConf this year. I'm still trying to catch up with this whole REST thing!

One desire I have is to see libraries like RJS and Prototype really get fleshed out until they're solid. I still run into odd little bugs in some edge cases with these tools and while not insurmountable, it reminds me that I'm working with stuff that's still pretty young. But that's also part of the fun!

Q: Closing words

Kudos to the people in my life who have made a difference: my wonderful parents, John and Olivia. My awesome brother, David. Ken Auer, Nathaniel Talbott, Adam Williams, Duff O'Melia, and the rest of the crew at RMS who taught me that software isn't just a job, it's a craft. Jared Richardson, who was a catalyst in my choice to go independent last year and continues to be a big support. Alan Hoffler, my mentor from Toastmasters, who continues to challenge me to improve my presentation skills. And finally Jesus Christ, who 2000 years ago did what I couldn't do for myself, and today continues to shower many undeserved blessings on me as I do my best to follow Him.

If you live in the Raleigh, North Carolina area, I encourage you to visit the local Ruby Brigade (raleigh.rb). I attend the meetups most every month and would love to chat. My blog can be found at matthewbass.com.

One of the most exciting Rails projects I've worked on over the past year has been Teascript, which I spoke about at this year's RailsConf. It was built using the principles outlined in 37 Signals' book, "Getting Real," and has actually been generating some decent revenue. I plan on building more apps like this in the future.

One of the main reasons why I love Rails (and Ruby in general) is the community. The developers I meet who digg Ruby are some of the smartest and most dedicated software guys around. It's a joy being part of such a vibrant community that is doing some seriously cool things in the world.

Enjoy the article? Digg It and help promote Rails.

Rails adoption world wide

August 29th, 2007


Not long ago the 8000 developer mark was reached on Working With Rails.

On a related note Aslak Hellesøy has recently produced a nice report showing the distribution of Ruby on Rails developer across the globe:

  1. Denmark (100.0% : 64/5.4 mill)
  2. New Zealand (66.15% : 33/4.2 mill)
  3. Sweden (63.02% : 68/9.1 mill)
  4. Ireland (56.06% : 28/4.2 mill) 5 ...

See full details over at Aslak's blog

Enjoy the article? Digg It and help promote Rails.

Rails Hackfest August Update

August 20th, 2007


August Hackfest

Tarmo and Sur are currently battling it out for first place with Mislav hot their heals.

If you haven't taken part there is still time to play catchup. On the stakes are some great prizes from O'Reilly including a first place prize of a ticket to RailsConf Europe (now almost sold out!).

Watch the action as it unfolds

Enjoy the article? Digg It and help promote Rails.

Josh Peek is a highly active contributor to the Rails framework. He came 1st in the June Hackfest and has been the most active contributor to the framework since the start of the year.

WWR caught up with Josh to find out more:

Q: What is your connection to Ruby on Rails?

About 2 years ago, I was originally trying to code a weblog/cms app in PHP for my own personal site when I heard about Rails. After reading all the buzz and seeing the original "weblog in 15 minutes" screencast I decided to pick it up and write my blogging engine with it. After that, I feel in love with Ruby and have been coding ever since.

This fall I'll be staring my first year at college, at DePaul University in Chicago. I've been doing freelance work over the summer and I hope to have time to do some work during school.

Q: Tell us about the sort of contribution you made during the contest.

I've been working on improving rails test coverage with rcov. I added patches to fixed various defects and bugs. With the help of Coda Hale, we added Method Not Allowed support which returns a 405 when a resource does not support a HTTP method. My favorite patches where the ones that speed up the process of deprecated old code. I wrote the patch that finally made with_scope protected (after lots of debate). I also wrote the plugin versions of scaffolding and pagination, so we could deprecate them as well.

Q: How did you first get involved contributing to the Rails source?

I'm probably the first person to take on the role of the "Trac Garden". Right after RailsConf 2007, I've began working with Jeremy Kemper (bitsweat) on some ways to cleanup Trac. The new policy is to close patches that aren't ready for submission. So if its missing unit tests, needs documentation or some refactoring, it stays closed until its ready. This really helps cleanup Trac and creates a nice queue for the Core to look through and commit.

I usually hang out in #rails-contrib and read the Core mailing list.

Q: Tell us about your development environment

I'm running a 2 GHz MacBook Pro with a nice large Cinema Display. I use TextMate as my main editor. Some of my favorite gems included capistrano, mocha, piston, rcov, and ZenTest (autotest).

Q: Rails 2.0 - What kind of features and functionality do you think we are likely to see in this release?

I would mainly like to see things removed by Rails 2.0. Many of the things I wish would be removed are going be "pluginize" by 2.0. I'm glad to see ActionWebService and the "enterprisely" database adapters removed as well. I hope they move to their own repository and not hang around the Rails Trac.

Q: Closing words

I'm always working cool and sometimes strange plugins at http://svn.joshpeek.com/projects/plugins/.

Enjoy the article? Digg It and help promote Rails.

Manfred Stienstra was one of the original January Hackfest winners. He has since gone on to earn a place in the Hackfest top 10 a further two consecutive times.

That's some achievement. So how does he do it? We dropped him a line and found out the secrets to his success and more.

alt text

Q: You've had quite a bit of success since the first Hackfest tell us about that.

In this last year we've seen Rails grow quite a lot and more than a few Rails companies have seen their workload increase. I'm happy to say that we've never had to look for clients, not even before Rails got bigger. However, I do think that being in the public eye is important for a company and sharing code with the public is a good way to show your skills as a developer. Aside from the fact that it's good for your karma and everyone should do it.

We're currently working for a few international clients and I think that our exposure on workingwithrails.com and our community contacts have certainly helped them find us.

On a more personal note I've met quite a few new interesting people and had about a dozen job offers since the Hackfest .

Q: What is a typical working day like for you?

I usually get up around 7 or 8 am. The first thing I do is stumble into my living room, grab my laptop and plough through new (client) emails and tickets from other timezones. After that I take a quick shower and head over to the office, which is a 15 minute bike ride away.

At Fingertips we run all our projects off Edge, so that means that we get hit with bugs regularly. We always try to make time to fix any bugs we come across. This means we have more than one project with monkey patched Rails, diff's in the project root and path < *.diff in our deploy scripts. I think Norbert Crombach and I spend around 2 to 4 hours every week working on Rails at the office. Thijs van der Vossen, our boss, generally helps out with comments the usability of API's.

The only thing that really changed for me when I started being a more active contributor to Rails is that I now use my spare moments to read tickets instead of Slashdot and comics.

Q: What's the Rails scene like in Amsterdam?

As far as I'm concerned Amsterdam is the web development capital of the Netherlands, although the numbers don't really agree with me (: The Web 2.0 wave has really struck the city and there are countless small companies working on the next Pownce. We work for international customers about 80% of the time, I think this is mostly because business is still pretty conservative in the Netherlands and people tend to have trouble understanding the way we work.

Since about a year we've been organizing 'Coffee mornings', where we meet up with local web developers to discuss web frameworks, clients and business in general over a cup of coffee. Here we've noticed that even though most of the country is still in the Microsoft and Sun camp more and more companies are starting to see the value of Rails. Some of them have small 'agile' teams to try out the newer frameworks on pilot projects often initiated by the developers themselves.

In June we attended a one-day Rails conference here in Amsterdam with speakers like Nic Williams, Geoffrey Grosenbach and Aslak Hellesøy. Unfortunately it wasn't really marketed towards the international community. I really hope the conference will attract a more international audience next year so we can show that our beautiful city has more than pot and hookers.

Q: What did you learn from the Hackfest?

One of the things I've learnt during the Hackfest is that competition isn't always the best driver for quality. When you associate value (points) to certain activities you will always favor a certain type of contribution. Those contributions aren't necessarily beneficial to the project.

Currently in Hackfest you can get the most points if you open a lot of new tickets and upload a lot of patches. None of these are judged on quality and a small documentation patch will receive the same amount of points as a complete refactoring of the render method. This tends to attract far fetched enhancements that don't have their foundation in a specific need, but are made up to score points. I don't want to tell people how to contribute, because that's up to them, but that's how I see it.

I don't think there is a specific distribution of points or set of rules that solves all problems in a competition like this, I think it's up to the community to transcend the fighting for points and realize that we're all working on creating a great product. Koz announced a new process for getting patches accepted in the beginning of this month. I hope this will raise the overall quality of contributions, I also hope this will make people realize that making Rails better is a community effort. The ultimate goal should be improving Rails, winning a Hackfest is just a nice byproduct of that.

Q: What's the toughest part for somebody starting out in Rails and how best can they overcome it?

A lot of people start with Rails assuming that it's going to magically solve all their problems without any effort. I think the hardest part for a person new to Rails is managing expectations, which can be hard after seeing all the awesome screencasts.

If you want to be a good Rails programmer you will first have to understand the core concepts behind it. A good start is reading The Art of Unix Programming, Test-Driven Development by Example and The Pragmatic Programmer. If you want to be good at something, you will have to work for it.

It's also important to see that Rails is just a tool, not a goal. Rails isn't fit for every project and every developer. It's not easy to mold Rails to do something it wasn't made to do because it's a CRUD based web framework and not duct tape or a general purpose programming language.

The last hurdle is learning the API, which you will probably never fully know no matter how long you work with Rails. If you're somebody who learns by example the Beast source code is a good place to start, otherwise you can pick up any of the zillion books written on Rails.

Q: Which tools and resources are you using at the moment?

I've really fallen in love with Autotest, it works exactly how I used to run tests myself. Other than that I'm really trying to learn more about the tools I was already using. I've also rediscovered paper, I keep a paper todo lists and post-it notes on my monitor.

Furthermore we really like to keep a 'paper trail' of everything we do. We save all conversations with clients so we can look up what they said so we don't have to ask them four times. We write down all working hours even if they aren't paid for, in order to become better estimators. We centralize all your account, SSL and PGP information so everyone we work with can easily find it. We use online repositories to store this information so we can always access it, even if someone lost their laptop in a fire. Tools we use to achieve this are: Subversion, Campfire, OSX Encrypted Disk Images, Basecamp and IMAP.

Q: Closing words

The first thing on my agenda is a vacation to Japan. If anybody is in the Tokyo area around the end of August or beginning of September give me a ping, maybe we can meet up.

I'm definitely going to be at RailsConf Europe. Norbert and I are taking the train from Amsterdam to Berlin on Sunday the 16th of September, first stop is Bratwurst on Rails.

Finally if you want to see Norbert and me making an ass of ourselves on camera, check out the Ruby Banter series.

Thanks for reading!

Enjoy the article? Digg It and help promote Rails.

Kamal Fariz hails from Malaysia, an avid Ruby, Rails, and Apple fan. He has recently handed in his notice at a big technology consulting company to join an agile startup.

In this Hackfest winner interview we find out about his journey to Rails, contributions and much more.

Kamal Fariz

Q: What is your connection to Ruby on Rails?

My first experience with Rails was before it was Rails, in the form of Instiki. I was looking for a wiki for internal use on a client project, and liked how easy it was to setup. Before this, I was a commiter on TiddlyWikiRemote, so naturally I wanted to check out how it was built. At that time, I remember Ruby syntax being weird and at the same time impressed by Madeleine, the library DHH used for persisting objects (pre-ActiveRecord?). Not long after, Ruby on Rails was announced, the first screencast was published, the first impression at early TextMate from said screencast was made and Tobi was still doing one-on-one tutoring of Rails. My understanding of Rails was so-so at that point as I had put off learning Ruby but I finally gave in about 1.5-2 years ago and have never looked back.

I'm currently employed as a consultant at a big, traditional technology consulting company. For the past three years, I've been doing enterprisey things with Java within the telco industry but for not much longer. I recently tendered my resignation and will be joining RSB, an agile Malaysian startup, as Lead Software Developer in August. We are building next-generation location-based web apps on Rails.

Q: Tell us about the sort of contribution you made during the contest.

Two of my patches were committed for the very first time in June, a week before the announcement of the June Hackfest. I had a few more patches sitting in the Rails Trac for a few months already, so I never thought my patches would be accepted anytime soon. Fired up by the real prospect that patches were indeed getting the attention they deserved, I hunted for more patching opportunities.

In summary, I contributed a couple of bug fixes, a couple of test coverage patches, a documentation patch, modernized some existing tests (collection fixtures had just made it in edge) and doing my part in banishing ActionWebService. A total of six patches were accepted during the Hackfest. I wrote a self-congratulatory entry on my blog to commemorate it.

Q: How did you first get involved contributing to the Rails source?

I had been involved in the open source community for a while now, but mostly in a bug reporter role in my heydays of being a staunch Debian user. My first actual code contribution had been the TiddlyWikiRemote project. Since then, I've submitted patches to various other projects such as the Spring-IDE plugin for Eclipse and most recently, the awesome has_many_polymorphs plugin by Evan Weaver.

Contributing to Rails was daunting at first, but the combination of the guide on the Rails Trac, Dr Nic's excellent post on the same and various resources on ruby-debug made it easier.

Q: Tell us about your development environment

I use TextMate on a MacBook. I rely on Trac and Subversion hosting by the fine guys at DevjaVu and shell out on cheapish VPS hosting at VPSland. Favorite kit/libraries/plugins right now is the Caboo.se Sample App, RSpec, attachment_fu + image_science, has_many_polymorphs, acts_as_friendly_param and restful_authentication.

Q: Rails 2.0 - What kind of features and functionality do you think we are likely to see in this release?

Wow, I had been using Edge Rails for quite some time that I don't really know how to compare it against the last stable release, 1.2.3. I think apart from more REST, Rails 2.0 will be less in terms new features and more polish. I'm actually looking forward to a rewrite/refactorization of ActiveRecord. DataMapper looks really neat.

Q: Closing words

I recently co-founded the Malaysia Ruby Brigade (Malaysia.rb) to bring together Ruby and Rails enthusiasts from around Malaysia. We've mostly discovered Ruby/Rails independently and it's a nice feeling to reach out to others that share the passion. All we have now is a Malaysia.rb Google Group, Trac/Subversion hosting for a couple of planned community projects and four meetups to date. We are most enthusiastic about a casual multiplayer online game around the theme of the Malaysian Elections (rumored to be Real Soon Now). Currently, it is in the planning stages, but I've been itching to get started so look out for that! Continuing along the theme of giving back to the community, Aizat from Malaysia.rb recently released a mashup that tracks the Malaysian Air Pollution Index.

Enjoy the article? Digg It and help promote Rails.

Matt Aimonetti is a Web application designer/developer experienced in world wide scale projects with a particular interest in User Experience and "agile" methodologies. He is a Rails core contributor and a winner of the June 2007 Hackfest

In this interview find out why Matt and his team chose Ruby on Rails over Symfony and Django. Discover the different tools and libraries that he uses in his projects.

Get an insight into the neat improvements currently being made to ActiveRecord on the Rails trunk as a result of his contributions in this Hackfest.

Matt Aimonetti

Q: What is your connection to Ruby on Rails?

A bit more than a year ago, the company I was working for was interested in switching to a MVC web framework. Two other developers and myself looked at three different solutions: Symfony, Django and obviously Ruby on Rails

We wrote the same demo app using the 3 frameworks and benchmarked them (the results where quite surprising and even made it to the top 10 Digg stories). Anyway, to cut the story short, we opted for Rails after we all fell in love with Ruby (RoR benchmarks weren't that great).

I had been a fan of Object Oriented Programming for a while but since I had to mainly use PHP and Perl at work. The only OOP fun I had was when working on Flash ActionScript 2 (which by the way is truly OOP and very close to Java). I always liked Java but the verbosity of the language was just annoying. At the same time I was getting seriously tired of maintaining spaghetti PHP code.

Ruby was just there for a while and I was ignoring "her" thinking that "she" was just like any other programming language. Oh boy, I was so wrong. I fell in love almost right away. Rails was just a good use of Ruby and since, on top of that, I was 200% in agreement with the framework's concepts, the switch was easy.

I'm quite faithful to Ruby, even though I keep looking at other languages. Rails, on the other hand, has been more of an excuse to use Ruby. Don't get me wrong, I really like this framework. But I've been spending more and more time lately playing with her little sisters: Camping and Merb

Regarding my professional situation, things are quite simple, I left my job a couple of weeks ago and I decided to become a full time Rails Mercenary(c).

Q: Tell us about the sort of contribution you made during the contest.

I focused my efforts in two areas which ended up merging: better bootstrapping process and better unicode support.

Before the contest, I worked with Josh Knowles from the Integrum hall of fame on a plugin called rake_tasks. Rake_tasks was a Rails plugin full of very useful tasks we would use on most of our projects. Josh started writing the plugin to quickly setup a project by creating databases and setting up SVN. I joined him in the task of making things easier and we added more tasks. And since I needed a better utf-8 support I ended up having to hot patch Rails. We decided to divide the plugin in two, one part related to the database stuff and one part related to the SVN stuff.

I was still really annoyed that I had to overwrite some of Rails functions to get everything working. I followed Josh Susser's excellent guide to contribute to Rails. The Core team saw that some of the plugin features could be really useful and we ended up improving Rails/Active Record/MySQL adapter by adding support for more character sets and collations when you create a database.

What does it mean in practice?

By default, the ActiveRecord create_database method will now create a unicode database. That also means that all the tables you will create will also be utf-8.

Try the following in Edge:

ActiveRecord::Base.connection.create_database 'matt_development'

And you will notice that your new database is utf-8, but that's not all! You can also define the charset and collation if you wish:

ActiveRecord::Base.connection.create_database 'charset_test', :charset => 'latin1', :collation => 'latin1_bin'

or just the charset (the default collation for the defined charset will be figured out):

ActiveRecord::Base.connection.create_database 'matt_development', :charset => :big5

We also added methods to retrieve the databases variables such as the charset or collation. However, it also seemed to make sense to create rake tasks to access all these cool new features.

Based on the rake_tasks example, I added rake db:create which will create the database defined in your current environment (if it's a local database). The tasks support MySQL, PostreSQL and SQLite databases.

I also added rake db:create:all which will simply create all your local databases using the info provided in your config/database.yml file.

Let's not forget rake db:drop (drops the current environment database) and the very useful rake db:reset.

rake db:reset will drop your database, re-create it and migrate it. A very useful feature in development. I personally use it all the time.

(I also added some minor tasks such as rake db:charset and db:collation)

To sum up here is the rake -T list of added tasks based on my patches:

rake db:charset                      # Retrieves the charset for the current environment's database
rake db:collation                    # Retrieves the collation for the current environment's database
rake db:create                       # Creates the local database defined in config/database.yml for the current RAILS_ENV
rake db:create:all                   # Creates all the local databases defined in config/database.yml
rake db:drop                         # Drops the database for the current environment
rake db:reset                        # Drops, creates and then migrates the database for the current environment. Target specific version with VERSION=x

Next time you start a project, just do:

$ rails my_new_project
$ cd my_new_project
$ mate config/database.yml  (edit your database file)
$ rake db:create:all

And you will be ready to go. I'll also try to enhance the db:create task a bit so it will prompt the user for the DB root account instead of directly using the info from the database.yml file.

Q: How did you first get involved contributing to the Rails source?

I contributed to various other open source projects in the past and it was very natural for me to give something back to the Rails community which gave me so much. Josh Susser's guide was really neat and the fact that I had direct access to the core members using the Google Group was definitely really helpful.

Q: Tell us about your development environment

I develop on OSX using a sexy !Black MacBook and an extra LCD mornitor.

I setup most of my libraries using macports. I use/test/play with MySQL, PostreSQL and SQLite locally (though I generally deploy on MySQL).

Here is a list of plugins/gems/libs/tools I use on most of my projects:

Q: Rails 2.0 - What kind of features and functionality do you think

REST will be a big thing in Rails 2.0. I also really like the new routing (polymorphic urls), the cool new respond_to, better namespacing, caching of queries, sexy migrations. The core shouldn't grow too much and a few things will be deprecated and moved to plugins (paginator, for instance). There's a cool new debugger and plenty of bug fixes. Most of my projects are developed on Rails Edge and it's always a pain for me to go back to working on a 1.2.x based project. I can't wait for 2.0 to be released.

What would I like to see in 2.0? Not much more than what we have in Edge already. I would like to maybe focus on 3.0 already and rethink some major parts of the Rails architecture such as the rendering and maybe learn more from merb and maybe get rid of CGI.rb ;)

Q: Closing words

I'd like to thank all the people in the community who have been really helpful and patient. Especially Josh Knowles who is a really active community member and a great source of knowledge.

I would also like to encourage everyone to push features they think could be helpful to the rest of the community (Core patches or plugins).

Finally, shameless self-promotion if you need an agile Rails expert/mercenary to work on your awesome project, or if you just need advice regarding your project, feel free to contact me, I might be able to help you out.

You can hopefully catch me at the San Diego Ruby Brigade every first Thursday of the month or else check out my blog.

Enjoy the article? Digg It and help promote Rails.

Continuing on with our series of interviews with the June 2007 Hackfest winners we talk to Mislav Marohnic from Croatia.

He is best known for his role in Prototype as a core team member.

In this interview find out why he made the switch from PHP to Rails, how he got involved in contributing to Rails and lots of handy links to libraries and resources he uses.

Mislav Marohnic

Q: What is your connection to Ruby on Rails?

I am a student at the Faculty of electrotechnical engineering and computer sciences at Zagreb University, Croatia. At my first year we were taught core C programming, but nothing more; so, unsatisfied by my college's curriculum in the field of computer science, I ventured into the world of programming and web technologies. I worked with PHP for longer than 3 years, but was growing more and more unhappy with its community, widely adopted (bad) practices and the quirks in OOP support. When I first saw Rails controller and model code I thought it was something for kids because it looked ridiculously simple and it read aloud like English language. But, the Rails hype grew and, since I was learning Perl and Python at the time, I decided to give Ruby a shot. I was also attracted to the language because I learned that the Prototype framework, which I enjoyed a lot, mimicked the Ruby language. I immediately fell in love with Ruby's community, conventions and practices. I've then learned Rails by dissecting its internals and doing some real projects afterwards.

I was employed for 2 years, but currently I'm freelancing. In my country (Croatia), which has a very low number of Ruby/Rails developers, I never miss a chance to do an introductory presentation or a workshop for Rails.

Q: Tell us about the sort of contribution you made during the contest.

I've made contributions to both Prototype framework and Rails, probably more to the former than the latter. I remember doing some fixes in the unit testing process of the both frameworks. I also worked on the Event module of Prototype a lot; there was some bughunting in the new module code, mouse wheel support and so on. I've updated document.getElementsByClassName method to match the one that is implemented in Firefox 3, so now it accepts multiple class names:

document.getElementsByClassName('item highlighted')

I also worked on many enhancements for the Form module. One of the highlights is the setValue method for form controls which can manipulate text inputs, radio buttons, checkboxes and select boxes:

// text input:
$('user_name').setValue('Mislav') 
// checkbox or a radio button:
$('remember_me').setValue(true)
// mutliple select box:
$('attend_classes').setValue(['cheese rolling', 'evil chemistry'])

In Rails, I have fixed clean_logger to work with Ruby 1.8.2, enabling deployment of apps that run on Rails trunk to such systems as Debian.

Q: How did you first get involved contributing to the Rails source?

Same as most people: I've got bitten by a bug and I had an idea to resolve it. I was already experienced with SVN because I contributed to Zend PHP Framework; I co-authored the initial Zend_Cache module and have written a manual for it.

Contributing to Rails was a bit difficult at first because I had to understand Rails internals, why some features are the way they are and what goes where. I also had to get used to writing unit tests, even in cases when that is most difficult. I worked on a very slow PC for a year on which Rails unit tests took over 12 minutes to finish; I remember using the time to explore code and API docs more to see if I have missed anything.

The hardest thing was probably exploring code. Ruby is highly dynamic, so a single class could be defined in more than 10 files. (Try to find all InstanceTag code to see what I mean.) During this time rgrep became my best friend.

Q: Tell us about your development environment

I started out with Windows/cygwin, but have since switched to Ubuntu Linux on a decent PC. I have tried UltraEdit, jEdit, Eclipse and other coding environments, but have finished back on vim (from which I kind of started) because it provides me with power without clutter.

I have learned that the most important things about an editor are not sophisticated things like code-completion, GUI framework integration or additional helper windows around your code; they are little things like font with proper antialiasing setting, color scheme (DejaVu Sans Mono/oceandeep here) and neat helper hacks that vim enables. Of course, I couldn't live without command-line tools like grep, tail, locate, ssh/scp, wget and, of course, script/console. The latter, combined with ruby-debug, is something I probably spend most of my time in.

My recent favorite kits/libs are Hpricot, the new Capistrano and Sake. I also started using Haml and Sass for my new projects and I love it so much I'm even converting old templates.

Q: Rails 2.0 - What kind of features and functionality do you think we are likely to see in this release?

I'd say that Rails 2.0 is mostly about major cleanup (removal of cruft), API documentation improvement, new REST/routing magic (like polymorphic URL helpers) and ActiveRecord performance enhancements/consistency in associations. There are already significant improvements in documentation and test coverage all over the framework. I also like how script/generate scaffold now generates a RESTful scaffolded resource. Date calculations have never been easier and migrations have never been sexier! I've been running on edge ever since before Rails 1.2 and have never regretted it; if my app broke that could only mean that I've ignored a depreciation notice, which I shouldn't have.

Q: Closing words

I have overtaken maintaining the will_paginate plugin and this, besides Prototype 1.6 release, is currently my main public project that I'm doing for Rails community. I have some other neat ideas that I will try to push out by the end of the summer. I'm also slowly succumbing to the peer pressure and finally making a blog/personal site. When it's up, I hope you'll meet me there :)

Enjoy the article? Digg It and help promote Rails.

June marked the start of a series of Ruby on Rails Hackfests. During this time developers battled it out contributing enhancements, bug fixes and documentation to the framework we all know and love - Ruby on Rails.

This post kicks off a collection of interviews with the winners of this contest, beginning with Christophe Porteneuve.

Christophe Porteneuve

Christophe is heavily involved in the Rails community having been a speaker at ParisOnRails, ParisWeb, and The Ajax Experience. In addition to contributing to Rails he also contributes to the Prototype and script.aculo.us libraries; teaches Rails and is also an IT book author.

Q: What is your connection to Ruby on Rails?

I discovered Ruby in early 2005. I've been coding since 1989 and have been using about two dozen languages, most of them professionally, and I was looking at the time for something more expressive, and more agile, than my language of choice by then (which was Java, and prior to that had been Delphi). Ruby felt profoundly right.

Later that year I dipped in Rails, and after 6 years of professional J2EE work it blew my mind; it got almost everything right, and very right at that. Sure, a few things were missing and could be improved on, but the philosophy and agility were astounding. I fell in love.

For the past 5 years I've been leading the Software Engineering department of an internship-intensive IT college, and this past academic year we've been the first in France to teach classes (and top-notch ones at that) in AJAX, Ruby and Rails. Students loved it!

Next month I'll be changing jobs to become CTO of Ciblo, and I already committed them to pushing Rails for every new project, including all client works.

I'm also a member of Prototype Core and contribute there quite a bit; I also patch Scripty now and then. Finally, I'm currently wrapping up the quasi-official book about Prototype and script.aculo.us, already available in Beta at The Pragmatic Programmers. It'll be the first comprehensive, in-depth coverage of these libs (following in the nice tracks people such as Dave Crane started treading).

Q: Tell us about the sort of contribution you made during the contest.

Well I hadn't even realized there was a new Hackfest going on. I did contribute a couple patches to Rails (and sure hope to contribute much, much more in the near future), but my tickets and patches on Rails' Trac are mostly about Spinoffs (Prototype and script.aculo.us). Thomas' and Sam's committing a few of those patches in June got me to #8 at this Hackfest :-)

Those patches were mostly little tweaks, like obeying tabindex (if any) when determining the "first" element in a form, etc. There are a few left in store before we release 1.6, e.g. extended semantics for Enumerable#grep. My biggest contributions this year were in rewriting, with Andrew Dupont, the $$/Selector area for 1.5.1. It was really cool, and Prototype users love it! I also just entirely rewrote the InPlaceEditor (and InPlaceCollectionEditor) for Thomas, as it was seriously needed, and it just landed in the trunk.

Q: How did you first get involved contributing to the Rails source?

Well, I love open-source. I've been using FLOSS since 1995, and I've got strong coding-fu so it's only fair I give back whenever I have time. With Rails and Spinoffs, it's actually very easy to give back, because of the agility of it, and how big they are on TDD (wink), so you feel more confident your patch is right.

When I hit a few snags at the time I discovered the libs, Thomas pointed me to the Google Group (RubyOnRails-Spinoffs), which is pretty top-notch. As things go, I'm now a prominent voice there, and after those first two questions, all my posts have been answers :-)

Q: Tell us about your development environment

I've forsaken Windows a few years back, so I'm 99% of the time on Debian GNU/Linux with a KDE graphic environment. I just finally got myself a brand-new MacBook Pro too, which I'd been longing for (plus, you don't really feel like you belong in the Rails family till you switch to OSX ;-)).

The desktop apps I use most are Firefox (with Firebug, of course), Thunderbird, Konsole, Vim, SSH, Subversion, AmaroK for music (best tool ever!), and Kopete for chat. As for online apps, I use Trac, Campfire, Basecamp, Google Agenda and Google Groups quite a lot. And I definitely need to give a try to Justin's and Rick's Lighthouse and Warehouse.

On OSX I'm fond of Quicksilver, Adium and iTerm (and probably TextMate, once I get to it).

As for development, with Rails I'm mostly using Vim as I find it tedious to launch RadRails, because of Eclipse. I love Eclipse, I use it whenever I need to do Java work, but with Rails I find it snappier to just use an editor and filesystem hooks. I have a Konsole session set up with a few tabs for the code, console, server, log, MySQL shell if I need it and regular shell for RI lookups and ad hoc IRB sessions to fly.

Q: Rails 2.0 - What kind of features and functionality do you think we are likely to see in this release?

Quite frankly I haven't had much time to follow the directions 2.0 is taking these days, except for the nice sexy migrations, dumping of route maps, nested REST resources in the routes (very nice one!), etc.

As a developer who has to deal with international apps or non-English single-language apps all the time, I sure wish G11n were built right in, instead of through numerous, competing plug-ins such as Globalize or its recent, streamlined Globalite variant.

But I believe Core is going to slim even further down instead of biffing up. I can understand the philosophy. For instance, pagination got the boot (which at least makes a good pretext to switch to the better will_paginate plugin).

I'd love to see better scaffolding/generation out of the box, perhaps helpers favoring accessibility, markup, progressive enhancement, this kind of thing. Currently the code they spew is pretty sub-par, I find myself using a lot of my own helpers instead. Sam wants the whole Spinoffs-related helpers to be rewritten from scratch, and I hope to tackle that with him later this year.

Stuff like any-depth eager loading on associations would be cool. Then again, as I said, I haven't got time these days to track every changeset.

Q: Closing words

For those interested in Proto/Scripty, I'll be speaking at The Ajax Experience at San Francisco, from July 25 to 27, and possibly (TBC yet) at @mediaAJAX London in November.

I'm looking forward to contributing quite a good deal to both Spinoffs and Rails from next September onwards, and you can expect quite a few cool things either as new versions of Prototype/Scripty, or plugins to Rails.

Enjoy the article? Digg It and help promote Rails.

The results are in.

Congrats to the winners and all those who took part. It's been a fast paced few weeks with a real increase in contribution to the Rails framework.

If you didn't make it this time round there is still every opportunity to get involved. July's contest is about to kick off - more news to follow on that shortly.

Enjoy the article? Digg It and help promote Rails.

In this, the final installment of the Hackfest winner interviews, we talk to Rails core contributor Kevin Clark.

Kevin is well known in the Rails community for the Heckle test tool - many of the other Hackfest contestants used this to help them uncover weak spots in the Rails source and gain valuable points in the contest.

Web Exclusive: Kevin also shares with us some exciting news in this interview. He has been working on a new publication that will be of interest to the Rails community. I won't spoil the announcement here so read on to find out more.

Kevin Clark

Q: What is your connection to Ruby on Rails?

I was working on a research project a couple years ago where we were trying to track meme propagation through the live journal image stream. I started to write a proof of concept in PHP (there was freely available source to one of the many LJ image aggregators), but wasn't enjoying myself. About that time a friend read about Ruby and Rails somewhere and pointed me towards it. I got excited, and wrote the app in a couple of weeks while learning the language and framework.

Now I'm a developer at Powerset where I build tools. The far majority of my work is in Ruby, and I use Rails off and on.

Q: What Rails projects are you working on right now?

My most recent Rails apps have been building up infrastructure within the company. One project, Tak, is a web frontend for viewing package information in our repositories. It's able to track new versions, dependencies and dependent packages, and handles other goodies I can't talk about right now.

I've also done a good bit of work on Ruby libraries and a Rails based front end to build clusters of nodes on Amazon's EC2.

Q: How did you first get involved contributing to the Rails source?

A friend in #caboose complained that it was annoying to 'svn add' files created from script/generator whenever it was used. I agreed, and decided it would be a good way to introduce myself to the codebase.

That because my first patch.

Q: Tell us about the sort of contribution you made during the contest.

Most of my patches for the rails hackfest were test coverage patches. Actually, in the end I used the hackfest largely to stress test heckle against the Rails source. I wanted it to be stable enough that it could stand even stand up to something as large, complex, dynamic, and (at times) hairy as the Rails source. I took my shiny new heckle output and helped fill in gaps in test coverage where I could.

One of the reasons I was interested in heckle, and particularly in heckling the Rails source is that I'd really like to help push refactoring and cleanup in various areas in the codebase. It's hard to do that with confidence with large gaps in test coverage. Unfortunately, there are sections that just aren't tested, and more that aren't tested enough for large reorganization. My patches worked to make that more possible.

Q: If you worked on the Rails source before the contest what kind of contributions have you made?

As I mentioned, -c with generators is mine. I've also submitted various bugfixes, wrote the first test code (and ActiveRecord test harness) for pagination in ActionPack, have written or edited a good amount of documentation, and added other minor features here and there. I've got about 25 patches with my name on them in core.

My focus in the recent past has been on test coverage and tools.

Q: Tell us a bit about your development environment

TextMate, Autotest, Mocha on one of my various macs. Heckle when I'm feeling rigorous or encountering someone else's (sometimes untested) code.

For the hackfest I generally found a bit of code I felt could use improvement, and ran heckle against it. Then I worked to add focused test cases to deal with the situations the tests didn't cover.

For new code I'm test-first.

I've been doing some python work lately, and by far the library I miss the most is Mocha. It's head and shoulders above any mocking library I've seen in any language. It makes the occasional departure from Ruby more painful.

Q: What is the best part about contributing to the Rails source?

The girls. It's a well known secret that girls go wild for Rails hackers. Really ;)

For me contributing is about the community. It's about giving back, and being able to become immersed in this wonderful group of people doing really interesting things. It's an honor to be part of that.

Q: With 1.2 released we are now looking forward to 2.0. What kind of

Less. The major accomplishment for 2.0 will be removal of the cruft. I want to see things pluginized, streamlined, and well tested. We went through this huge expansionist phase before the plugin architecture was written, and we need to pull out the things that just don't belong in every Rails app (this describes a lot).

One of my dreams is to get to the point where we can refactor ActiveRecord to make a really fast mock database possible. That would make me happy.

Q: Closing words

I'm going to be speaking (along with a truly amazing collection of speakers, I'm really excited) at SD Forum in San Jose April 22-23.

Also, I believe this is a Working With Rails web exclusive, but Tom Preston-Werner (fellow Powersetter of Gravatar, Chronic, and FixtureScenarios fame) and I are writing a book on Test Driven Development with Rails for the Pragmatic Programmers. We're excited, to say the very least.

Working With Rails Profile

Blog - http://glu.ttono.us

Enjoy the article? Digg It and help promote Rails.