2005/07/26
The Rails debate
Starting with a fully configured application base, bootstrapping the app with scaffolding, have really iterative development with a dynamic language and no class-reload issues. For all these aspects, the J2EE tools are clearly in the dust, and this is why Rails is the clear winner in the small project / new projects areas. I'm not talking other kinds as I think we don't have enough feedback from large or very large Rails applications, and of course with maintenance of Rails app.
On the other hand, what is missing on the Rails side is the tools, the platform and the deployment. I want the tools: I want a great Ruby IDE, with a Rails personality. I'd love a much larger set of Ruby libraries: not necessarly core libraries, but a huge ecosystem of external tools and classes, like what we have in Java (and, on a lesser scale, on Python). And what I'd really love right now is something to facilitate deployment of my rails app. I want to have my webbrick tested app and push a single button or run a single script to have it deployed on my production server on apache or lighthttpd. I'd love to see something likethis, as easy to setup as the database.yml.
Even if a big part of Rails success comes from very smart 'marketing', it's really unusual and refreshing to have this attention to details (development process, initial phases of the application life, etc) in an open-source project. It's also interesting that the debate is mainly raging between the rails and java camp, and not much with PHP and Python developers.
2005/07/25
Google Maps and Microsoft Earth compared
http://maps.google.com/maps?ll=37.332025,-122.030189&spn=0.005778,0.005759&t=h&hl=enand
http://virtualearth.msn.com/default.aspx?cp=37.332362|-122.031224&style=h&lvl=17&v=1
Would this mean that in an ideal world according to Microsoft, Apple does not exist ?
Yahoofabulator
Update: another (similar) way to look as this: "this is a purchase of a desktop software company by a web software company" (Tim O'Reilly, on Radar)
2005/07/22
Rails impressions
Preliminary cnclusions:
- Yes, I've been quite productive with Rails.
- Yes, the code lines count is now quite low compared to the PHP version.
- No, Rails is no silver bullet.
- Yes, Rails is probably the most productive framework for iterative development of web apps.
Other random notes:
Scaffolding is nice, but slightly over-hyped. Interesting to get the basics in place really fast, but don't expect too much.
I'm still not totally convinced by the find API and the way eager associations work. For instance, especially with the no :limits restriction. Of course, it does not make sense in the general case, but if I'm choosing to have an ORDER BY, I should be allowed to set a limit too.
More generally, RoR is quite "single table-oriented". Expressing request is ok as long as you're dealing with a simple model, but on slightly more complex queries you're on your own. Note that this is not necessarily a bad thing, I'm always a little bit worried of hiding that you're actually working with a DBMS, this could lead to bogus find(:all) followed with a nice if (...) to get the only interesting row, instead of a good old WHERE clause. And I actually saw this in one of the articles about Rails. Again, this is not something against Rails, but by hiding the complexity, it's easier for a novice developer to be fooled. Another issue with handcrafted SQL (for something you can't do easily with the existing API on ActiveRecord) is that you lose some Rails advantages (Paginator comes in mind). It's ok that you can't do over-complex thing with count/find API, but if you choose to express a custom SQL request, you should still have a way to integrate it in the rest of the architecture.
The ActionView helper are nice, but limited in scope. I'd love to see more control in more date handling, HTML stripping. About views: partial layout views are simple, but great. Components are great, too. And as I don't buy the 'we should not have any view logic in views' argument, I'm quite happy with the Rails way. Although I also don't really buy the "auto-compiling on all layers"point, the fact that Rails really pushes hard a model/view/controller/helper separation and refactoring (low barrier on moving code from one area to another) makes the difference.
Another issue. The documentation is rough. Actually, there's a lot of information, just dispersed. Working with a few browser windows open is ok (RoR API, Pragmatic book, Howto + Search, ..)
Finally, I must admit that for the first time, I actually enjoyed writing a web app. Considering that I spent most of my work time developping client-side applications in a very different context, this is a very positive point in itself.