I'm a software engineering student in his twenties. My work experience has mostly been with Windows technologies (.NET, SQL Server, Windows Server, etc.) and Java for Jenkins plugins. At home, I have a Windows PC and a Macbook, but mostly develop on the latter with frameworks like Django and Rails, in Vim.
I know a guy at work in his fifties who long ago decided to use Microsoft technologies exclusively, and I've never seen someone so happy to code, because he only has one ecosystem to work with and it works well. I've also been bit by the Microsoft bug, but I can't bring myself to use their tools outside of work. Visual Studio's a great IDE (especially as of late), and C# is a really fun language, but the license costs are enormous, MSDNAA licenses are for personal use only, and Azure generally costs a lot more than a VM on Linode or Digital Ocean. BizSpark also isn't an option unless you're seriously starting a business.
I feel like I'm at a crossroads of sorts, like my coworker once has been. I prefer my experience with Microsoft, but its costs and vendor lock-in are hard to ignore. I've tried Mono, and it's slowly getting there, but until vNext is production-ready and I can give it a serious try, I won't consider it a viable option.
I'd just like to know if anyone else has had this experience, and if so, what led them to choose one path over another. Any advice is also welcome.
EDIT: I'd just like to clarify that I'm not trying to choose one platform for the rest of my life, in every aspect of it. I don't mind learning one tool over another in a work context, but I have an interest for the startup/entrepreneurial world, and that's when choosing Microsoft isn't as easy as choosing anything else.
I had always done development on the Microsoft stack (.NET, SQL Server, etc.). I had always played around with nix stuff but never anything serious. During college, I got a Macbook to do iPhone apps, and decided I wanted to do development exclusively on nix.
What I ended up spending 2 years of my side project time is switching between languages and stacks: from Python to Ruby to Java to Scala to Mono to Erlang back to Ruby to Node back to Java -- I was trying to find that perfect productive replacement for C#/.NET ecosystem.
Finally I switched back to .NET on Windows, and things felt so right. I've been happily productive on the .NET platform for the past year and a half.
About VM/licensing fee, it really isn't that much of a difference if you think about it. I'm averaging about $90/month for the VMs and DBs I'm using on Azure. Compare the price between "SQL Azure" and "MongoLab," the diff ain't that big.
Don't take this the wrong way, but it is most likely that side projects aren't big enough to really make the pricing difference more than $50ish a month -- this really is not much especially after when you have a job.
Edit: most of my (probably yours) projects fitted nicely in the free zone of Azure (with or without MSDNAA) and AppHarbor. Also keep in mind that even the FREE VS Express is better than most Open Source editors/IDE out there.