Rubyx OS - A Testament To The Power Of Ruby 121
Andrew Walrond writes "Rubyx the OS is created from source by rubyx the ruby script. Got it? The same small ruby script handles all subsequent package management, customised parallel and distributed user-mode package builds, and can create a live CD. For good measure, Rubyx (the os) sports an all new init and rationalised service management system written in ....can you guess?..."
Article... (Score:5, Funny)
PERL ?
Re:Article... (Score:3, Funny)
That's what I thought... (Score:2)
What's next, a browser written in Ruby? A ruby interpreter written entirely
ROS (Score:4, Informative)
Re:ROS (Score:3, Interesting)
> system (including the kernel), though one wonder when -- if ever -- this
> project will deliver something usable.
The mere existence of the initiative, as anything other than a joke, increases
my interest in Ruby a thousandfold. I've been passing on learning Ruby because
I've been figuring it's Yet Another Language With Perl Envy, but if these
people understand the importance of writing an operating system in a VHLL
and throwing
My thoughts on Rubyx (Score:4, Funny)
Re:My thoughts on Rubyx (Score:3, Informative)
Re:My thoughts on Rubyx (Score:3, Funny)
Logo (Score:4, Funny)
Logo OS? Try a Lisp OS (Score:2, Funny)
Given that Seymour Papert designed Logo as Lisp minus parentheses [atariarchives.org] plus turtle graphics, you might look to a Lisp OS for a proof that it could be done. Well, here's your prototype [google.com].
Re:Logo OS? Try a Lisp OS (Score:1)
Re:Logo OS? Try a Lisp OS (Score:2, Informative)
No garbage collection (yet) (Score:2)
Re:Logo OS? Try a Lisp OS (Score:5, Interesting)
Unfortunately it was too expensive. My workstation cost $125000. Alas...
Re:Logo OS? Try a Lisp OS (Score:2)
Re:Logo OS? Try a Lisp OS (Score:1)
is there even a single LOGO to binary compiler? Would you want to write one as part of this exercise?
Writing a Logo compiler or a Logo->CL translator would probably be straightforward for anybody who has studied compiler design, but I have more important things to do at the moment.
Re:Logo OS? Try a Lisp OS (Score:1)
Re:Logo OS? Try a Lisp OS (Score:1)
Enhanced Package Management (Score:3, Insightful)
Re:Enhanced Package Management (Score:3, Informative)
Perhaps you should poke around the existing world a bit more. If you've only tried one distro odds are good you haven't found your match. Red Hat(/Fedora), Gentoo, and Debian are probably good ways to sample the major ways of doing distros; each has a fairly different philosophy and is large eno
Re:Enhanced Package Management (Score:2, Funny)
Don't worry, on the internet nobody knows you're a penguin [falklandwool.com].
Re:Enhanced Package Management (Score:1)
Yes it does.
If you install gcc v2.9x and gcc v3.x you end up with something like this
/usr/bin/gcc is symlinked to /usr/bin/gcc-3.3 and there is still a /usr/bin/gcc-2.95.
That way you have a default which is gcc, and the option of being explicit about the version if you really care which compiler you use.
I think that meets the requirements of having two side-by-side compilers.
Re:Enhanced Package Management (Score:5, Interesting)
For example, making it easy to run multiple versions of, say, gcc on the same system and switch between them at will...
I have a home-brew system like this, and I would die of joy if something like Debian's apt or {Free,Open}BSD's ports system would integrate it.
I actually can't take credit for it, and I really don't know if it's that unique, but the people I've introduced it to love it. And thanks, Lou, for showing it to me. It's a shame this post won't get a larger audience (then again, maybe it's a conceit to believe anyone would actually care. :)).
Okay, here goes...
I have on all of my machines (or "boxen", just to annoy those of you who loathe the term), a directory called /mfs -- "my file system". The philosophy is that of /opt or /usr/local: a place to install custom software without colliding with the main system tree.
Within /mfs, there's dist, src, obj, & pkg. I place the tarballs in dist, I unpack the source into (you guessed it) src, I (sometimes) build in obj, and I install into pkg.
My most common use is installing OpenSSH onto various platforms, so I'll use that to illustrate.
I download the tarballs into my dist dir: tcp_wrappers_7.6.tar.gz, openssl-0.9.6l.tar.gz, zlib-1.2.1.tar.gz, & openssh-3.8p1.tar.gz.
Next, I unpack them into src, where I usually build them, though sometimes I build them in obj.
Sometimes, it's a matter of a simple --prefix paramater to the config script. Sometimes it takes modifying Makefiles. But usually without fail, I can shoehorn most any application into it's proper place: /mfs/pkg/package/version.
The goal is to totally isolate the application within its own directory -- even it's own etc, tmp, var (or whatever) directories. If it's possible (never mind the convenience of making it happen), that program will never collide with another version of that program on the system: .pid files, logs, sockets - nothing.
So when all's said and done, I now have:
Each, of course, has all of the etc, bin, lib, include, sbin, var, tmp, and man directories the app needs to run.
Once this structure is in place, it's pretty obvious where it leads: you can painlessly have concurrent versions of any program and/or library you could ask for. Since apps are linked to a specific library version, installing a new version of that library won't collide with the old one.
Ever try installing a current SRPM of openssh onto an older Redhat release? It's a nightmare! The RPM requires a current version of openssl, but the KDE libraries all require openssl 0.9.5 (or some such). You just cannot get it to work.
So you may now be thinking to yourself, "Okay, that's kinda useful. But when you have hundreds (or thousands) of apps, your PATH would be insanely long. This just won't work."
That's a good point -- but there's a solution. Use the "lndir" command from within /mfs, to link your desired package into the root /mfs directory:
cd /mfs && lndir pkg/openssh/3.8p1
Now, thanks to the lndir command, you now have the directories /mfs/{bin,etc,sbin,man} populated with symbolic links to the actual programs. Now you can set your PATH, MANPATH, and even init scripts to point to the "main" /mfs directories.
But wait, there's more! Let's say we h
Re:Enhanced Package Management (Score:3, Interesting)
There is already stow [gnu.org].
Without upgrading you mean, ok fair enough. Although I'm not sure why I'd care about what version openssh is (unless it's a security errata -- in which case it's coming f
Re:Enhanced Package Management (Score:2)
Re:Enhanced Package Management (Score:2)
My specific gripe was Redhat 7.1, I think -- the ssh version is woefully out of date and vulnerable. There are no more vendor upgrades (I don't know if LegacyFedora.org has the updates). The point was that sometimes you run into "dependancy hell" on systems th
Re:Enhanced Package Management (Score:2)
And my probably badly phrased retort was that if the entire OS is out of date there is an obvious solution upgrade the OS. The 95% use case (IMO) is being able to upgrade certain application(s) (those that the user(s) care significantly more about than the rest) when most of the system is at the latest stable version ... ergo. security updates should almost certainly be got in the normal way.
This is w
Re:Enhanced Package Management (Score:2)
Re:Enhanced Package Management (Score:2)
That is, an application and all or most of its dependencies can exist in one directory. To install the application you just copy a directory. Delete the directory to uninstall.
The ROX filer [sourceforge.net] can also do this for Linux but I haven't used it much.
By the way, I use GCC 2.95, 3.0, 3.2, and 3.3 on Debian all at the same time (for compatibily tests). Debian is pretty good about concurent versioning.
Re:Enhanced Package Management (Score:1)
From the GoboLinux FAQ [gobolinux.org]:
Re:Enhanced Package Management (Score:2)
Thanks for the link!
Re:Enhanced Package Management (Score:2)
It takes the concept part of the way, but does not take it to its logical extreme.
Re:Enhanced Package Management (Score:2)
Re:Enhanced Package Management (Score:1)
How would you phrase it? Non-root user?
Re:Enhanced Package Management (Score:2)
Re:Enhanced Package Management (Score:1)
Re:Enhanced Package Management (Score:2)
Check out encap [uiuc.edu].
Re:Enhanced Package Management (Score:2)
Re:Enhanced Package Management (Score:1)
> maintainer would spot right away, but I think
> this system is probably feasible to roll into a
> full package management system. And, no, I
> haven't tried all 1273 linux distros out there,
> so somebody may actually be doing this already.
> I'd love to hear about it.
> Damn -- I hope somebody thinks this is a cool
> idea.
yeah, I built something like what you describe. Got a packaging management system that builds from code and doe
Re:Enhanced Package Management (Score:1)
'modules', Debian Re:Enhanced Package Management (Score:1)
Check out the 'modules' program at modules.sourceforge.net [sourceforge.net]. It makes it fairly easy to switch between versions of any program you like (and choose to set up with modules).
It's distribution-agnostic (works on non-Linux UN*X, too). The common usage is more or less module load gcc2.95 (now, 'gcc' will execute gcc v2.95).
Anyway, as someone else mentioned, Debian already offers this for some packages (the package maintainer has to do some things differently to make it work). For gcc, there's a gcc-2.95 packa
Re:Enhanced Package Management (Score:2)
Um, isn't this just another Linux distro? (Score:5, Informative)
Re:Um, isn't this just another Linux distro? (Score:5, Funny)
Re:Um, isn't this just another Linux distro? (Score:3, Interesting)
So, no, I guess it wouldn't be any big deal. Certainly not Slashdot front-page stuff.
News for nerds, stuff that matters? Not this time.
Re:Um, isn't this just another Linux distro? (Score:2)
Yeah, and you don't see Fedora calling itself "Pythonx"
Re:Um, isn't this just another Linux distro? (Score:3, Informative)
Actually, there are a couple of cool things about Rubyx that make it different from a run-o'-the-mill Linux distro, and the language they're in ain't one of 'em.
The first is that it's self-bootstrapping--you can just download the Rubyx script and use that to build an install ISO. That's pretty darned cool if you ask me.
The other cool thing about it is that it completely eschews the entire SysV init system with one of its own, based on dependencies instead of on educated guesses by the sysadmin (read: arb
Re:Um, isn't this just another Linux distro? (Score:2)
The other cool thing about it is that it completely eschews the entire SysV init system with one of its own, based on dependencies instead of on educated guesses by the sysadmin (read: arbitrary order) as to what order services should start up and shut down in. This lets you speed up booting by starting independent services concurrently instead of waiting for each service to start up individually.
I'm not booting very often, so the speedup isn't that important to me (a speedup is still nice, tho), but th
Re:Um, isn't this just another Linux distro? (Score:3, Interesting)
a Ruby-based package manager? (Score:1, Interesting)
(Yeah yeah, portupgrade layers on top of the existing FreeBSD package system but still, this isn't *that* mind-blowing.)
If you want to talk about the power of ruby, I can think of a lot more cool things. Like, how you can add aspect-oriented programming without modifying Ruby or using any pre-compiling, or how you can write a profiler for Ruby programs, in Ruby itself, without any external hooks, in under 200 lines. Or how you define the "+" operator by using "def +(x)
hmm.. maybe a bit Off Topic.. but (Score:2)
Can someone explain clearly why someone who works a lot with python, why one might find it worth while to invest into learning about Ruby? Are they a bit redundant in languages or does one have merit as a tool that the other doesn't.
If it's basically different tool that does more or less the same thing, I probably should just stick with what I know. I just haven't heard one way or another if it's worth putting that tool on my belt or not.
Re:hmm.. maybe a bit Off Topic.. but (Score:4, Informative)
Syntactically, Ruby is more like Perl. If you consider sigils an abomination upon the land, as I do (despite working professionally in Perl), then you'll want Python. If you consider them Larry Wall's gift to syntax, then you'll want Ruby.
The other thing is, if you're expecting to use a library of some kind, check for availability. Python has the edge right now AFAIK but that doesn't matter unless Python has something that Ruby doesn't that you need, or vice versa; for most people my impression is that the necessary modules are there in both languages.
Re:hmm.. maybe a bit Off Topic.. but (Score:2, Informative)
class Thing
attr_accessor
def add_me_to_foo_and_bar(me)
foo + bar + me
end
end
t = Thing.new
t.foo = 5
t.bar = 34
puts "look: #{t.add_me_to_foo_and_bar(4)}"
And class variables, in my opinion should never be used. You should use instance variables on the class object, which uses similar syntax to the above and feels more consiste
Re:hmm.. maybe a bit Off Topic.. but (Score:2)
Having recently used Perl for the first time I found the use of 'magic symbols' like '@_' and '$_' confusing. Does Ruby have similar 'features' ?
Re:hmm.. maybe a bit Off Topic.. but (Score:3, Informative)
(note that '#' starts a comment, and => (value) in an end-of-line comment is showing the resulting value of an expression.)
Re:hmm.. maybe a bit Off Topic.. but (Score:2)
Re:hmm.. maybe a bit Off Topic.. but (Score:2, Informative)
Usually the %r syntax is used to make the re
Re:hmm.. maybe a bit Off Topic.. but (Score:3, Insightful)
In Ruby, Sigils indicate scope, not type! Whole different thing.
It doesn't obfuscate the code. Makes it easier to read actually.
Re:hmm.. maybe a bit Off Topic.. but (Score:2, Interesting)
Re:hmm.. maybe a bit Off Topic.. but (Score:2)
I also don't recall claiming that they "obfuscate" code. I seem to recall claiming that I don't like them, and if you also feel that way you won't want Ruby.
Please read what I said, not what you expected me to say, it's better for all of us.
Re:hmm.. maybe a bit Off Topic.. but (Score:1)
I also don't recall claiming that they "obfuscate" code.
I don't recall claiming that you claimed that Ruby sigils indicate type.
I also don't recall claiming that you claimed they "obfuscate" code.
Please read what I said, not what you expected me to say, it's better for all of us.
Re:hmm.. maybe a bit Off Topic.. but (Score:2)
The other thing is, if you're expecting to use a library of some kind, check for availability. Python has the edge right now AFAIK but that doesn't matter unless Python has something that Ruby doesn't that you need, or vice versa; for most people my impression is that the necessary modules are there in both languages.
I have never used python, so I can't comment on whether python has more readily available libraries than ruby has, but ruby has a CPAN-like institution called RAA [ruby-lang.org] and raa-install (the ruby
Re:hmm.. maybe a bit Off Topic.. but (Score:2)
No, but at this point the only reason for that is that they are typically not necessary. In Perl, when I need to get anything done I need to install 10 or 20 CPAN modules. Generally, in Python, they came with the interpreter and I only need to install two or three. This is why no similar thing has emerged.
(This is going on the "People are in general equally smar
Re:hmm.. maybe a bit Off Topic.. but (Score:2)
No, but at this point the only reason for that is that they are typically not necessary. In Perl, when I need to get anything done I need to install 10 or 20 CPAN modules. Generally, in Python, they came with the interpreter and I only need to install two or three. This is why no similar thing has emerged.
(This is going on the "People are in general equally smart"... if Python needed such a thing it would exist. It doesn't, therefore it is a reasonable conclusion that it is not needed. It's not "logically
Re:hmm.. maybe a bit Off Topic.. but (Score:1)
Re:hmm.. maybe a bit Off Topic.. but (Score:2)
Re:hmm.. maybe a bit Off Topic.. but (Score:5, Informative)
If you are a theoretical guy who loves a conceptually elegant and consistent language like Smalltalk or Scheme, you'll love Ruby. Ruby is so consistent, it's really lovely.
If you're more practical and need good documentation and extensive libraries, you'll probably be annoyed by it.
If you like to write programs FAST but not sacrifice readability like Perl, you'll really love Ruby. For instance in Ruby, you don't have to type "self" in method argument lists the way you do in Python. Ruby is 100% object oriented inside and out. Classes are first class objects, subclasses of Module objects. There are no "old style classes" or "new style classes", no cruft held over from previous versions of the language.
In Python, you have built-ins like "str()" which can call the __str__() method on an object. None of that kind of repetition in Ruby. Just call obj.str (or actually, obj.to_s) directly. You don't need the parens in that case.
Ruby has "blocks" which are a nice syntactic sugar for a whole class of operations. For instance a database transaction can be implemented as a block:
transaction { |t|
do stuff with t
more stuff
}
in Python that would be:
t = start_transaction()
try:
do stuff with t
more stuff
finally:
end_transaction()
The ruby version is easier to read.
If you want a large selection of tools and implementations, well, Ruby doesn't have too many like Python.
Also the Ruby community is still small and friendly. The python community is turning into the Perl community, in my opinion. A little arrogant.
Python is starting to look more and more like Ruby every revision though.
Re:hmm.. maybe a bit Off Topic.. but (Score:2)
Actually, as a computer science professor... (Score:2, Insightful)
Oh, it's got consistent semantics and a decent object model (a proto model would have been better) and every CS professor's favorite item: true closures. But Ruby has one nasty feature which trumps 'em all. It was designed by an ex-Perl guy, and as such Ruby has approximately five billion different ways of writing the same syntax. As long as it can't be "misinterpreted", you can delete or change all sorts of stuff.
This is language design which borders on the grotesque. Great. So
Re:hmm.. maybe a bit Off Topic.. but (Score:3, Informative)
[ 1, 2, 3 ].each { |x| puts x }
would print "1", "2" and "3" in three different lines.
The block parameters are very clever, you can also put something else than only variables there. If you want to compute the sum of the products of some pairs, you could do it that way:
a = [[1, 4], [2, 5], [3, 6]]
sum = a.inject(0) { |s, (x, y)| s + x * y }
The block would first be called with s = 0 and (x, y) = [1, 4], that would a
Re:hmm.. maybe a bit Off Topic.. but (Score:5, Interesting)
If Python is doing everything you need it to do and you're happy with it and you're not curious, then maybe there isn't any reason for you to learn Ruby.
However, if you have at least a little bit of intellectual curiosity, you might find it rewarding to spend an hour learning some Ruby and trying it out. I emphasize the tryinging it out part: sure the two languages have very similar capabilities, however it feels much different programming in Ruby than it does in Python. It's difficult to explain, you have to try it. I tend to think it has something to do with the fact that Ruby's built-in libs made use of iterators from the start (and it also has something to do with Ruby's blocks).
Also, if you prefer not having syntactically significant pieces of your code be invisible then you'll probably prefer Ruby. Yes, it's that indentation-as-syntax thing in Python that kept me from going with the snake a few years back before I found Ruby. Yes, I've heard all the arguments from the Pythonistas about how your editor will just take care of things for you and how life will be so wonderful. However, I was bit by this twice within the first hour that I tried Python. One person might have his editor set to expand tabs and another might not. I haven't got time to spend several minutes trying to figure out why some code (which looks perfectly fine) doesn't work only to find that it's a tab expansion problem, "gee, the code looks identical to the code in the book?! WTF?!" - Life's too short.
Re:hmm.. maybe a bit Off Topic.. but (Score:2)
"Why should I learn c I know Pascal/Fortran/ASM."
And I have often heard "Why should I learn Python I already know Perl."
The real question is why not learn a new language. Once you know it then you can decide if it is a good solution for you.
A little too much Fanboy vibe (Score:5, Interesting)
The name Ruby x conveys a little too much "Ruby fanboy" vibe. It's a Linux distribution, yet the name doesn't mention it and the website gives only cursory mention of this fact, which borders on the deceptive. I want to emphasize that I mean these things exactly as I say... a little too much fanboy vibe, borders on the deceptive. It's not irredeemably bad, but I do have to say at the moment I'm having a hard time respecting the project.
In fact this could well hurt even the Ruby advocacy side of the project by scaring people off, thinking they'll need to know Ruby to install, when instead it looks like Yet Another Linux Distribution.
I mean this as constructive criticism. To the project leaders, I strongly recommend that you more carefully evaluate the goals of the project, more clearly partition the "Ruby" concept from the "Linux Distribution" concept, and determine whether your goals justify the seemingly over-strong focus on Ruby. Yes, I know Ruby lovers have a bit of a persecution complex, I recognize this in myself as I like Python and see the same in the Python community, but in the long run you're going to get more real respect by building a real project on Ruby and discreetly pointing out that it runs on Ruby then by shouting out in the streets that THIS RUBY DISTRIBUTION OF RUBYX IS MADE POSSIBLE BY RUBY, THAT WONDERFUL (RUBY) LANGUAGE! (Yes, this time I'm exaggerating for dramatic effect; again I emphasize I'm not claiming the site actually sounds like this but the tone is definately there.)
Re:A little too much Fanboy vibe (Score:3, Interesting)
Perhaps. I suppose I'm a 'Ruby fanboy', but I did wince a bit when I saw the headline for this story which said something like "Rubyx - it shows the power of Ruby". I think there are lots of other things that show the power of Ruby better.
However, that said, there are zillions of Linux distros out there and they did need a name and since the rather novel init system is written in Ruby (a feature I really like about Rubyx, btw) it sort of mak
Re:A little too much Fanboy vibe (Score:1)
Re:A little too much Fanboy vibe (Score:2)
Grubyx!
If going to the trouble... (Score:1)
Re:If going to the trouble... (Score:2)
The Slashdot experience - By the Rubyx author (Score:5, Interesting)
But a few people were intelligent enough to pick out the salient points, or were bothered to read the website. And then downloaded 8Gb of Rubyx overnight. (Hang the cost; It made me smile!)
For those of you who somehow missed those salient points:
Rubyx is 'yet another linux distro', that builds from source (like gentoo). It is _not_ an OS written in ruby.
But it's different because...
Rubyx can be created, with a single command, using the rubyx script.
With a second command, you can create a bootable Rubyx CD/DVD.
The same script handles ALL subsequent package management.
Reread that last bit. This is one small script we are talking about, written in the ruby language.
I wrote the new init system inside 2 days. Go figure. A complete init replacement in two days.
Yes, I'm a fan of ruby. Its the most writable, readable scripting language I have tried. Could Rubyx have been done in another language? Surely. But, I argue, not as quickly, elegantly and maintainably.
Have a lovely day
Andrew Walrond
Re:The Slashdot experience - By the Rubyx author (Score:1)
Re:The Slashdot experience - By the Rubyx author (Score:3, Interesting)
I am testing a simple variation of the init scipt which does it properly. I'm pretty happy with it and will probably release it in rubyx version 38.
Japanese (Score:3, Insightful)
(Anyone caring to translate this character [rubyx.org]?
Re:Japanese (Score:3, Informative)
Re:Japanese (Score:1)
Cleese (Score:5, Informative)
So ..... (Score:4, Funny)
Rubyx is clean and simple! (Score:1)
Re:Ummm... (Score:2)
Look down 1 post.
Re:insane (Score:5, Interesting)
I am a Perl user
</disclaimer>
It is an installer and package manager written in Ruby not an OS. The website doesn't seem to make this very clear though, so I don't blame you for being confused. It is really a Linux (or GNU/Linux if you prefer) distribution. If we were to follow this logic then Mandrake Linux would be a Perl OS and Fedora/Redhat would be a Python OS.
When evaluated on that level it looks interesting. It seems to combine the concepts of LFS and Gentoo with stow like package managment.
Re:insane (Score:2, Interesting)
Re:So when is PerlOS coming out? (Score:1, Redundant)
Re:So when is PerlOS coming out? (Score:3, Informative)
But if you want an example of extreme silliness in Perl you can look at http://freshmeat.net/projects/perlbox/ a Desktop Environment written in Perl.
Re:So when is PerlOS coming out? (Score:2)
Re:So when is PerlOS coming out? (Score:2)
#!/usr/bin/perl
use strict;
my $buffer = '';
print "[perl] ";
while ($buffer
# check if code compiles, else allow continuation of input, ala shell
my $code = eval "sub {no strict; $buffer}";
if ($code) {
print &$code;
$buffer = '';
print "\n[perl] ";
}
else {
print "> ";
}
}
Which gives you an intera
Re:So when is PerlOS coming out? (Score:2)
At that point you're not using Perl as your interactive shell, you're using a script written in Perl as your active shell.
Re:So when is PerlOS coming out? (Score:1)
Perl has built in something like an interative mode, try this:
perl -de1
But in comparison to Ruby's it sucks, and I rarely use it while I use the irb the whole time. Perhaps it is also more useful because Ruby's introspection possibilites
Re:Who the hell cares? (Score:1)
Inertia and length of time on the market?
Re:Who the hell cares? (Score:3, Funny)
Seriously, where do you get your statistics from? Your arse? Thought so.
Re:Who the hell cares? (Score:5, Insightful)
How do you know it's mediocre? Have you tried it?
Do you even understand what it does?
Total waste of time...99.99% of the code out there is written in C -based languages (java, php, C++) for a reason...
You could be the one that's totally wasting your time. One should choose the right language for the job at hand.
I recently inherited a project which took six months to develop in C++. It weighed in at ~4800 lines of C++ code. Since we needed to significantly expand the scope of the project and also add a GUI _and_ since execution speed wasn't an issue, but development time _was_ an issue I decided to rewrite the code in Ruby. It took a week and came to ~1200 lines of Ruby. The resulting Ruby code is much more flexible and easier to modify and add to than the previous C++ codebase (good riddance to it). I'll gain back that week invested to do the conversion several times over as the project progresses and as the requirements (inevitably) change... and I'll keep my sanity.
Choose the right tool for the job. If speed of execution is an issue then by all means use C/C++ (I do). However, if you need to develop code quickly then use an agile (aka scripting) language - I prefer Ruby for that role.
Re:Who the hell cares? (Score:2)
Okay, be fair, how much of that six months was analysis and design time vs actual coding? With a bit of effort I can do 4800 lines of C++ in a weekend if I already know my overall design and data structures going in (*)-- and you had that advantage doing the rewrite in Ruby.
That said, I certainly agree with choosing the right tool for the job, and scripting languages do lend themselves to ra