InfoQ Homepage Articles Why Would a .NET Programmer Learn Ruby on Rails?

# Why Would a .NET Programmer Learn Ruby on Rails?

You are an established .NET programmer.

You have built too many web applications with ASP.NET.

You have spent many sleepless nights trying to understand, in advanced detail, how to leverage the event-driven model of ASP.NET control cycle to work the way you want.

You have gone deep into using design patterns like Presentation Model or Model View Presenter to properly layer your application, to make it more testable and maintainable.

You think Ruby on Rails is just like any other technology hype and you should not pay too much attention to it until they have a respectable market share.

Welcome to my world. If you are still reading this article you have my admiration, because you are curious enough to take a peek at how I, after merely a month into Ruby on Rails as an experienced .NET programmer, will say many applications I had previously built can be done in less time and coding, only if I had known Ruby on Rails.

To be fair, I still think .NET is great. It has offered me a place where I am consistently delivering great business value to my clients. However, I constantly remind myself that there are multiple ways and numerous technologies to solving a single problem, some better than others. By being loyal to one technology stack, I am bound to unconsciously make biased decisions, which will ultimately hinder my ability to deliver business value. For example, knowing a dynamic scripting language like Ruby makes me think that I can write simple batch/shell automation scripts in much less time, compared to using a compiled language.

So why not?

Here are a few things I have found that are a new paradigm shift for me as a .NET programmer learning Ruby, and that I hope you will enjoy.

Do not compile.
In Ruby, there is no concept of compilation. Everything runs at runtime. Some say code compilation is a guard against careless coding, but you may want to look at how test driven development, continuous code integration (no, it is not daily build), unit testing (tests that do not hit databases or web services), and dependency injection help you to produce code of good quality and enable you to flexibly change your code with confidence. Compiling your code all of a sudden becomes less useful as a safeguard.

Dynamically enhance the behavior of a class - without a Decorator.
Using the Decorator design pattern is one way to do it in a typed language (another might be Template Method). However in Ruby there are many more ways to dynamically enhance a class easily, just by the fact that the language itself supports it, without complicating your object design structure. Consider module mixins, class_eval, instance_eval, etc. In fact, one can even at runtime programmatically define methods on a class. Code generation in a typed language might be a way to achieve it, but simply knowing that other options exist makes you a better problem solver.

Slim down your code base 10-20% by stripping off all type declarations and interface declarations.
Ruby is a dynamically typed language. You do not need to declare the type of a variable before using it, or make your method signature parameters properly typed. This means your code becomes slimmer at the expense of harder to debug and trace for errors, right? Not so, if you believe in unit tests and good object oriented design concepts. If your classes are small and cohesive, and their methods are short and well-intended, and well unit tested, then debugging and tracing for errors is easy.

Ajax it in no time.
Ruby on Rails built-in has support for script.aculo.us, an Ajax library that has tons of flashy Ajax effects to make your application much more user-friendly. In many cases, it is equivalent in ASP.NET to dropping a control tag onto your html pages, then write a method in your code-behind (in Rails it’s the Controller) to handle the Ajax web request on the server side, and your web page now supports Ajax functionalities like Google Suggest’s autocomplete, or drag-and-drop sorting on a web page. It’s that easy.

With Rails, you don’t need an O/R Mapper.
By applying a few naming conventions while naming your database tables and columns, and your domain model objects, you can forget about the pain of implementing an O/R Mapper on your own. Ruby on Rails does it for you. In the simplest case, all you need to do to add a field in your view and persist it is to drop a textfield in your html, add the column you want the value to be stored in to the appropriate database table, then watch your user-entered text being persisted into that newly created column in the database. Really, that’s all you need.

Using Ruby script to build/deploy/release is better than using NAnt.
The standard build tool in Ruby on Rails development is Rake. Rake uses Ruby, and that means you will use Ruby to craft your build scripts for your various build and deployment needs. As a language, Ruby is so much better when it comes to handling string manipulation, file and directory creation, including superior regular expression support. Think about how many times in your batch or NAnt scripts you have done things like: for each file with extension ".sql" in directory "a", copy them from server A to server B, then execute them one by one. If you hate the programming limitation of batch scripting, or you don’t like to script things in NAnt’s xml format, chances are you will like Rake.

No pain no gain.
There are a few hurdles I had to go through in learning Ruby. First, I had to go through the emotions of accepting the fact that it will take longer to find a new Ruby solution than to use an existing technology that I am comfortable in. This is by far the most painful experience. But, after a while, you will start cherishing the fact that you are starting to develop multiple ways to solving different problems, and that’s where the pleasure comes in. Secondly, reading about Ruby/Rails only gets me so far. Practically using what I have learned helps me to remember what I have learned. Remember, use it or lose what you have invested time to read about.

Stephen Chu is a software developer consultant at ThoughtWorks. He is an experienced .NET developer and has recently caught on with Ruby on Rails. You may read about his everyday new enlightenments in his blog at http://wwwstephenchu.com.

Style

## Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

• ##### Speed

by Maurice Zeijen /

• ##### Re: Speed

by Kevin Williams /

• ##### Re: Speed

by Maurice Zeijen /

• ##### Re: Speed

by Martin Miller /

• ##### Re: Speed

by anjan bacchu /

• ##### Re: Speed

by Jonathan Allen /

• ##### You're clearly biased

by nick martini /

• ##### Re: Speed

by Billy Billionaire /

• ##### Re: Speed

by Rex Rexroth /

• ##### Re: Speed

by Cameron Purdy /

• ##### What the hell is wrong with you people?

by Jonathan Allen /

• ##### Re: What the hell is wrong with you people?

by Stephen Chu /

• ##### Re: Speed

by Ugo Nwogwugwu /

• ##### Re: Speed

by nick martini /

• ##### Re: Speed

by Jonathan Allen /

• ##### Re: Speed

by Lex Luthor /

• ##### Re: Speed

by nick martini /

• ##### Re: Speed

by John Haynes /

by Floyd Marinescu /

• ##### Re: Please be respectful

by Greg Rebuck /

• ##### Re: Please be respectful

by Greg Rebuck /

• ##### Re: Please be respectful

by Floyd Marinescu /

• ##### Stability

by Iain Delaney /

• ##### Re: Installing Ruby on Rails

by nick martini /

• ##### Getting started with RoR

by Alexandru Stanciu /

• ##### Re: Getting started with RoR

by Leslie Hill /

• ##### Why .NET Programmers should not Invest Time Learning Ruby

by Sudipta Mukherjee /

• ##### Speed

Your message is awaiting moderation. Thank you for participating in the discussion.

What about speed? I heard that Ruby isn't the fastest script language.

• ##### Re: Speed

Your message is awaiting moderation. Thank you for participating in the discussion.

That's true. However, I don't think it's even an issue until someone develops a site in Ruby | Ruby on Rails that absolutely cannot scale further or perform fast enough. Once someone hits that wall, then it will be an issue worth addressing.

And yes, I do .NET by day and Ruby on Rails after hours. :)

www.almostserio.us/
www.castleproject.org/

• ##### Re: Speed

Your message is awaiting moderation. Thank you for participating in the discussion.

I have also done Ruby on Rails by night and I liked it. If you don't need a enterprise application then it is a very good choice to think about.

• ##### Stability

by Iain Delaney /

Your message is awaiting moderation. Thank you for participating in the discussion.

How about the fact that Ruby and Rails are both open, so that you're not at the mercy of one vendor? How many times has Microsoft changed their web app platform now? There was ASP, then VB 6 WebClasses, then .Net. Each time they changed everything was supposed to be better, faster, easier, but it just ended up costing more time and money.

• ##### Re: Speed

by anjan bacchu /

Your message is awaiting moderation. Thank you for participating in the discussion.

Hi There,

sometime soon, someone will be forced to publish some benchmark
results as compared to jAppServer2004(www.spec.org/jAppServer2004/).

Everyone knows that ruby is weak in threading and i18n. But for most customers, that is NOT a major concern.

Ruby/Rails might not work for 30-40% of customers for various reasons, but once ruby specification is firmed up(similar to .NET or JLS), then a Java implementation will likely be able to beat the C version within a year.

Extending existing JAVA/.NET applications will get easier using rails on .NET/JAVA implementations of Ruby.

Currently, deploying Rails applications seems strange to people who're used to deploying to a single appServer and little configuration work. Hopefully, with decent implementations in .NET/java, that will be a issue to be forgotten. With the amount of monitoring functionality in Glassfish/Java 5/Mustang, a rails application on Glassfish will be more popular than on, say Apache 2.x. With the noise of Java platform getting open sourced getting louder, deploying java based applications should become more easier.

BR,
~A

• ##### Re: Speed

Your message is awaiting moderation. Thank you for participating in the discussion.

As a .Net programmer, I haven't seen anything that makes me want to learn Ruby, yet. While this list is interesting, everything on it has a .Net equivalent. Time will tell which wins out.

Do not compile.

ASP.Net has that now.

Dynamically enhance the behavior of a class - without a Decorator.

Last I heard, C# 3 and VB 9 will have this.

Slim down your code base 10-20% by stripping off all type declarations and interface declarations.

I think that is a disadvantage. It makes it harder to determine what type is supposed to be passed by looking at the method signature. You also lose the ability to do some forms of static analysis.

But if you really want it, VB has had it since version 1.

Side note, C# 3 and VB 9 will give you strict typing for local variables without having to specify a type. This is mainly to support anonymous classes and query comprehension.

Ajax it in no time.

Atlas for ASP.net (It is still in beta)

With Rails, you don?t need an O/R Mapper.

This will be handled by the LINQ functionality in C# 3 and VB 9. (It is still in preview)

Using Ruby script to build/deploy/release is better than using NAnt.

MSBuild replaces NAnt. Though you don't need it for ASP.Net.

• ##### You're clearly biased

by nick martini /

Your message is awaiting moderation. Thank you for participating in the discussion.

Like this article's author, I do .NET stuff for a living and Ruby stuff in my spare time. I've been doing .NET for 5 years, and admit that it has it's uses; but I'm not closeminded about other technologies.

As a .Net programmer, I haven't seen anything that makes me want to learn Ruby, yet. While this list is interesting, everything on it has a .Net equivalent. Time will tell which wins out.

Starting the post off on the right foot! Yay it's a programming language bigot!

Last I heard, C# 3 and VB 9 will have this.

Oh hey wow, C# 3, when is that coming out? 2007? 2009? 2552? The point is, ruby does it NOW; we don't need to wait for another 5 iterations for actual useful features to get added to the language.

Atlas for ASP.net (It is still in beta)

Sure, Atlas sort of does lets you use AJAX. Poorly. And without any useful documentation at all.

This will be handled by the LINQ functionality in C# 3 and VB 9. (It is still in preview)

See previous comment about release dates. Also, I'm 100% certain that LINQ isn't going to be as as easy as "generate model." Try... "setup 900 xml mapping files, generate the class, CRAP I wanted that column to be a boolean gotta go back and change the type and redo all of my mapping."

MSBuild replaces NAnt. Though you don't need it for ASP.Net.

MSBuild isn't nearly as easy to use as NAnt. Microsoft really should have just bought NAnt (and NDoc while we're on the subject).

Let's not even start discussing the complete lack of a usable unit testing setup. If you want something that is actually integrated with the IDE you have to pay an extra few THOUSAND DOLLARS for msdn. Sure, theres NUnit, but it isn't nearly as simple to use as Rails' unit test framework.

• ##### Re: Speed

Your message is awaiting moderation. Thank you for participating in the discussion.

Jonathan,

You are exactly the kind of developer that the Rails community does not want. Keep defending .NET and stay the closed minded developer that you probably are. I have no doubts that you have invested a lot of time in .NET and struggled through the bad times. You probably have even come up with a proficient way to use/fight against the .NET framework to do anything productive.

Slim down your code base 10-20% by stripping off all type declarations and interface declarations.

I think that is a disadvantage. It makes it harder to determine what type is supposed to be passed by looking at the method signature. You also lose the ability to do some forms of static analysis.

Statements like I do not want to remove code and retain functionality is completely ridiculous.

Also adding frameworks like Atlas sounds exactly what you should use when the .NET stack has shortcomings for AJAX. Keep waiting for C# 3 and good luck to you! Please grow old with .NET but do not pollute the minds of real developers that look outside their immediate world. Please do not download Rails and continue waiting for new versions of .NET, C#, and promises that it will be the end all development environment for you.

We love you Jonathan,

Billy Billionaire

• ##### Re: Speed

by Rex Rexroth /

Your message is awaiting moderation. Thank you for participating in the discussion.

Jonathan is a complete moron. Half the things he talks about are "coming". So therefore, .NET does NOT have an equivalent. Microsoft is always behind the mark on technology and apparently so are their developers.

Congrats to Nick Martini and Billy Billionaire for keeping this fascist in check.

Rex Rexroth

• ##### Re: Speed

Your message is awaiting moderation. Thank you for participating in the discussion.

Jonathan is not a fascist. He's just a normal Microsoft-focused developer. That's completely normal behavior for customers that have only one vendor, one source of technology, one source of concepts and ideas. For example, replace nant with MSBuild? Why didn't Microsoft just adopt nant? (And why do they still use "make" internally? ;-)

Don't expect plebs to think on their own. That's too much, too quickly. Openness, democracy, transparency, independence -- these things take at least a generation to instill.

Peace,

Cameron Purdy
Tangosol Coherence: Clustered Shared Memory for Java

• ##### What the hell is wrong with you people?

Your message is awaiting moderation. Thank you for participating in the discussion.

The whole point of this article is to convince .Net programmers that they should try Ruby. As a typical .Net programmer, I was just saying those particular reasons were not interesting to me.

Instead of giving me other reason's why Ruby might be of interest, you call me a moron and a fascist. That is not the way to win over people.

Is this going to be the culture of Ruby? Is hatred of all things Microsoft your definition of openness and free thinking? Do you treat Java programmers the same way?

There is no reason to insult people just because they bought their hammer from a different company than you.

• ##### Re: What the hell is wrong with you people?

by Stephen Chu /

Your message is awaiting moderation. Thank you for participating in the discussion.

I do not think Jonathan deserves any of the opinions he drew here. I was in fact just like him a few months ago, doing most of my programming in the .NET world. This 1,000-word article merely touches anything to convince .NET programmers to try Ruby. I only wrote about 5 or 6 points of interests I personally find interesting in my due course of learning Ruby/Rails. Now when I look back, I probably have accumulated way more than 50 points of interests:

+ How is a web framework without using event-driven model implemented/work?
+ How does a framework that supports database continuous integration work? You can rollback the state of your database in development to a certain point in time by using migration. How?
+ How far can code generation get you?
+ You do not have the ability to overload a method in Ruby - yes - the what?
+ You can easily reopen classes of the framework to override almost anything you want. Remember the pain of creating wrapper interfaces/classes that wraps .NET Framework's sealed classes?
+ There is no such concept as abstract base class. All classes are concrete. So do you still need those factory patterns?
+ Dependency injection becomes easy now that you can reopen classes, so would you still need to prefer constructor-injection over anything else?
+ Everything is an object: including a class. Class methods are instance methods of a class. A whole new dimension of thinking about what kind of behaviors should or could go in there.
+ Since everything is an object, including integers, strings, and any custom value objects you create, is the Null Object pattern still needed?
+ You can at run time evaluate Ruby code stored as a string very easily, without rolling your own parser. That is the fundamental of creating a DSL (domain specific language). Everyone is creating (or if you agree, programming) complicated Excel spreadsheets, using Excel syntax. How about create a DSL that the business is familiar with to aid their everyday task?
+ And the coolest of all, turn a Mac into a Star Wars Jedi weapon...

Like many things in life, until you have a second option, you always believe what you know is surely the best ever. All of the above are cool ideas, and many of which I will consider bringing them from the Ruby/Rails world to my future .NET projects. It does not have to be "pick .NET or Ruby" at all.

• ##### Re: Speed

Your message is awaiting moderation. Thank you for participating in the discussion.

I honestly think you guys are the ones that are biased. Jonathan just sounds like he likes the tools he knows and doesn't see any reason to switch.

As a Ruby developer I'd just say "More power to you Jon, I'm comfortable where I am too and you don't have to join me." And that's all. Fascist? Complete moron? Where did all that come from??? Keeping him "in check"?

Did you think only one point of view would be represented here? What utter conceit!

• ##### Re: Speed

by nick martini /

Your message is awaiting moderation. Thank you for participating in the discussion.

I honestly think you guys are the ones that are biased. Jonathan just sounds like he likes the tools he knows and doesn't see any reason to switch.

If any of these latter comments are aimed at me, I'd suggest re-reading my comment; at no point in it did I suggest Jonathan was a complete moron. He obviously isn't, since he is familiar enough with .NET to bring up his points.

I did suggest that he is a programming language bigot; I apologize, that may have been a little harsh, especially considering a lot of the Rails people I know of are far worse.

Is hatred of all things Microsoft your definition of openness and free thinking?

I work at a Microsoft shop and quite like most of their products, especially the newer Visual Studio and SQL Server products (I'm still pretty ticked off over Vista, but that is a story for another time). So, I guess the answer to this is "no."

Do you treat Java programmers the same way?

No, we do Java here as well.

• ##### Re: Speed

Your message is awaiting moderation. Thank you for participating in the discussion.

If any of these latter comments are aimed at me, I'd suggest re-reading my comment; at no point in it did I suggest Jonathan was a complete moron. He obviously isn't, since he is familiar enough with .NET to bring up his points.

No, but someone else did merely because I am willing to wait for MS to provide some things that Ruby already has.

The thing is, moving to Ruby is too expensive for me right now. The cost in learning time doesn't cover the productivity gain at this time. Ruby really needs some killer features that MS isn't going to offer if you want me to use it as my production language.

• ##### Re: Speed

by Lex Luthor /

Your message is awaiting moderation. Thank you for participating in the discussion.

No, but someone else did merely because I am willing to wait for MS to provide some things that Ruby already has.

Hmm. Well, let's check our definitions:

Moron: A stupid person; a dolt. (source: dictionary.reference.com/browse/moron )

Ok I can see how this is possibly a bit harsh, if taken literally, and not in the more colloquial sense:

Moron: A person lacking in the areas of significant cognition or logical constructs. (source: moron.urbanup.com/326511 )

Hmm.

Ok let's analyze the next one.

Fascist: A reactionary or dictatorial person. (source: dictionary.reference.com/browse/fascist )

Well, ok then. And the connotation?

Fascist: Someone who believes in a totalitarian state rule by a supreme leader (dictator) who controls everything possible and treats people harshly

Hmm. Well, maybe a stretch in this instance, but probably not too far off from where Microsoft's (former?) Cheif Architect would prefer.

The point is, any time you come out in defense of a known anti-competetive establishment, you're bound to get backlash, and quite honestly, should be prepared for it.

That said, almost all of your rebuttal was in reference to what "will be" rather than not only "what is" but what has been for quite some time in Ruby on Rails (over a year in production capacities).

Let's take a look again, as objectively as possible:

Do not compile.
ASP.Net has that now.

While I don't claim to be an 'expert' in all things .NET, I have used it, own VS2003 and VS2005, and have read a few books on ASP.NET. The point is, even ASP.NET's in page 'code behind' isn't the same thing as what's done in Ruby on Rails. Really -- go try it out before assuming it's the same.

Dynamically enhance the behavior of a class - without a Decorator.
Last I heard, C# 3 and VB 9 will have this.

There are multiple problems here. 'Last I heard' isn't a valid point of reference, yet someone will read it as such. Not very responsible unless you add a disclaimer. Secondly, you're assuming that 'this' is the same thing as Ruby's dynamic ability to add features, methods and attributes to a class at runtime. Finally, you alude to a product that currently has no timeline for a company that is notoriously bad at shipping products on time.

Slim down your code base 10-20% by stripping off all type declarations and interface declarations.
I think that is a disadvantage. It makes it harder to determine what type is supposed to be passed by looking at the method signature. You also lose the ability to do some forms of static analysis.

While you're certainly entitled to your opinion, there is nothing in a statically typed language that guarantees any better analysis. For example (excuse the Java -- again I'm not .NET):

public String sendMessage(String s1, String s2, String s3) { /* do stuff */ }

Care to take a guess what that does and what it returns? ;)

Ajax it in no time.
Atlas for ASP.net (It is still in beta)

I believe the issue here is 'time'. Sure Atlas can do it, heck developers have been doing AJAX-like stuff for years. Just not as seemless as most basic AJAX functions in Rails. (by contrast, this is a fair amount of code and requires custom JavaScript: atlas.asp.net/docs/Walkthroughs/GetStarted/Basi... )

With Rails, you don't need an O/R Mapper.
This will be handled by the LINQ functionality in C# 3 and VB 9. (It is still in preview)

Again, an assumption that LINQ is remotely close to ActiveRecord. Basic ActiveRecord classes require no custom code and no code generation to product basic CRUD methods. By contrast, LINQ looks like an abstraction of SQL (not unlike Hibernate's HQL with a smattering of the Criteria API -- source: en.wikipedia.org/wiki/Language_Integrated_Query).

Using Ruby script to build/deploy/release is better than using NAnt.
MSBuild replaces NAnt. Though you don't need it for ASP.Net.

Again, you're assuming that even MSBuild is the same thing as Ruby/Rails 'rake'. I know very little about NAnt or MSBuild (but I know a ton about Ant), and I do know that Ant is no where near the tool that 'rake' is. I can migrate my database (and data!) from one version of a schema to a new one (i.e. add tables, remove/add columns, etc.), run my unit tests, or copy my application to a new location from the same tool, without almost no code or configuration.

The thing is, moving to Ruby is too expensive for me right now. The cost in learning time doesn't cover the productivity gain at this time. Ruby really needs some killer features that MS isn't going to offer if you want me to use it as my production language.

Now if you had just said that before all this started, we probably could have avoided the diatribes. :)

The bottom line is, when defending a well known, and largely despised organization with promises and prognostications backed by baseless assumptions, you're nearly begging for snide remarks to ensue.

• ##### Re: Speed

by nick martini /

Your message is awaiting moderation. Thank you for participating in the discussion.

The thing is, moving to Ruby is too expensive for me right now. The cost in learning time doesn't cover the productivity gain at this time.

Yeah, I'm with you there; we just renewed our MSDN subscription, so I really doubt my boss would embrace a change. I'm also not as comfortable with Rails as I am with ASP.NET (I've used the latter for 5 years, and the former for 5 months), so I don't think switching horses in the middle of a development cycle would be a great idea.

And I'm just going to pretend that I didn't see Lex Luthors post.

Your message is awaiting moderation. Thank you for participating in the discussion.

Guys, I'd like to ask you to please be respectful. InfoQ is a serious site for serioes discussion. Putting out one's opinion respectfully is ok but resorting to name calling is not.

Floyd
InfoQ Co-founder

• ##### Re: Please be respectful

by Greg Rebuck /

Your message is awaiting moderation. Thank you for participating in the discussion.

Thanks Floyd, and nicely handled. Hey, didn't I meet you at Canada on Rails? I of course remember you from years before, but I'm not sure what site(s).

It would appear that the jihad flame wars will NEVER end on languages, OSes and machines (even browsers!) Even if Jonathan had been trashing Ruby/Rails, which I don't see based on his comments, who cares? It's his right. I think he was trying to see the potential of something new/different and probably has much vested in his current situation. Totally understandable, his trepidation. I'm in the Java world but rapidly moving towards Rails. Give up Java completely? At my own peril.....for now.

I see a connection between Rails people and Mac people; and make no mistake, OSX is the development platform of choice. It was mind-blowing how many Macs there were at Canada on Rails. In the DeRailed group (Denver Rails) I'm the only one of probably 20 or 25 guys who bring laptops, that actually has a PC.

Oh yeah, Rails->Mac connection. It's always been amazing how fierce the Mac-heads have been to defend their [previously] undersupported platform. Personally, while I've always liked the Mac interface pretty much, it was always a nightmare to develop on; until OSX. I still don't plan to switch over anytime soon but I can understand why people like a real UNIX-backed, aesthetically superior (especially to Linux!) machine.

Oh, yeah, the connection. :-/ I see so many similarities in behavior with the Rails-heads, a group of which I would say I'm moderately connected. Fierce defenders with an attitude, and definite arrogance. This is not all bad, in fact I totally admire the passion! But I could see how the extreme "join-us-or-die!" approach will certainly turn off some would-be seekers who are genuinely interested in exploring to find the best tools for the job! While DHH's "F*** YOU!" rant was in some ways amusing (I still have the mp3 recording) it's not going to score many points outside of the counter-culture groups, especially not serious business people.

Mr. Chu has it completely right: "best *business* value for his clients." I think many developers actually believe the drill is more important than the hole that it creates. I know it's tempting to get caught up in the technology itself, but what's really important in life???? I'd say the life, liberty and the pursuit of happiness deal was a pretty good start.....love your neighbor wasn't bad either. :)

• ##### Re: Please be respectful

by Greg Rebuck /

Your message is awaiting moderation. Thank you for participating in the discussion.

Floyd, of course, TheServerSide! And I probably encountered your Design Pattern book as well.

Greg.
("oh by the way, which one's Pink?")

• ##### Re: Please be respectful

Your message is awaiting moderation. Thank you for participating in the discussion.

Agreed. I think the Ruby community should seek to distinguish itelf through technical excellence and results, not through aggression. Then they will be a cultural draw that could be quite compelling, like Java was back in the early days.

• ##### Installing Ruby on Rails

Your message is awaiting moderation. Thank you for participating in the discussion.

I find it is interesting to learn Ruby on Rails. I am working in .NET now.
But how can I install this without affecting my current dev environment. I don't want to install Apache server or MySql on my machine? Any help?

• ##### Re: Installing Ruby on Rails

by nick martini /

Your message is awaiting moderation. Thank you for participating in the discussion.

I find it is interesting to learn Ruby on Rails. I am working in .NET now.
But how can I install this without affecting my current dev environment. I don't want to install Apache server or MySql on my machine? Any help?

Check out Instant Rails. It doesn't change your system in any way; quite handy for this sort of thing.

Locomotive is the same thing, but for Mac users. I prefer doing Rails code on the Mac, but really only because I can't get TextMate for windows.

• ##### Re: Speed

by John Haynes /

Your message is awaiting moderation. Thank you for participating in the discussion.

The thing is, moving to Ruby is too expensive for me right now. The cost in learning time doesn't cover the productivity gain at this time. Ruby really needs some killer features that MS isn't going to offer if you want me to use it as my production language.

Being a 5 year .Net guy married (was) to the MS way... I too made this argument when I did not have any actual RoR experience.

Even in my initial Rails learning-curve, my productivity was greater than my productivity in asp.net.

With Generators, Scaffolding, Migration and Capistrano... You absolutely can not objectively argue that .Net is a superior choice.

I've been using Rails extensively for the last 3 months... It's now incredibly painful to return to c#. I've going to begin using IronPython for all my .Net requirements now.

Another observation that a co-worker of mine pointed out the other day...

When you want to start getting real creative with abstraction. .Net Compiler just starts barking at you. C# guys actually feel they've accomplished something (been there done that) when they get it to successfully compile, thus, due-dilligence is not given to run-time logic becuase of the mental-fatique incurred by successfully getting your software to compile. With Ruby that is simply not the case.

I haven't even mentioned blocks, iterators, mixins and all the language productivity elements that keep me from having to implement CompareTo on every friggin type in the book, much less meta-programming. Where I can do runtime evaluations without resorting to reflection.

I'd suggest that you give it (Ruby/Rails) an honest objective effort, because I was exactly where you are just a few months ago.

• ##### Getting started with RoR

Your message is awaiting moderation. Thank you for participating in the discussion.

I'm a .NET experienced developer myself and I'm open to new technologies. Could anyone point out some good training resources and the tools needed to start working with RoR? What's the best IDE to use?

• ##### Re: Getting started with RoR

by Leslie Hill /

Your message is awaiting moderation. Thank you for participating in the discussion.

I highly recommend the tutororials from: www.buildingwebapps.com/

• ##### Why .NET Programmers should not Invest Time Learning Ruby

Your message is awaiting moderation. Thank you for participating in the discussion.

"Do not compile."
--Think Speed! Think Compiled Programming Languages. Ruby din't yet beat the speed for C,C++, or even Java (Slowest of the lot) And It is lot more easy to code in C, because I know it more than 10 years now. And I can't think anything I can't do in C that I need Ruby for. So No I am not learning Ruby anytime soon unless my boss wants me.

"Dynamically enhance the behavior of a class - without a Decorator."
--- This is perfectly pole apart from what we understand for OOP. Think of a Dog starting to fly suddenly because you added the behavior dynamically. C++/Java allows something called Operator Overloading. Using that you can transform one object to another. When you add a new behavior to your already existing class, Dude, that's a different class altogether. To understand more, please read www.consulttoday.com/Metamorphosis1.pdf

You compared "Decorator" pattern with "Dynamic" behavior addition capabilities. Which are as different as "Saw" and "Hammer". The first one allows you to create an illusion of a single object (which is actually made up with several others. That's decorating). The later however is a fantasy and insane approach.

Slim down your code base 10-20% by stripping off all type declarations and interface declarations.
--- First off, getting the type out of any declaration is a highway to type-unsafe programming. A programming language has to be highly predictable. In order to be predictable it needs type checking. This type checking is not there in Ruby. Errors can be enormous. I can easily break any ruby code as a client programmer. Just imagine a method that takes 1 integer and 2 double values in order and I passed 1 string and 2 integers. How the hell the method would know what's going on?

Ajax it in no time.
-- Ajax Control Toolkit of .NET is far more better and well supported.

With Rails, you don’t need an O/R Mapper.
--- Neither you do in .NET Do you know about DatabaseProviders? DataNavigator and DataBinder controls?

Using Ruby script to build/deploy/release is better than using NAnt.
-- With .NET MSI, InstallShield 11 can you match Ruby's Rake? I don't think so.

With all these reasons, I am not learning Ruby anytime soon..
Also if you want to see why I don't like Ruby visit my blog at oopboy.blogspot.com/

Long Live C,C++,C#,Java,VB.NET,Perl,Python

• ##### Re: Speed

Your message is awaiting moderation. Thank you for participating in the discussion.

So do think Hulu.com does not scale? Or is slow? Hulu rolls on rails, which is now a day job...

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Is your profile up-to-date? Please take a moment to review and update.

Note: If updating/changing your email, a validation request will be sent

Company name:
Company role:
Company size:
Country/Zone:
State/Province/Region:
You will be sent an email to validate the new email address. This pop-up will close itself in a few moments.