.NET developer Stephen Chu gives us some insight into his transition to Ruby on Rails programming.
"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."
Community comments
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 nick martini,
Re: Speed
by Jonathan Allen,
Re: Speed
by Lex Luthor,
Re: Speed
by nick martini,
Re: Speed
by John Haynes,
Please be respectful
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,
Installing Ruby on Rails
by Renil Abdulkader,
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
by Maurice Zeijen,
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
by Kevin Williams,
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
by Maurice Zeijen,
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
by Jonathan Allen,
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.
ASP.Net has that now.
Last I heard, C# 3 and VB 9 will have this.
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.
Atlas for ASP.net (It is still in beta)
This will be handled by the LINQ functionality in C# 3 and VB 9. (It is still in preview)
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.
Starting the post off on the right foot! Yay it's a programming language bigot!
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.
Sure, Atlas sort of does lets you use AJAX. Poorly. And without any useful documentation at all.
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 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
by Billy Billionaire,
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.
Your response:
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
by Cameron Purdy,
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?
by Jonathan Allen,
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
by nick martini,
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.
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.
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."
No, we do Java here as well.
Re: Speed
by Jonathan Allen,
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.
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.
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:
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.
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.
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):
Care to take a guess what that does and what it returns? ;)
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... )
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).
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.
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.
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.
Please be respectful
by Floyd Marinescu,
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
by Floyd Marinescu,
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
by Renil Abdulkader,
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.
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.
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
by Alexandru Stanciu,
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?
twitter.com/ducu
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
by Sudipta Mukherjee,
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
by Martin Miller,
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...