On the Hunt for a New Programming Language

When it comes to programming on the modern-day GUI (post-DOS) platform, the vast majority of my coding has been, in order of experience, using T-SQL, VBScript in ASP, and about equal parts classic VB (v3.0 to v6.0) and VB.NET. As you can see from my order of experience, I’m really a database guy, and since the beginning of the web I’ve always viewed the web as somewhat of a database publishing environment (anyone remember the DOS product dbPublisher Pro from Digital Composition Systems?) What’s more the web allows a potentially infinite number of people to use a developer’s database publishing apps without any extra effort to distribute them. Finally, the web provides ability to capture evidence the apps were run, how often, and by how many people. Is it any wonder I have more of inclination to develop for the web as opposed to desktop applications? Back during the period from 1994 to 2006 when I ran VBxtras/Xtras.Net where we where a reseller of ActiveX controls and then later .NET components, I never really thought about the cost of add-on components. Almost anything I wanted to play with I can get an NFR (not-for-resale) copy just by sending an email or picking up the phone. Although I still have many of those relationships from a decade+ in the business, I hesitate to ask for NFRs these days except from my really close friends simply because this business I’m in today has nothing to do with benefiting those people. So numerous facts have me giving up on my prior five year assumption that I would someday learn VB.NET at an advanced level and have me instead actively considering alternatives:

As I just stated, the fact I now have to pay for third party components and tools means I’m paying more attention to cost of acquisition,

My recent favorable impressions of open-source developer tools and components, on par with some of the best tools ever sold by Xtras.Net,

Completely preconfigured stacks (including O/S) that are becoming available for download as a VMware appliance,

Recognizing that Ubuntu’s has an approach strategic enough to result in Microsoft being profiled in a revised edition of Clayton Christensen’s Innovator’s Dilemma as yet another example of why great companies loose their leadership position,

By the way, even though I dislike ASP.NET, I do still really like the .NET Framework and programming model. Oh and a note about the first point; whereas there is good open-source tools available for .NET, the operative word is "tools" not components. When you compare what’s available to freely use for .NET compared to what’s available for any of the "P"s (Perl, Python, and PHP), .NET just can’t compare, at least not in depth or breadth. Of course being commercial products the .NET third party components are more polished and of course have commercial support available. However, unless you are big company that needs to CYA and have a throat to choke, those are often dubious benefits especially when you consider the benefits of open-source (i.e. source code, and the ability to fix something and contribute it back so you’ll know it stays fixed!) Anyway, I could write for hours on the pros and cons for open source vs. commercial developer components and tools but that’s not the subject of this post. The subject is about which language I will focus the majority of my future attentions on learning and using, and I’d love to get your input before I decide. Here are the current contenders:

All the major web apps I mentioned above seem to be built using PHP and I’m currently running many of those apps, PHP is pretty similar to the ASP that I know so well, it’s web-specific, there is a huge support community, it runs on both Windows and Linux, and every Linux web host known to man seems to offer it preinstalled. However, there seems to be lots more crap PHP code examples littering websites than good PHP code examples making it harder to learn so it might be hard to seperate the wheat from the chafe, it is not easy to configure on Windows Servers (especially at a shared web host), and no one individual framework seems to have gotten the lion’s share of the market attention so picking one would be a crap shoot. Oh, and it uses those infernal semi-colons just like C#.

Ruby and it’s framework Rails have gotten tons of attention and it seems all the cool kids are doing it, especially lots of the Web 2.0 startups, it is very database-centric, has very elegant URL mapping functionality, and it seems you can get web apps built really fast using it. And Ruby.NET is also on the horizon meaning I might be able keep my toe in .NET. However, the community comes across as just a little bit too religious and I’m generally alergic to that, AFAIK it doesn’t run on Windows, or at least not for shared hosting. Plus I’ve had people I respect tell me that Ruby doesn’t have nearly as many users as the "P" languages, that Rails it not nearly as mature as its purported to be, and that Rails makes simple thing simple but complex things extremely difficult. And the number of available web hosts that offer it is quite limited.

Unlike PHP, it seems Python is well suited for both web and desktop apps, which might come in handy from time to time, and a shipping IronPython means that I definitely can keep my toe in .NET. The Django framework seems to be a little more mature and have a little less religion than RoR, and Django also has nice URL mapping functionality, albeit slightly less elegant than RoR. And it seems to run equally well on Linux and Windows. However, Django seems more document publishing-centric and less database-centric, there are very few web hosts that support DJango, and I’ve heard it is a real bitch to get working on a web host.

But then again, maybe I will stick with VB.NET. The Castle/Monorail project is supposed to be a lot like RoR, and I’d even have the option to use Mono on Linux. However, the third party tools are definitely wanting, most web hosts haven’t a clue what Mono is, and they coded Castle/MonRail in C#, so I’d always be dealing with semi-colons…

I could stick with ASP, which I still like, and learn JScript to replace VBScript, the latter of which just has too many limitations when compared with the other current options. This clearly also runs on Windows and any Windows web host will support it, and I already know Windows backwards and forwards. On the other hand, I’ll need to use ISAPI Rewrite for clean URLs, JScript on ASP it has no future and few code examples on the web, and what third party components and tools (to speak of…)?!?

I could also use develop VB.NET objects and call them from ASP; that’s what we last did at Xtras.Net (and I think that is what they are still doing, last I checked…) Of course, calling .NET objects as ActiveX controls just doesn’t feel right, and again there’s that third party component and tools problem…

Of all the teams working on tools for developers over at Microsoft, the PowerShell team run by Jeffrey Snover is the only one that gets me excited anymore. And in an email from him (or was it a comment on my blog, I don’t remember exactly) he said that PowerShell can do web, and will be able to do it more easily in the future. On the other hand, it’s not here today, and what if webified PowerShell is just another way to do rubbish ASP.NET instead of what it should be, a url-based object-selector-and-invoker like Django or Rudy on Rails. And what’s the chance it will ever run on Mono…?

Other:

Is there anything else do consider…?

At this point I should probably explain what I’m not considering, and why:

Although I was really impressed at a Sun Tech Days recently here in Atlanta , even the Sun people were all over dynamic languages with praise, like Jython and JRuby. And though I was impressed with NetBeans 5.5, all the other "enterprise" baggage like J2EE and Servlets and JSP Custom Tags gives me the feeling I’d be jumping out of the frying pan and into the fire. Oh, and Java uses those infernal semi-colons too.

One word: semi-colons! Sorry but if I’m going to go .NET, it’s going to be VB.NET (or IronPython). VB.NET is so much more natural to me than C#, and there are things you just can’t do in C# that you can do in VB.NET related to using "implements" on a method in an inherited class (I ran into that limitation of C# compared to VB.NET on a project several years ago where I was managing a pair of interns coding in C# and they hit a wall because of that limitation. I can dig it up if anyone cares, or better yet, can someone who knows the specifics explain it in comments?)

Although my partner on TooliciousBen Coffey who is a devoted disciple of Perl will cringe to hear this (yet again), I can’t quite get my head around Perl, and they tide, at least today, is away from Perl. Of course Ben claims that will all change with Perl 5.0, but to me that remains to be seen and I’d rather go with a bird in the hand (i.e. one with a lot more active current user base) than a bird in the bush. But who knows, they say you should learn a new language every year; at any rate if he’s right maybe I’ll try and pick up Perl 5.0 in around 2012. :)

So there you have it: my potential choices and non-choices. Any thoughts I which I should choose? Any and all input will be appreciated and considered seriously.

27 comments ↓

Statistically speaking you will use something MS made. The overwhelming majority of windows developers only use languages made by MS. Even when clearly superior alternatives exist (see delphi) windows developers by and large will ignore it and opt for whatever MS puts out.

Having said that let’s presume that you will go against history and use a non MS language here is my advice.

Use rails. While everybody has an ORM activerecord has more features and is easier to use then all of them. Rails has an awesome testing framework. Capistrano is the best deployment system out there. Migrations rock.

It really is head and shoulders above everything else out there including ASP.NET.

malcontent: Now you wouldn’t be stereotyping, now would you? ;-) (You should note has much I’ve been ranting about Microsoft and ASP.NET lately…)

But seriously, thanks for the comment. Can I assume you are a Rails developer? What did you use before? Have you programmed with ASP.NET? Do you have any experience with PHP or with Python? I will of course hold my thoughts so as not to bias anyone else’s comments.

John S: You are absolutely correct, I haven’t looked at Perl too closely; there are only so many hours in the day. If version 5.0 came out years ago, it must have been 6.0 that Ben referred to. But it really doesn’t matter because there are numerous things I’m looking at and I already know that Perl doesn’t suit *me*. I am not saying anything negative about it, just that it is not my preference. I far prefer something that has an active community where there is currently a lot of attention. I know that Perl has had an active community in the past, but in my view there is more activity in other areas today. Besides that, I’m looking for a language that is more readable, like VB.NET compared to C#, one that doesn’t use lots of complex idioms which I know Perl does. I guess in summary, I think Perl is for a more skilled programmer than I will ever be.

Mike: I was a Java developer for the last 10 years, a Perl developer prior to that, and have used Python and PHP in the past, and now I develop most of what I do in Ruby. Ruby is definitely not a perfect language but it for the most part it is a joy to work with, and Rails really is a much better web framework than most of what’s out there.
<p>
At work we deploy Rails apps on Windows using Apache as a proxy to mongrel (which is a fast server written in a mix of C and Ruby) and it works OK. It is not as performant as the same setup on Linux, but it’s usable. There is work going on right now to get a new IIS FastCGI processor with one of their primary goals being to execute Rails apps, so we’ll say how that goes. Also, there is a <a href="http://www.sapphiresteel.com/">Rails IDE built on Visual Studio</a> which may be of interest.
<p>
In summary, you should give Ruby a try. If nothing else then perhaps you will find a useful tool for your toolbox, even if you don’t end up going whole hog with it.

If I had 10 million dollars (ie didnt have to work), I’d embrace Ruby, albeit Rails is not perfect, the language is so so beautiful. But Ruby/Rails is simply not prepared for enterprise for a lot of reasons, so I’d stick with .Net platform and C#.

I’ve deployed Django on Linux and Windows without problems. The point you raise about it being "document publishing-centric" is a myth that stems from the fact that Django evolved in a newspaper publishing business. However, you can build any conceivable "non-CMS-only" app with it, the database access API is powerful and complete. Off the web, Python plays well as a general-purpose language overall; you’ll have fun with it. It’s mature and solid in a Windows environment too.
Of course, don’t take anyone’s word for anything — try it out yourself. Just my 2c.

Anthony Eden: Are there any good (an thorough) tutorials on getting Ruby working on Windows. I currently work from home and w/o other experienced programmers around to solve the installation and integration issues which I don’t enjoy and have never been good with, an important criteria for me is that it doesn’t require rocket science to get set up and use. Also, I will probably try to learn everything I listed in some form or another, for example I need to learn some PHP as I can’t write WordPress plugins using Ruby or Python and I’m sure there will in the future emerge a great apps on RoR and Django I want to run, but as there is only so much time in the day one will get the lion’s share of my attention.

hammet: I’m actually not 100% sure the distrinction between ASP.NET and WebForms; are they not one and the same? If you can detail the distinction, I’ll clarify my feelings.

I’ve run both dasBlog and DotNetNuke as well as tried to run .Text/CommunityServer and I can’t be more unhappy with them and the HTML they generate and the architecture choice they made (both because of what’s typical fo ASP.NET and because of what is prescribed by ASP.NET.) OTOH, I have run Mediawiki, vBulletin, and WordPress and think they are much better web apps then anything I’ve seen on ASP.NET.

As for being "enterprise ready", I could care less about that. Not everyone is coding for use within the Fortune 1000 (though it is certainly a worthy requirement for those who are.) I’m interested in building web apps that are quick to build, scale nicely, and have lots of support on the web. For example, Yahoo uses PHP and Google Python, so while those might not be "enterprise ready", they do scale to global heights. And I can configure and run a Linux VM in Amazon’s computing cloud and pay by the CPU cycle, but I can’t do that with anything Windows.

Ray: Thanks for your input. How do you get Django running on Windows; IIS or Apache? If IIS, how? As for the "document publishing-centric" being a myth, I’ll admit 100% I’m going on hearsay at this point (hey, that’s why I wrote this post, to try to get some clarity on the issues!) However, I have noticed there does seem to be a lot of somewhat nasty infighting between Django folks and the rest of the Python community; what’s all that about? I’m so tired of religious wars, I just want to get something useful developed and really enjoy the language I’m programming in. :)

I have heard that Python is good for general-purpose language and works well on Windows (I couldn’t do without my SpamBayes, for example!) And I have seen a lot of people in the W3C standards community are using Python (I wonder if that means it’s like Pascal in the 80’s; a great teaching language but not necessarily the best for serious work? Just asking…)

And as far as I know, companies using open-source databases are not known for losing data; if that were the case many people would be making a huge stink but I don’t see/hear that. Maybe I wouldn’t build a banking apps on MySQL w/o transactions, but I could use Postgres. OTOH, I’m not going to be writing bank apps!

Can you explain your distinction between ASP.NET vs. WebForms? Don’t get me wrong, I really *like* .NET or I wouldn’t keep pounding Microsoft about things here on my blog. I just do not like ASP.NET or the limitations of IIS6, and IIS7 won’t be widely deployed for years[1]. I even looked at maybe writing my own framework, but that just seemed like so much duplication of effort, and clearly I’d be on my own in extending it.

Anyway, I just placed your name; you are the hammett from the CastleProject. Yes, I was interested in Castle, but one key thing turned me away from Castle, both because of what I might be required to do to get started using it, but more importantly what I said to me about the community. This thread[2] offered a sample VS2005 project using Castle yet had a broken link. After both my request and someone else’s request to get an updated link to the project were ignored, I got the impression that Castle/MonRail wasn’t a very active project and probably has a lot of yet-to-be-implemented functionality, and that if I started using it and ran into trouble I might not get timely help with using it (timely as in days, not months.) Now maybe my impression was wrong, but the fact the community abandonded a thread that offered a ready-to-run sample left me with a strong negative impression of the ongoing viability of the project.

For an open-source project to gain significant momentum, which is a requirement for me to use it as a core platform, it really needs to make sure that initial success experiences come as quickly and as easily as possible. Just look at the wild success of Ubuntu Linux after only a few years. I tell you this not to rag on you but hopefully to impress upon you how important it is and to see you elevate to a high priority the creation of ready-to-run sample apps for VS2003, VS2005, *and especially* Visual Web Developer Express. If you did the latter I’d download and try it out ASAP. And if you link from the Castle Project home page, I bet a *lot* more people would too. I’ll even be your guinea pig and give you feedback on a VWDE project if you like…

P.S. If you can’t trust anything besides .NET, why are you using phpbb for your forum, and not Community server?

Mike, where did I say something against OSS databases? I mentioned 2PC, which I think all mainstream OSS database support, but not all platforms/languages API.

About the community, any OSS project has difficult dealing with newbies. You request a file that was posted by someone else (not from the Castle Team), how can we support that. After all, to create a project on MR, just install the MSI and open VS.Net. Where’s the difficulty?

If you got that "bad impression" from Castle, well, sorry, but I guess it was a not very rational impression. Access our forum today and see that we have 4654 articles. More than 2k registered users. Also check our development lists on google groups… MR is our second most used project, losing only to ActiveRecord.

About the WebForms and ASP.Net distinction, check the IHttpHandler documentation. WebForms is just a framework around an IHttpHandler implementation (on the Page class). Asp.net is the whole infrastructure that bridges .Net and the web, provides session management, authentication/authorizatioan and whatnot.

"P.S. If you can’t trust anything besides .NET, why are you using phpbb for your forum, and not Community server?"

I use the best tool for the job, I’m not a .net freak. As I mentioned early I love Ruby, it is my preferred language, but I can’t make money from it (at least not today) and I dont think it will be the best tool for the kind of project I’m involved, so I’d stick with .Net which is, well, nice. The best tool for the job also might indicate that I should use Java for a project, or PHP, or anything. It’s not passion that drives a technology selection, but the project’s scenario and goals.

Community server does not offer me the flexibility that I can get from phpBB. Period.

I thought you implied OSS databases, my apoligies. But if it isn’t the OSS databases that make it unworthy for enterprise development, what is missing?

I disagree that any OSS project has difficult with newbies. Ubunutu and Ruby on Rails spring to mind. But I think the people behind both of those projects don’t just think like heads-down developers and isntead have a strong marketing mindset. Unfortunately gaining significant marketshare requires good marketing.

You can’t necessarily support a file posted by someone else, but you can offer alternatives. Maybe you do but they were not obvious to me. But even so, as a steward for your community you should want to make sure such things are not left hanging because whether you like it or not, they make your community look bad. If people throw trash in your front yard, your neighbors judge you based on your homes appearance, they do not consider who threw the trash.

Also, 4500+ articles is to me an indication of not much interest. Checking the forums on http://www.asp.net (admittedly sponsored by Microsoft) there are over 250,000 articles. And the Rails section on the Ruby forum proably gets 4500 articles in a week. I can’t tell for Python as they are mailing list, but they have tons of them. And I can’t even count how many on the PHP Developer’s Network.

And why no articles about Castle/MonoRail on places like SitePoint? (I only see it mentioned here [1]) Someone really needs to evangelize Castle/MonoRail and write articles at all the places web developers read, or it will continue to be a nice idea with little traction.

And please don’t attack the messenger on this; Frankly I’d *love* to see Castle/MonoRail because the well known alternate to ASP.NET so I’m only offering this in hopes to help, not criticize.

Now you can attack my "rationalism" is you like, but when every day I am bombarded with a 100 times more information than I can process, I have to make snap judgements and move on and not every one of those judgements will be sound. I am only human. But I expect I’m no different than most in the amount of innundataion I experience so you can either take my experience as a data point to consider, or you can condescend me and make yourself feel superior. However I would offer than the former approach would help achieve great market penetration and that latter approach would be harmful to what I assume your goals are for the project.

As for just installing the MSI, does it work out of the box for VWDE? Or SharpDevelop? I’ve decided I explicitly want a more agile environment than the full Visual Studio. And something tells me I’m not alone, especially since the former are free and the latter is not (although I do have it in my MSDN.)

As for WebForms vs. ASP.NET, most of my complains are about WebForms, but some are about ASP.NET. It hides too many things making debugging difficult. For example, why does one have to post twice the comments twice on this blog to get it to take? That’s a weird caching problem that I’m still not sure if dasBlog has fixed. And it’s probably loosing me tons of comments (Grrr..); I don’t have that problem with WordPress.

And why does ASP.NET unload itself if no one has accessed a page in a while, making small traffic websites *painfully* slow to load a page? However, I don’t know all the facts yet, these are just my impressions about the ASP.NET aspects. I’ll need to do more ressearch on those before I can state conclusively what I feel the problems are.

P.S. I almost lost this post because of dasBlogs/ASP.NET’s caching issues. Grrr…

>> Last but not least, you seem to have a tendency to bend people words.
"P.S. If you can’t trust anything besides .NET, why are you using phpbb for your forum, and not Community server?"

No more than you :) Seriously, you justified .NET as being the only solution because the other solutions where not "enterprise ready" when I made no mention of such a requirement but instead I mentioned my interest in publishing data to the web. Given that your answer could easily be read as "the only valid solution for the web is .NET and C#" (and not even VB.NET), my question was fair. Now I’m *not* attacking you, I’m merely addressing that fact that you said I twisted your words which I do not think is a fair accusation given the context. I also still don’t know what your valid criticsm is of Ruby on Rails (or PHP or Python/Django) other than you currently can’t find clients willing to pay you to program in them (admittedly, a strong concern for those who make their money programming for others!)

As for the right tool for the job I agree, especially when dealing with clients. My situation is I’m looking for a language I can use for *my* projects where *I* set the requirements. Given I’m not nor will I ever be a full time developer it’s critical for me to use something where I can be be as productive as possible and where I don’t run into all kind of configuration issues.

As for Community server vs. phpBB, as an owner of a Community Server Professional license, I COULD NOT AGREE MORE.

Personally I’d avoid PHP. I don’t liek the mindset in a good deral of the PHP community when it comes to community, and the language itself just seems so ugly and cumbersome these days. If my web site was written in Django instead of PHP I’d have fixed the comment problems on my blog by now. :)

When it comes to Django, I just have a few comments to make. Like Ray says, it’s really not document-centric. The reason this misconception is widespread is just because most of the famous early Django websites were document-centric. Take a look at Tabblo <http://www.tabblo.com/> or Chicago Crime <http://chicagocrime.org/> for an example of Django being used for more application-style sites. The reality is Django makes easy, pedantic web design a joy whether you’re going for a document or application style website.

As for hosting, I’ve hosted several sites through Web Faction <http://webfaction.com/> and it’s been extremely stable and easy to set-up. They have one step installers for official Django releases, or you can just grab the trunk copy if you want to run on that.

I love these discussions esp as I’ve been searching for the ‘Holy Grail’ for all my developer life. Like many I work with .net (VB.NET/C#/ASP.NET) most of my time with clients (they’re in the corporate sector). However recently I’ve been looking for open source web alternatives for other projects. As I see it, .net and java primarily address the corporate sectors. I think that’s true despite the appearance of scripting languages such as Boo, Groovy, JRuby and so on. For example, .net is dominated by professional development tools, frameworks and components. I use IronSpeed Developer on a regular basis to develop 50-150 page database-driven intranet applications for clients and its enterprise license costs US$2000.

I’ve just started looking at RoR. Of course it stood out with its very enthusiastic community, high publicity and so on. It’s the first open-source web-framework I’ve played with even though I’ve read a few others, MonoRail, Grails, Django and TurboGears included. Ruby seems simple to use - well initially - but experienced users love writing very tricky (obscure/clever?) code. Just look at the 99 bottles site! I do like Rails and am happy with the integration, range of features and even their concept of magic. I have two concerns so far. I’d like more direct control over database schema by the model classes. You have to write database-oriented rules in the model classes to control referiential integrity in the application and then write separately the specific referential SQL in the migration classes for the database. Why can’t the framework do that for me? Also you seem to end up with quite complex Ruby code mixed in the HTML in the views. Is this looking like bad old ASP. Admittedly ‘partials’ do hide code in separate pages. Even if I don’t use RoR ultimately it’s giving me an excellent example MVC in action especially compared to Microsoft’s webform approach to code/presentation separation.

Once I’ve deployed the RoR app to my web-site I’ll start looking at two Python frameworks I mentioned as a comparison. I guess I really won’t be able to test performance in any meaningful way - that’s pretty hard to do except from experience. Still I’m having the most fun I have had for some time.

PS: to respond to the Delphi question. I used and loved Delphi many years ago. It was definitely a VB killer. However it’s lost its way with trying to be all things to all people - still supporting BDE but with ADO and .NET support as well. In general my feeling is go with a market leaders if your working with corporates - .net/java and use one of the newer open-source scripting based languages for dynamic web applications.

Most of the LAMP languages have a dirty little secret. Python, PHP, Perl, Ruby and just about every other one you care to mention all share the same problem:

their interpreters are not thread safe.

What does that mean? Well, it drastically reduces scalability. Effectively the interpreter can only run one thread at a time. So if you have an HTTP server handling thousands of incomming requests you’ll only be pushing one of those requests through the interpreter at a time.

This is in contrast to Java which has proper posix threading built in.

There is one dynamic language which has a proper thread implementation and that’s Guile (http://www.gnu.org/software/guile). Guile is an implementation of the Scheme programming language.

Some people might say "ugh! lisp" but you should test that bad reaction before confirming it. Scheme is a really, really elegant language. Much more powerfull than any of the languages stated above which all borrow from it extensively.

Python, Perl, and PHP are thread safe. AFAIK. PHP can be compiled thread safe, but many of the libraries that it links to aren’t TS. So depending on what you can, you may run into some issues.

re: Languages that are way out there. Smalltalk? The Seaside framework for Smalltalk looks really promising. Very small, but vocal, userbase.

re: Ruby and hosts. They just posted on the IIS blog the other day about a FastCGI module for IIS 6 and IIS 7. Meaning you could deploy your RoR app on either of those hosts easily. The bonus of deploying RoR to a Windows boxz is that it’s easier to connect RoR to SQL Server. I’ve created several Rails prototype applications using legacy SQL Server 2000 databases. Right now, the best bet for deploying RoR to a Windows box is to use the mongrel server in your app and install the app as a Windows service (you can’t install a RoR app as a service easily using Webrick).

re:Python - DJango isn’t the only web framework out there. I’ve heard a lot of positive things about the Turbogears framework for Python.

I wonder if web development using ASP.NET will get easier once more of the dynamic languages, like Ironpython and Ruby, are firmly entrenched in the .NET framework?

Oh, and Rails migrations rock. I’m considering using them by themselves in conjunction with a legacy ASP app I’ve had to maintain and extend.

I’m late to the party on your blog, but… if you just want to get up and running to play with Rails on Windows, I highly recommend "Instant Rails". (http://instantrails.rubyforge.org/wiki/wiki.pl) It comes with a couple of demo applications, Ruby, Rails, several common frameworks, the Scite editor, RadRails IDE, MySQL, Apache, Mongrel, and a slick little GUI for managing your apps. It took me less than a half-hour. Just download, unzip, and away you go.

Ok, now I’m really late to the party, but I would like to know what the limitation is of C# with the implements??

I’ve worked for a few years with C# and never run into a problem implementing an interface. On the otherhand, C# is usually first to the party with implementation of new tech out of MS. Anonymous delegats, Generics (although i think they shipped at the same time), the refactoring stuff in VS, InternalsVisibleTo attribute, to name a few.

The only reason I know any of that is because I’ve had to recently do a VB.Net app at work, and found it quite limiting.

And just to add some other stuff into the mix, how about Software Factories for VS. Really speeds up certain parts of your development, and if you have a common framework, could do quite a bit more.