ace_starfighter: Well that's not too much of a bottleneck if you're a hard core gamer. Load in windows via bootcamp and game away.
On the Mac note I'm not really a fan myself but I did see a recent article about why most programmers use a Mac. Short answer is Unix command-line, reasonable resale value compared to competition, good QA control historically, and to build any software products for a Mac or iOS requires a Mac (yes even windows Xamarin requires it because Apple's EULA states that it does).
saluk: I can attest to this. Unix-based tools + not half-baked interface is a really sweet combo for development. Windows is pretty annoying to develop in, and efforts like powershell, while appreciated, tend to only go halfway. I used to use linux but usually the "best" interface is only the best one for a few years, and then you have to find something else to migrate to. It gets disruptive after a while.
And yeah, the frickin vendor lock-in where you have to build on a mac to support mac or ios.
This is why i started shifting to expading my backend knowledge. I'm not really big on pretty buttons and things, anyway, and if i really need to code for someone other than myself (since i code on my own), they can find the UI guy. That's not to say I don't have some pretty cool tools and ideas that i've built myself that would be fun to make a UI with, but I can't be bothered all the time to constantly rewrite my same frontend every time something gets deprecated and replaced: i never get anywhere with the backend.
Another fun little project of mine was to write tutorials for beginners, to help more people get into programming. I found ways to help people who can't pass
https://blog.codinghorror.com/separating-programming-sheep-from-non-programming-goats/]this test[/url[ and help them pass it. The problem is, i need a stable platform. And nothing other than clib is stable. The problem is, the trick to doing this is going lower than C, and invocation of clib isn't even stable, let alone the platform on which you would do the invoking. I thought about going the VM route, making my own virtual machine to be stable, but then that too must be maintained, and it isn't as simple as hitting the compile button on the next platform, because even C++ code is changing, and i thought i read that some language constructs are now deprecated as well.
So, at this point, i figure that it makes most sense, to me, to say "the hell with everyone else, i'll do my own thing unless someone pays me to do it." What kills me is that there's so many things that could and should be universal at this point, but are not, like 2 button mice. I connect one to my android tablet, and right click sends me to the desktop. Why!? Why can't it act as a hold left click, to provide the same functionality as it does in desktops, which is presumably why i connected a damn mouse?