The power of readable metaprogramming

Oliver Steele is Chief Software Architect at Laszlo Systems and he’s digging into Ruby on Rails:

During my last vacation it took about five lazy vacation days with Ruby on Rails to implement a fairly sophisticated 40-page web application with five models, two metamodels, CRUD, cookies, image upload, and login. (I’ll write more about the application itself, if I find a few free weekends to harden it for public use.) For comparison, it took me about the same amount of time during my previous vacation to write a much simpler ten-page PHP web application that had only one model. And I already knew a little bit of PHP, whereas I was learning Ruby and Rails from scratch.

He explains how much of this productivity stems from the fact that “…Ruby is one of the rare languages with a readable embedded syntax for metaprogramming”, which in turn “…lets the library user write in a concise domain-specific language that embeds Ruby”. The unique power that gives us Associations and Validations.

I’m really glad that Oliver looked into Rails because that has in turn lead me to really dig into Lazlo. It looks pretty darn neat! I’d definitely love to see someone do a Rails backend with a Lazlo frontend.

Picking platforms based on performance

Chris Petrilli talks about the delusions of grandeur that lots of programmers indulge in when they pick an environment based on performance concerns:

Write in whatever language you feel most comfortable and productive in. I know quite a few Python (either Zope or SkunkWeb) based websites that are running millions of hits per day. That puts them in the top 1%. Your site isn’t like that. If you think it is, you’re wrong. Maybe someday it might be, but deal with it then.

Couldn’t agree more. For almost a year, Basecamp was served well by a single, if beefy, server running web, application, and database services. We’ve just recently moved beyond that — after success was achieved. There’s no reason to gold platen a possible flop.

Tobias updates Hieraki, Typo, and more

Tobias Luekte has been a busy bee lately. In his week worth of updates, he writes about updating Hieraki and Typo to Rails 0.10 and a bunch of goodies for both in the wake of that. Additionally, he has a new scaffold generator using the postback approach and updates to both Money and the login generator. Way to go, Tobi! Keep it coming.

Want to learn how to Rail like a pro? Consider hiring Tobias to show you the ropes. He’s offering his services.

Ease of development, speed of execution, pick two

Justin Gehtland has been working on an application using the Java/Spring/Hibernate/JSTL stack for about 5 months. He started redoing it in Rails as an experiment and found something surprising:

I’ve been able to re-implement 80% of the functionality in just under four nights of work. Some of that most assuredly has to do with the fact that I understand the domain pretty thoroughly by this point. But a lot of it has to do with the sheer productivity of the framework.

He attributes this to convention over configuration, and how the “…configure, compile, deploy, reset cycle for running tests is time consuming on my original stack, and non-existent with Rails”. But all that is just the familiar tune on “ease of development”. Here’s the real kicker:

Rails is actually faster.

At runtime, the Rails implementation is at least as fast as the original stack in almost every case, and for a not-insignificant portion of actions, actually performs better. I haven’t run benchmarks yet, but I will as this effort progresses, but I was shocked (shocked, I say) to discover this.

Justin is the co-author of Better, Faster, Lighter Java and Spring: A Developer’s Notebook.

Welcome on over, Justin! I can’t wait to read more about your adventures with Rails. And best of luck convincing your customer to dump the 5-month effort in favor of your 4-night rewrite. I’ll be cheering for you.

Should I learn Perl with Maypole, or Ruby on Rails?

Ben Hammersley was debating with himself in public whether to dive into Ruby on Rails or stay with his trusty Perls and pick up on Maypole:

Should I learn Perl with Maypole, or Ruby on Rails? Perl I know, Ruby I don’t; Maypole seems a bit under the radar, Rails is hot hot hot; Perl has shedloads of modules to give other really useful features, Ruby has less.

I offered my always impartial and objective advice that perhaps Ruby on Rails would open his mind more. Learning a new language and all. Hammersley responded:

I’m inclined to go with his sage advice and learn a new language as well. And a new version came out this morning, too. That’s it. I’m sold.

Welcome on board, Ben!

Rails 0.10.1: FCGI stability, WS generator, tons of fixes

This is the point release to tie up the various loose ends introduced with Rails 0.10.0. Action Web Service has seen the most interesting improvements feature-wise with a new generator and tie-ins with the testing setup. There’s better support for XML-RPC: Instead of performing type checking on the parameters the remote client sends, AWS does casting to try and make it compatible with the signature instead, but if it fails, passes the parameter through anyway. And cleaner support for “prefix.methodName” XML-RPC methods with a new dispatching mode named :layered (this is an incompatible change for XML-RPC services that use namespaced XML method names: metaWeblog/blogger implementations will require changes).

As Basecamp moved to lighttpd/FCGI this past week, we also got a bunch of good fixes in that increases the stability of FCGI in a production environment quite a lot. No more FCGI dying and in case uncaught exceptions are raised, you’ll know about it in log/fastcgi.crash.log.

In total, we managed to squeeze in no less than 52 additions, changes, fixes, and tweaks. See all the changes in the changelogs for Rails, Active Record, Action Pack, Active Support, and Action Web Service.

No application changes should be required. Update using gem update rails

Rails is the #1 gem with 20K+ downloads

Rails has now assumed the #1 gem spot with 20,801 downloads at the time of writing. Just in front of Rake, which have long had a solid lead as a required dependency to Rails. Out of the 11 gems listed on the top downloads table on the cover of RubyForge, Rails is now responsible for the six of them.

Funny side note: The two programmers at 37signals (yours truly and Jamis Buck) stewards 8 out of 11 gems listed on the hit list.

Rails praise from around the web

The latest article by Curt Hibbs and the excellent Four Days with Rails are working wonders to attracting new people to Rails. Here are some of the snippets from people who’ve been blogging their discovery of Rails the past few days.

Nicholas Jon lists Ruby on Rails as Things to Learn:

Everyone seems to be all-a-twitter with this framework. I started messing around with this last weekend and am hooked. At this point it’s a little like listening to an Italian opera — I can tell everyone’s saying beautiful things, I just haven’t a clue what any of it means.

…in the comments, Todd follows up with:

The more I use Rails the more I like it. Partly because it’s improving all the time and partly because I find out new ways to make development less painful with it. I was burning out pretty bad using PHP.

Shane picks up on the over-serving riff and writes:

Rails fills a gap that has existed in web frameworks for a long time. You have J2EE which is geared towards the most complex projects, and then you have server side scripting which can be used for simpler projects. Rails fits right in the middle, which I believe satisfies the requirements of a majority of the projects out there.

Zef Hemel is digging into the scaffolding fun and ease of installation:

I love Ruby on Rails. It’s very easy to use and seems very productive. I’ve often complained about the amount of work that you have to put into applications that basically don’t do much more than adding, editting, linking and removing entities. RoR makes this very easy… What I also liked is how easy it was to get started. On Windows all I needed was to download the Ruby installer and MySQL and I was ready to go. It was very easy to install RoR by using gems and as RoR came with the Webrick webserver, there was no confusing Apache configuration or anything.

Rails Noise: Blogging the learning process

Tim Germer is learning Rails and liking it so much that he decided to start a blog about the experience. And such was Rails Noise born. As background for his interest in Rails, Tim writes:

I’m no programming whiz-bang; I can muck around, and mucking I have been doing. Recently Ruby on Rails caught my attention. My attention has something to admit, it’s biased towards those that innovate and stand out from the crowd. I know, I know, what an affliction I have!