September 2016 archive

Book review: Beautiful JavaScript edited by Anton Kovalyov

beautiful_javascriptI have approached JavaScript in a crabwise fashion. A few years ago I managed to put together some visualisations by striking randomly at the keyboard. I then read Douglas Crockford’s JavaScript: The Good Parts, and bought JavaScript Bible by Danny Goodman, Michael Morrison, Paul Novitski, Tia Gustaff Rayl which I used as a monitor stand for a couple of years.

Working at ScraperWiki (now The Sensible Code Company), I wrote some more rational code whilst pair-programming with a colleague. More recently I have been building demonstration and analytical web applications using JavaScript which access databases and display layered maps, some of the effects I achieve are even intentional! The importance of JavaScript for me is that nowadays when I come to make a GUI for my analysis (usually in Python) then the natural thing to do is build a web interface using JavaScript/CSS/HTML because the “native” GUI toolkits for Python are looking dated and unloved. As my colleague pointed out, nowadays every decent web browser comes with a pretty complete IDE for JavaScript which allows you to run and inspect your code, profile network activity, add breakpoints and emulate a range of devices both in display and network bandwidth capabilities. Furthermore there are a large number of libraries to help with almost any task. I’ve used d3 for visualisations, jQuery for just about everything, OpenLayers for maps, and three.js for high performance 3D rendering.

This brings me to Beautiful JavaScript: Leading Programmers Explain How They Think edited by Anton Kovalyov. The book is an edited volume featuring chapters from 15 experienced JavaScript programmers. The style varies dramatically, as you might expect, but chapters are well-edited and readable. Overall the book is only 150 pages. My experience is that learning a programming language is much more than the brute detail of the language syntax, reading this book is my way of finding out what I should do, rather than what it is possible to do.

It’s striking that several of the authors write about introducing class inheritance into JavaScript. To me this highlights the flexibility of programming languages, and possibly the inflexibility of programmers. Despite many years of abstract learning about object-oriented programming I persistently fail to do it, even if the features are available in the language I am using. I blame some of this on a long association with FORTRAN and then Matlab which only introduced object-oriented features later in their lives. “Proper” developers, it seems, are taught to use class inheritance and when the language they select does not offer it natively they improvise to re-introduce it. Since Beautiful JavaScript was published JavaScript now has a class keyword but this simply provides a prettier way of accessing the prototype inheritance mechanism of JavaScript.

Other chapters in Beautiful JavaScript are about coding style. For teams, consistent and unflashy style are more important than using a language to its limits. Some chapters demonstrate just what those limits can be, for example, Graeme Roberts chapter “JavaScript is Cutieful” introduces us to some very obscure code. Other chapters offer practical implementations of a maths parser, a domain specific language parser and some notes on proper error handling.

JavaScript is an odd sort of a language, at first it seemed almost like a toy language designed to do minor tasks on web pages. Twenty years after its birth it is everywhere and multiple billion dollar businesses are built on top of it. If you like you can now code in JavaScript on your server, as well as in the client web browser using node.js. You can write in CoffeeScript which compiles to JavaScript (I’ve never seen the point of this). Chapters by Jonathan Barronville on node.js and Rebecca Murphey on Backbone highlight this growing maturity.

Anton Kovalyov writes on how JavaScript can be used as a functional language. Its illuminating to see this discussion alongside those looking at class inheritance-like behaviour. It highlights the risks of treating JavaScript as a language with class inheritance or being a “true” functional language. The risk being that although JavaScript might look like these things ultimately it isn’t and this may cause problems. For example, functional languages rely on data structures being immutable, they aren’t in JavaScript so although you might decide in your functional programming mode that you will not modify the input arguments to a function JavaScript will not stop from you from doing so.

The authors are listed with brief biographies in the dead zone beyond the index which is a pity because the biographies could very usefully been presented at the beginning of each chapter. They are: Anton Kovalyov , Jonathan Barronville, Sara Chipps, Angus Croll, Marijn Haverbeke, Ariya Hidayat, Daryl Koopersmith, Rebecca Murphey, Danial Pupius, Graeme Roberts, Jenn Schiffer, Jacob Thorton, Ben Vinegar, Rick Waldron, Nicholas Zakas. They have backgrounds with Twitter, Medium, Yahoo and diverse other places.

Beautiful JavaScript is a short, readable book which gives the relatively new JavaScript programmer something to think about.

Book review: The Runner’s Handbook by Bob Glover

runnershandbookI took up running a year or so ago, on May 2nd 2015 – to be precise. I know this because the first thing I did when I started running was buy a fancy GPS runner’s watch. I started because I wasn’t very fit, and the gym was expensive and didn’t really fit around my available time. You can see some statistics on my running in my earlier blog post. Not long after getting the watch I bought some proper running shoes and since then I’ve lost 10kg and gone from “running” 5km in something over 30 minutes to running 10km in under 50 minutes.

But I’ve got a bit jaded and stuck in my running ways, so I thought I’d get The Runner’s Handbook by Bob Glover to help me with my next steps. There are a wide range of guides on the internet, but I’m a committed book buyer. Running is pretty much my only exercise, although I cycle 40 miles to work and back most weeks this is at a fairly leisurely pace. I’m aware that the lower half of my body, heart and lungs are quite fit but the rest is not – sort of like and inverted Popeye.

There is an early opportunity to test your current fitness with some standard exercises in The Runner’s Handbook. It turns out I’m in the top 25% for running speed over 1.5 miles which makes me an intermediate runner, but linger in the lower half for upper body strength and flexibility. To be honest, the push-ups test left me aching for several days after my over-enthusiastic efforts!

The Handbook is pretty comprehensive, 700 pages of comprehensive. It covers fitness, and the motivation for getting fitting, running programmes for different standards of runner, training for races, all the way up to the marathon distance and also training for speed. I read the first 250 or so pages covering these topics and a further 100 or so on Running form and Supplemental Training. I’ve skipped sections on food and drink, running environment, running lifestyle, special runners and illness and injury. I can always dip into them if the need arises.

The writing is very readable, Glover chatters his way through the book half in conversation with his co-author Jack Shepherd. Glover is a real enthusiast for his sport. He has trained many amateur runners, and you get a feel for New York state and the New York Marathon through his writing. He introduces some of the history of the modern running movement, dedicating the book to Fred Lebow who took the New York Road Runners Club from 200 members to over 30,000. He also took the New York Marathon out of Central Park and into the city, a pattern subsequent repeated around the world.

Glover also dedicates the book to Nina Kuscsik, who was instrumental in getting women admitted to longer distance races, starting with her own run in the 1972 Boston marathon, which was accompanied by significant male protest. I was bemused to read that the original sports bra was constructed in the late 1970s by stitching two jockstraps together.

As a result of reading the boo I have a set of stretches and upper body strengthening exercises to try out. The sections covering these are a bit repetitive and could really have done with some diagrams. Fortunately, having introduced dozens or exercises Glover does provide a sample work out with a more manageable set of things to do. I must admit one of my problems with running is that I try to go faster with every run I do. Reading The Handbook has backed me off from this futile quest. Now I can go out for a run and not feel I’ve failed if I don’t beat my previous fastest time.

The second thing I’ve learned is that I have to get a heart rate monitor! Okay, so Glover says I could do some crude manual measurement involving feeling my pulse and counting but where’s the fun in that? The idea being that you are in cardiovascular training mode when you reach something like 70-80% of your maximum heart rate. I have my eye on the Garmin Forerunner 235 or maybe the cheaper Garmin Forerunner 35. These both have light-based heart monitors under the wristband of the watch rather than the more usual (and cumbersome) chest monitors. By the way, you’re not going to read about the very latest gadgets in Glover’s book – this edition is from 1996 but it doesn’t feel at all dated.

This was the right sort of book for me, it is comprehensive and authoritative, it reads well and there are some things I can go away and do now to improve my running.