Monday, March 31, 2008

Hope and Change

Enterprises are comfortable to use Java or C# as there are corporate backings for these languages. But for ruby there are no corporations backing it up. In this case, I was not sure how successfully Ruby will become in enterprises. I do not think a big health care system will be implemented using Ruby in near future. I really wanted to see Ruby become more mainstream, so we can build applications that have more impact on people's life rather than just social network site. That is why I wrote my previous blog "Who is responsible for Ruby?" to get an idea of what others think.

After talking to some of my friends and thinking over this weekend, I feel Ruby will soon become mainstream. Enterprises will start using ruby. But I think this change will not come in a traditional way. This change won't happen because some big corporation started backing up ruby. I think this change will happen because of Ruby community. Eventually enterprises have to start using ruby because of its wonderful developer community otherwise they will be left out.

To sum it up,
"Ruby is a grassroots movement to change Enterprises"

Wednesday, March 26, 2008

Who is responsible for Ruby?

In Qcon London 2008 conference , I attended a panel discussion for what type of projects should we use rails. As one of the audience mentioned during the discussion, that all the panel members were pro-ruby :) It is not a big deal, but I just thought it was funny. I have lot of respect for all those panel members. 

The discussion for some reason was totally off topic. Probably the discussion about what types of project can be implemented using rails happened like 5% of time. Most of the discussion was about why nobody from ruby community was worried about ruby running so slow in Windows. Someone from audience mentioned if Ruby community wants ruby to become mainstream and accepted as a language by all enterprises, it should run faster in Windows. Panel members said that they do not really care that much about ruby getting accepted in Enterprises. They told that they are doing it because Ruby as a language makes easy for them to solve the problems.

I totally accept that. If I find a language that is helping me to solve a problem more eloquently, than I will use that language. I do not care whether that language will be accepted by all big enterprises or not. If there is someone smart in those enterprises, than s/he will decide what language is good for solving their particular problem.

But one question enterprises will be asking, "who is responsible for RUBY ?" so that they can blame them when something goes wrong.

Tuesday, March 25, 2008

5 Reasons why I hate Basecamp

I have been using Basecamp for my project management for sometime now. I have to say I hate it. I really like what 37signals guys do, but I was disappointed with Basecamp.

Without any further ado, let me list 5 reasons why I hate Basecamp

1. Navigation

I get lost so easily in Basecamp. There are no breadcrumbs in any pages. For example, I have a page for our iteration planning where we list all the stories that go into that iteration. These stories are listed as links to other writeboards in the project. When I click on any of these links to view a story there is no easy, intuitive way to navigate back to the iteration planning page. When I click on browser back button, it just refreshes the current page. The page has a link to "Go Back". When I click on that click instead of taking me to the iteration planning page, it takes me back to list of writebroads. I am not sure if this is some configuration problem from our side. But again I don't think this should be a configuration.

2. Loading Writeboards is very slow

3. Search is useless

Search does not search writeboards.

4. Wiki support is aweful

Compare to Confluence or other wiki tools that I have used, Basecamp support for wiki text is inferior. Even Wikipedia has better support.

5. Does not handle big projects well

Organizing things in Basecamp is a pain. I have no way to tag or search writeboards.

Einstein had a famous quote - "Make everything as simple as possible, but not simpler" . I think they missed the second part of that sentence.

Sunday, March 23, 2008

Ruby is more object oriented than Java!

This simple example proves that Ruby is more object oriented than java.

To find absolute of a number,

in Java we need to use a separate class - Math.abs(-24)


in Ruby abs functionality is built in the number - -24.abs

Saturday, March 22, 2008

REST and standards

I really liked a comment left by an anonymous writer for my "Save REST" post. I think it is worth to mention it again in this post.

True. But can we please get an industry accepted de facto technique for securing REST based services?

It seems that most REST services either rely on the non-RESTful cookie/session based approach with a login URL to establish the session, or they implement a custom technique using the Authorization header.

The Authorization header is clearly the right approach, but we need a de facto standard technique for using it. Something along the lines of Amazon's S3 approach would probably be ideal.
I am not sure having a committee and coming up with a standard is a good idea. For example, take W3C standards for HTML. It did not do anything good. We still have to tweak our CSS for web pages to work across multiple browsers. Another example, our dear WS-DEATH * standards.

I think instead of having a committee for coming up with a standard, we should all start working on different implementation of REST authentication. I think a simple solution will prevail and all the other solutions will fail. Once the simple solution is used by many people , than it will automatically becomes a standard.

Am I dreaming? Let me know what you all think?

Friday, March 21, 2008

Disappointing Business Natural Languages Talk

Jay Fields presented "Business Natural Languages" in QCon London 2008. I have tried to do natural language processing using Rules Engine and failed badly. I am not sure whether the Rules Engine implementation I selected was not a good one or just Rules Engine in general are not a good choice for natural language processing. Anyway coming back to the presentation. I was so excited about this presentation and attended it. I have to say I was little disappointed. First of all , I think I have seen this presentation like a year ago ( I might be wrong ) . I am surprised that nothing has changed for a year in this field. Jay used frequent flier example for showing how we can do BNL. I am not convinced with that example. Remember Petstore made Entity Beans look like solution that we were praying and waiting for. The frequent flier example was so simple. I am not against anything being simple but businesses are not simple. In his example , the rules he had were somewhat like,

  • If flying in Class B,C than allocate 2 Points
  • If flying in Class D than allocate 1 Point
The example simplified the business problem so much that it is not useful. I would like to see rules that are contradicting each other. So much research has been done in Rules Engine to handle Contention , Contradictions etc. I do not think we can ignore these things, as Businesses are not that simple.

It was nice presentation to show what is possible with BNL, but that is where it stops. I would like to see some more realistic rules.

Thursday, March 20, 2008

Static Vs Dynamic Language

I find traversing applications written in static languages (Java) easier than traversing applications written in dynamic languages (Ruby) . When I spoke with some of my co workers, they felt otherwise.

I wanted to know what everyone feels. It will be great if you could post your experience as comments to this post.

Running Software

It does not matter what technologies or methodology you used to build your software and how much test coverage you have if you do not have a running software.

Race to running software.

Wednesday, March 19, 2008


I request everyone let WS-* be WS- DEATH * and we will just leave it that way. REST is a change that we were looking for so long to make a decent working SOA. Lets not try to make REST as part of WS-* so that we can easily convince our organization to use REST for their services.