Decoding JavaScript : a simple guide for the not-so-simple JavaScript concepts, libraries, tools, and frameworks