Understanding ECMAScript 6 delivers exactly what the subtitle proclaims, the definitive guide for JavaScript developers. While I have been working with Javascript for years now (and particularly ECMAScript when I was developing for Flash) I hadn’t really kept up with the recent developments. JavaScript always seemed to be missing important OOP concepts like classes or inheritance, and the ways to “fake” them with objects always seemed like a hack to me. Thankfully, ECMAScript 6 (or, rather, ECMAScript 2015) addresses these concerns and build JavaScript into a much more elegant language than ever before. If you want to get up to speed with the latest and greatest, I can’t think of a better resource than this book.

Nicholas C. Zakas does a great job here of showing all the new functionality in ECMAScript, and also how it compares to the older standard. The chapters in the book delve into block bindings, strings and regular expressions, functions, destructuring, symbols, sets and maps, iterators and generators, classes, promises, proxies, and modules. Each code example is self-contained, and the author shows a number of samples for each concept, making it easier to understand step by step. He even starts with how it was done in ES5, so you can see familiar concepts transformed into their modern equivalents. I learned quite a lot here from this text, and feel like I’m ready to start coding in ES6, even though this was the first book I read on the topic. It’s that good.

One thing to note, this is not an introduction to JavaScript. The author assumes you are already proficient at the intermediate to advanced level, and does not waste time trying to explain the fundamentals. If you are just starting out, this book will probably be too advanced and confusing, you should have a good handle on JS first before embarking here.

Overall, I think this is a premiere quality resource to go on your shelf (or digital library, if you buy the e-book version). The Kindle version looked particularly good on my tablet, and the text and code were formatted well. At around 350 pages, the book is not super long but manages to explain everything in vivid detail. I could tell Zakas had a full understanding of what he was teaching, and each example was clear and to the point. Some of the later chapters (the one on proxies, in specific) were a little obscure, but I liked that he went the extra mile to cover everything. Honestly, I’ve read a ton of programming books, and this is one of the best. Well worth picking up if you even have the slightest interest in coding modern JavaScript.

WebGL Programming Guide is the first WebGL book that I can fully recommend. The authors stick to straight WebGL code (no libraries like Three.js) and explain everything in full detail. Since they focus more on the API than anything else, most of the samples are simple things like colored triangles or spinning cubes, but that is fine to learn the basics. I liked how sometimes they would show things not to do, and what would happen, which helps with understanding the concepts.

In the book, which is around 500 pages long, Kouichi Matsuda and Rodger Lea cover many important topics including: WebGL initialization, drawing a point, a triangle with transformation, basic animation, color and texture, the GLSL language, cameras, lighting, and a shorter chapter at the end with techniques for fog, shadows, alpha blending, etc. Really a great roster for anyone looking to learn WebGL. Much appreciated are some of the tricks they show, like how to pick 3d objects with the mouse, or how to render off-screen objects to a texture, useful for shadowing or other effects. There is even a chapter detailing how to write an OBJ model importer, perfect for someone not wanting to rely on 3rd party libraries.

I especially liked how detailed the book can become, for example when explaining the differences between right and left-handed coordinate systems. Something that can be confusing to 3d novices but the authors here did a great job. They also use beginner friendly terminology for certain things, like calling depth buffering “hidden surface removal”, which was odd at first until I remembered someone new to 3d may not understand what a depth buffer is without prior knowledge. In the book, many parts of the API are listed out in charts, such as the built-in functions/variables for GLSL, function signatures for the GL context (which explan the errors you may get and return values, etc.). A very competent look at the API.

The book was well written and I did not see any obvious errors (though I did not attempt to run any of the code). Thankfully, they make the code available on the book’s website for anyone wishing to run it themselves and pick it apart. It’s honestly hard to find fault with the text. This is a great look into WebGL and a key point in your journey as a WebGL programmer. Not to be missed.