Why Ruby?

@Nick
I don’t underestimate people writing code in text editors. However, I’ve had experience with people that have barely programmed give “expert advice” to other people… to use Notepad and such, in order to be “real” programmers.
For programmers that can actually write code - it’s a matter of habits, mostly, and it depends on the team you’re working on.

@Micharch54
Oh, it’s the whole world of refactoring and navigation that I prefer not living without. No IDE would work with a truly dynamic language, as it is impossible to properly analyze the code in any given context… saying it as a person that’s done a (quite poor) IDE.
I can write code in text editors, but I’m less productive that way.

@VladislavZ
Yeah, and Microsoft eats little children for breakfast. Boo-hooo. Who would pay for training all the 50+ year-old gentlemen and ladies in the administration to use Open(Libre)Office Calc? How about network printing and wireless printers? What about all the in-house software that’s been done and used for years? The cost of using software is more than just paying for the license…

Ruby on Rails was always translated to me as “take the slowest scripting language in existence and build a web app framework around it”. I don’t know how on earth anyone would come up with that idea. (Although I’m not really up-to-date about Ruby, things might be better than they were a few years ago… :))

Baah! This is one of the least convincing posts I have ever read from you. If you use the Microsoft stack for developing, probably the only piece you have to pay for is Windows itself but most people already have it on their dev box. You can then use the free Express editions of Visual Studio and SQL Server. You don’t have to pay for licensing for deployment. Host your app on any shared hosting which offer Windows and SQL Server for $5/month. Cheap as Linux. You want more power. Use Azure and let Microsoft worry about licensing issues.

As for Ruby vs .NET/C# open sources resources. I bet there are more C# developers than Ruby developers willing to work on open source projects. Do a search on dice.com. A lot more demand for C#. Do a search on github.com. A ton more C# open source projects than Ruby projects.

Ruby is only good for web apps. C# can be used for web apps, mobile apps (Xamarin or native), desktop apps, services, web services, micro devices… etc. I can go on.

I left the MS ecosystem after working successfully as a .NET developer from 2000-2010.
My reasons for leaving?

  1. All the cool huge, highly-scalable applications seemed to be based on free operating systems. Windows licensing did/does not jive with running an app on 100s of cores (though maybe Azure changes this?).

  2. Open source projects seem to be geared towards non-Windows. C# isn’t even in github’s top ten languages.

  3. Most of the big, innovative tech companies in my area (Silicon Valley) seem to be running on non-Windows stacks. Ditto for startups. Stackoverflow is, of course, the notable exception.

Instead of Ruby, I chose Java, with bits of Python and C++. As a language, C# is better than Java, but Java’s tools, libraries (Guava is awesome), and community seal the deal for me.

@Dilyan Rusev re-training users is a one-time cost, Microsoft is recurring. The countries that switched to an open-stack government seem to be pretty happy they did it.

For now, I choose to live in the Microsoft universe. But that doesn’t mean I’m ignorant of how the other half lives. There’s always more than one way to do it…

Kudos to Jeff for living up to these wise words! For now, I choose to live in the Linux/open source universe (and do the bulk of my coding in Ruby). But I don’t vilify Microsoft, or distain C# or .NET. If it works for you, use it!

Each time I switch from between C# and Ruby, it feels like I’m getting out of my minivan, and driving a sports car with my seatbelt off at full speed.

I know the feeling all too well. But when I switch back the other way, it feels like being tied really tightly in a chair, to where I can hardly move. I’m still trying to find a language with the best of both worlds.

I admire your efforts to be outside of the .Net box. It’s been something every .Net developer should be paying more attention to rather than expecting a free lunch.

But while I am a believer in the right tool for the job, comments like .Net stack in the future will only fit a specialized niche outside the mainstream is a swift kick to the pants of the C# community. Please be specific so as not to burden the dedicated workers working on stuff like xbuild, mono, and C# in general. They’ve gained a lot of ground in the last few years in spite of decisions from the big MS and the general thought that C# can’t serve another platform (at least without serious friction). Stack overflow was a big reason why people think that open source and C# can work. And while there is “friction” with mono (maybe different friction than .Net), it’s people like yourself who have helped give C# some open source legs by using it in the cases where it really does continue to shine.

You should have looked at Lasso, Jeff. Faster than Ruby (faster than .net) with JIT, great ecosystem, totally non-Microsoft.

Ruby is great, Python is better, Scala is OK, but Lasso beats them all hands-down.

You were definitely right to wait on getting into Ruby. The documentation is much better now and there’s tons of tutorials to get into it.

I started getting into Ruby when it was brand new, and there was barely any english language stuff for it, and it kind of ruined the language for me. I still dabble now and then, but it’s certainly not my favorite language to play with.

Ruby’s better than Perl or PHP though. Hurrah. :slight_smile:

Wow! Romanian variable names in the Turbo Pascal window!
The original Turbo IDEs (C, Parcal, Basic) were fantastic - the competition was nowhere near them.
As for .NET vs. open stacks - they are complementing each other well and both of them developed features in order to keep up with the other. It is just a question of CAPEX/OPEX to choose one or the other.

“Getting up and running with a Microsoft stack is just plain too hard for a developer in, say, Argentina, or Nepal, or Bulgaria”

That statement it’s just plain wrong(at least for Argentina). Almost everything it is built on .NET and run on Windows machines.
And there is a lot of of open source projects in the .NET sphere to, nhibernate, moq, funq, etc…(all run by argentinian guys)
Just saying.

I’m not at all surprised that poor countries or with higher levels of corruption use .NET more than Java or other open source stacks, in fact it’s logical. Disclaimer: I live in Spain and we know a lot about commissions to win contracts.

@Lluis Martinez Ferrando while Bulgaria (and probably Argentina) fits your description your conclusion is completely wrong. Most development done in (relatively) poor countries is not government development. It is outsource development. It is the West that pays us to develop software with the MS stack and not some corrupt government contractors (though this happens as well but it happens with Java, Oracle, etc. and not only with .NET)

So, who’s up for porting this to Python / DJango when it reaches a reasonable level of maturity? I tried Ruby a while back but just couldn’t get on with the amount of magic that appears to go on. Python / DJango seems to work the same way my brain does…

Everything you want to do can be done with mono.

I have an ASP.net MVC website running on ubuntu with apache.

Seems like you spend half your article saying how much you like c# and then provide no reason why you are not using it.

Few more reasons to love ruby –
http://myloveruby.heroku.com/

Add yours as well…

You Jeff and Stackoverflow was my idol in .NET world: you proved .net can work for something big and great. When I’ve read your post http://www.codinghorror.com/blog/2012/06/the-php-singularity.html I thought you were talking about fighting bad PHP with great .NET examples. Turns out you were thinking Ruby…

Mono community would indeed benefit from Discourse running on it. It’s a pity Discourse is not .NET.

I would also like to add:

The Future

Microsoft is renowned for introducing technologies, methodologies and processes that are hailed as the greatest thing on earth for developers, only to remove them 5 or 10 years later. It’s become very hard to trust Microsoft when trying to develop a long term project.

Because of this, the costs Microsoft introduces to code maintenance are unnecessarily greater than other solutions. Not to mention the fact you’ve been studying and specializing in a programming language, only to see it being removed a few years later.

Necessarily, we don’t expect much of this happening to web technologies. Microsoft knows the impact this could have on its already poor server percentage on the internet. But it’s really very difficult to trust Microsoft technologies to any Open Source project one wants lasting and as easy to manage as possible.

I’ve been a Microsoft solutions developer all my life and frankly am getting tired of it. At the age of 43, seeing all the technologies constantly being being removed and added to the .Net platform is too much to bear. There’s a deep feeling that whatever time I invest studying the new will be wasted when it becomes the old in just a few years.

Interesting perspective. I’m currently transitioning from Java to Ruby as part of my job, and I’ve found the language and open-source culture refreshing.

However there’s one thing about Ruby that makes me sick: Rubyists.

No offense guys/gals but if you need to say things like “lol at least it’s not Java” or “ffs why would anyone use .NET, what a joke” you’re only making yourselves look ignorant, arrogant, and elitist.

This one post has done more to convince me of the merits of Ruby than anything I’ve read from the Ruby community, and it was written by a .NET developer.

I’m sorry Jeff, but going with Ruby is a bad decision. What you should have gone with is Play and Scala. The combination feels downright ASP.NET-ish, except Scala is much nicer in many aspects than C#. Also, the Scala feature subset used in Play is pretty pedestrian, so you don’t need wizards who use every trick in the book. You’d be about as productive in terms of development and you’d need 1/10th the hardware needed to run the service.

But hey, it’s your service, build and run it as you wish.