I'm in the process of switching from vim to emacs right now. It's frustrating, although viper-mode takes a lot of the pain away, and to be honest I find it a really nice combination to have the vi editing modality readily available within the powerful framework of emacs. Remapping caps lock to Control has helped enormously.
The most notable thing is that emacs encourages you to live in it much more than vim. With vim, I would navigate around in the shell, open up a file in vim, edit, close, repeat. With emacs I'm finding that I spend more time just switching buffers instead of running back to the shell because emacs doesn't simply quit when I kill all my open files. There's always more buffers, so the app stays open and I tend to remain there.
I'm still in the process of getting up to speed with basic editing things, although I've found that the way it manages buffers and what it calls windows (what the rest of the world calls frames these days) is quite easy and quick to use, and I found myself able to navigate around in emacs fairly quickly. All in all, I'm not 100% sure I'll stick with it, but I'm happy so far and I know that I'm still getting over the hump to where I'll be truly productive with it.
Pick one that's generally associated with web stuff. That's pretty much Ruby, Python, Perl, Java, and PHP these days. Take a look at all of them on the surface level to see what's interesting to you, and just pick one and go.
Given that you already know C and C++, I'd learn Perl, Python, or Ruby, since they're a very natural extension of C and C++ and can be used very easily in problem domains where you wouldn't want to use C or C++. Learning more than one of these may prove useful if you want to hack on a variety of different open source codebases, so whichever one you pick first isn't so important as picking one and having it in your toolbox.
The comments show that the article author presents a false dichotomy. All the data collection and analysis depends on models. Then from that analysis you get new models and do new analyses. This is how science works, whether you have tons and tons of data or not.
OSX would fail completely without free software. BSD is the subsystem, their browser is based on konqueror's html engine, they rely on cups for printing, samba for file sharing with windows... the list goes on and on.
What's important about this isn't so much that free software didn't fail, but that modern computing could not and would not exist without free software. End of story. Mac classic would be all but dead now, and Windows would have "innovated" us all in to a ditch. Remember what Microsoft did to IE when Netscape wasn't a threat? It'd be the same story. Without free software, there wouldn't be a mozilla, an OSX, or anything like it. Modern computing absolutely requires free software in order to function.
It's actually a very difficult space to compete in. Having worked on major desktop-related infrastructure for a major linux distro, I've got real experience on this one. It's a decidedly non-trivial task.
Back when linux was "cool" (when was this? Late 90's?) only geeks tried it. Some stuck with it, others went to OSX, like yourself. Most people, during this time, managed to hear the word linux, but didn't really know what it was. Consequently, they didn't try it. This mythical time when everyone and their grandmother was trying Linux just didn't happen. But just because Free Software didn't work for you back then doesn't mean it failed.
Mac OS, by my standards, failed miserably. Totally. Utterly. So I went to Linux. This was pre-OSX, when Apple was a company that had totally lost its way and was getting demolished by Microsoft. Pretty much everyone said that the Macintosh and Apple had failed and their days were numbered. Now things are different because Apple didn't stop. They never really failed you see, they just kept going. The Free Software community is doing much the same, and I'd be surprised if we're in the same place in another ten years.
Just because something is not meeting your specific needs right now doesn't mean it's failed. Given the enormous progress I've seen over the past ten or so years I think it's fair to say quite the opposite. You actually have a choice to run Linux today where that wasn't really an option a decade ago. If that's failure, then you have a strange definition of failure.
Nothing has failed yet. You act like the project is over and done with. It's not. Linux has conquered pretty much every single space but the desktop. This is a huge success, especially when ten years ago it was exciting to read about any company deploying Linux publicly in any sort of way. Now it's expected.
As for the desktop, the work isn't finished, and it'll take a very long time to get to the point where it's a real contender. It's not a QA issue. The Linux desktop of today is actually of very high quality. It's that it's a very difficult space to compete in.
Is there any word on whether other browsers will be implementing this in the future? It's what's keeping me from using canvas today, and partially what's keeping me from writing a certain app I've been thinking about for a little while.
The most notable thing is that emacs encourages you to live in it much more than vim. With vim, I would navigate around in the shell, open up a file in vim, edit, close, repeat. With emacs I'm finding that I spend more time just switching buffers instead of running back to the shell because emacs doesn't simply quit when I kill all my open files. There's always more buffers, so the app stays open and I tend to remain there.
I'm still in the process of getting up to speed with basic editing things, although I've found that the way it manages buffers and what it calls windows (what the rest of the world calls frames these days) is quite easy and quick to use, and I found myself able to navigate around in emacs fairly quickly. All in all, I'm not 100% sure I'll stick with it, but I'm happy so far and I know that I'm still getting over the hump to where I'll be truly productive with it.