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.
Definitely agree with this. It can be hard to get started and/or stay with doing the learning when you're doing it on your own. Some people just do better when learning in the context of a group/class or with a pair/mentor. It's really easy to spend time and find yourself just reading/browsing the coding sites instead of doing the work, i.e., writing code, so either try and set small, achievable goals, or find someone you can learn with.
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.