Opinions are like birthdays: everyone has one and I heard about yours on Facebook.
Tool Sets and Libraries
This is easily the most opinionated part of this process. I am always open to code changes; hearing the viewpoints of other developers who may have more experience or a different perspective often lead me to change my code. We call it software for a reason. It should be malleable. It should adapt. When it comes to my tools, however, that's a different story.
OS - Mac OS X
Let's get the holy war out of the way. If you use Windows, more power to you. You must like the extra challenges of playing on Expert mode. For me, there are three key reasons I develop on the Mac.
- Most every environment I am going to deploy to is a *nix variant. Having a BASH (or similar) shell integrated into the OS allows me to create workflows that work everywhere I do.
- The Cool Kids Use It
- Most of the developers and designers that I read and learn from are using it. This isn't simply a case of "me too!" This is a case where I want zero impediments in my way of completing my task. If they recommend a tool or a library or even some non-web-dev related utility, I'd rather be able to copy them than go searching for an equivalent.
- I've worked on Apple hardware since the Apple][ days. It just makes more sense to me.
So, yeah, use Windows if you want. Good luck with that.
IDE - Jetbrains IntelliJ IDEA (or Webstorm)
I'm maybe a little bit more flexible on this issue, but not by much. As a professional developer who works with a number of different languages and technologies, having a tool that works across all of them is something I find is worth my investment in time and money. I've been using it since Version 1 when I met the original developers at a conference in Prague. It has been my IDE of choice ever since. Any good text editor like Sublime or Atom can be a useful tool with the right setup and plugins. IDEA mostly works out of the box with deep support for things like Node, Angular, Grunt, and the like.
Brew is "The missing package manager for OS X" and allows you to install and maintain the tools used to develop and build. Get it. Install it. If you like GUIs, get Cakebrew.
We're going to use Node to stand up a web server to serve our REST endpoints and access the database. DO NOT simply go to the website, download the package and install it. You'll end up in a world of hurt, having to run everything as sudo. Use Brew (see above).
$ brew install node Should we switch over to io.js? Maybe? This is one of those rat holes I wanted to avoid with this project. Investigating io.js is an endeavor for another day.
At this point, we have the makings for a web server that can serve up data. Well, we have the tools anyways. In the next installment, we'll create a project structure and web server we'll use throughout the project.