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.
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.
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.
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.
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.
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.
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.
We have a few Redhat boxes running a mongrel cluster supported by Apache and MySQL.
Not necessarily, but the vast majority of what I develop against and maintain is Ruby and Rails.
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.
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!
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
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.
Apart from minor ActiveRecord/ActionPack fixes and pluginizing some functionalities, my major patches were for refactoring of render methods and association callbacks.
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.
Mac and big screens.
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.
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
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.

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.
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.
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.
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.
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 :)
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.
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.
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.

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.
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.
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.
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.
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!
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.
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:
See full details over at Aslak's blog

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
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:
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.
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.
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.
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).
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.
I'm always working cool and sometimes strange plugins at http://svn.joshpeek.com/projects/plugins/.
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.

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 .
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.
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.
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.
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.
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.
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!
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.

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.
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.
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.
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.
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.
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.
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.

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).
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.
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.
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:
Testing framework
Plugins
Image libraries
Continuous Integration
Other
Editor
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 ;)
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.
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.

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.
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.
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.
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.
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.
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 :)
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 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.
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).
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.
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 :-)
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.
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.
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.
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.
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.

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.
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.
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.
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.
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.
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.
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.
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.
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.
Blog - http://glu.ttono.us