redis.
Coming from years of old school "Web + DB + memcached" redis has blown me away with what it can do from searchable lists for typeaheads to pub/sub.
I used to work in a mixed Windows/Linux environment and found what worked best for me was to run Linux via Vagrant, and use MobaXterm (http://mobaxterm.mobatek.net/) for ssh, as it has an X server. That's how I used to use RubyMine and Geany.
I would say the difference between a junior and a mid is experience breadth of knowledge. Knowing what tools, patterns or architecture to use and when.
The difference between a senior and a mid, is that a senior knows when NOT to use them.
In other words, juniors and mids tend to focus their attention on technology. Seniors tend to focus on delivery.
We've come full circle and have just pulled our stack back from a complex framework (Durandal, akin to Angular) to a simple architecture centred around knockout.js, and everyone is happier for it. The code is cleaner and debugging is a world apart.
Backend wise I've taken a liking to Express because it hides nothing. I prefer it over Rails or ASP.NET MVC, where there is so much magic. I would switch if I could but we have too much legacy code.
We're running production apps based mostly on Knockout.js and jQuery. We also use lodash and moment.
The problem with getting stuck into one particular framework is that then become an "X" programmer, not a web programmer. If you need a fully fledged bells and whistles one though, Angular is probably top dog at the moment.
If you're not in an environment where you have mentors, or if you find yourself easily distracted, sign up to a course at a school with proper in person training and testing or you're just going to keep procrastinating.
I'm a programmer more than a gamer. I have a fondness for wireless & free scrolling mice. I'm currently using a Logitech m560 which is okay, but the balance is off.
Don't worry about the fads. Software always changes, there's no such things as a sure bet. It's more important to learn good technique, idiomatic javascript and "how to learn".
To dive in pick one with a lot of good documentation and a strong community. Pick a popular one and get to know it well, they all solve the same problem, so understanding the problem is more important. Take a look here, for an idea of popularity: http://libscore.com/data.html
If asked to make a call, I'd say Angular - it's massively popular and growing. It's on practically every interviewers list. And chances are, even if they break backwards compatibility, the community will fork and continue a 1.* branch.
I'm running a 2014 15" MBP as a Windows machine with bootcamp. It's not bad, but would not have been my first choice (Company issued) My personal beef is the keyboard layout sucks (for a Windows guy). Other than that it's a perfectly capable Windows machine.
We're a start up using using .NET/C# MVC4 SQL Server etc etc. (Sorry can't give names Just call us "Medical Software").
There are a lot more .NET start-ups than one is lead to believe, but you don't hear so much about them because they're too busy making money to give interviews to TechCrunch ;) Seriously though, they tend to be from developers branching out of existing enterprises & "non-cool" fields and have existing customers or bootstrap funding.
With Azure, AWS, Bizspark & MAPSDD cost implications of being on the .NET stack are negligible comparing to the long term savings in maintainability.
My short answer is, go with what you know, it's better to have a solid working product than a flakey pile of learner spaghetti.
I'm a .net dude at a startup though and to be fair long term costs should be factored in, but can be mitigated. For one BizSpark is an absolute must to get started, and once you graduate there are the Action Packed for a few hundred dollars a year.
I would however suggest you look rather at using oss where possible even from . Net. We have used MySQL, Mongodb and redis on Linux because it keeps scaling costs down, and to be frank they' re better supported on the platform.
We also leverage BitBucket and TeamCity rather than TFS for cost reasons.
Having said that both Azure and AWS have fairly scalable windows and SQL hosting services.
Programming is the 'easy' part. To be employable learn the rest of the process, which is typically language agnostic:
Dev Processes & workflow (scrum),
DVCS (git),
TDD,
CI/CD (Travis/Jenkins/TeamCity),
devops (puppet).
etc
They're the things, regardless of language or project you will need, but which are rarely taught properly.
I'd say almost always it's the soft stuff: Respect, stress, suitable challenges etc. I know very few Senior Devs who've left a great place to work just for more money.