Why? Unfortunately I quickly come to this question and don’t get an answer when reading Getting Started with Geo, CouchDB and Node.js. The brief summary and end piece of the book enticed me. The premise appeared to be: today’s technology tells us where we are, so how can we best work with this locational data? Good premise. Anticipating that this might be a deeper than I would typically attempt to go programmatically, the idea of putting together a useful application as an exercise appealed to me.
I can usually backwards engineer how we will get there. The point being: when I know why I am doing something it gives me the context and in this I can often parse in the missing bits. I will admit up front that I do not have a rigorous hands-on code background. I can usually work my way through things, but I do need to know why I am doing something to determine how it is actually happening.
This unfortunately is where I find a a problem with the author’s approach in this book and why it is not directed at me. I am sure there are others who will find this an appropriate and possibly great book. Of the three technologies mentioned in the title, I have some grasp on node.js. CouchDB I only know by name. Geo encompasses some concepts I do know such as GeoJSON and G
eohash. So far so good. This is a getting started book, and it leads me to believe that I will be starting from some measure of scratch. However, after a two paragraph introduction that maintained the tease, I start to dive in and am immediately lost.
The first chapter is on Node.js. and moves very quickly into the technicalities of installing using Node.js, with absolutely no explanation of why I would use it or how this might fit into a bigger picture. There’s no hand-holding here, just a bunch of relatively low level discussion of asynchronous callbacks. Why? I don’t know. Who am I making requests of, what information am I looking to retrieve? I have no idea. This is a getting started book. It would be appropriate to explain exactly what sort of prior knowledge a user will need to use this book. I really can’t seem to see any qualifications and Getting Started sounds pretty basic to me. I am getting started. However, this book is jumping in somewhere beyond where I am. I want to get started, but where can I go for more information? Perhaps the title was meant to pre-qualify who this book is for. Unfortunately I looked beyond that and it really sounded like the project that was being undertaken was something that I could and would do.
I breathed a sigh as the next section on Geographic Data started a little slower and in fact very well laid out and written. It is well introduced, gives good examples of where you might seek data (i.e. places you may also get some good background information as well). But again there is some assumptions about basic knowledge.
Quickly I sense that this book is far too concise. Maybe the editor decided that the 250 page manuscript submitted was far too wordy and asked for some massive cuts, I am not sure what was asked, but the end result is something even less than skeletal. The author begs off spending too much time with geographic data formats as he claims this could occupy a full book in itself (it could and a reference to one a reader might turn to here would really help). Where are a few of the more common ones? He tells us about ESRI shapefiles. They are common and you might get away with the single paragraph describing them, but where are the other formats? The links to publicly available datasets is meagre, but a reasonable start. Then we are into GeoJSON and immediately more info really would be useful, even if the user might already have some exposure to JSON or even GeoJSON set a foundation, reaffirm a common understanding, build a bit of a bond between reader and author. Not there. References to co-ordinate arrays and feature collections need some sort of explanatory declaration so that reader and author know they are both talking about the same thing. I might be a developer that knows some of the frameworks, but doesn’t have any geospatial background. At this stage even references to places for more information might be acceptable.
Now we are into CouchDB and yet I don’t quite know why I am being bombarded with all these technologies with the assumption I already know a fair bit about them. This is the least concise chapter yet and we are taken through some brief exercises after installing it. The instructions though remain very cryptic to me as I attempt to get started.
This is a very compact book. To my taste far too compact and doesn’t provide near enough background information for me to really carry out the tasks, or know where to get more information to carry them out. Most crucially though I don’t have any sense of why I am carrying out any of the tasks. The back cover of the book is extremely well written and led me to believe I would be led through certain tasks as part of a larger project to build an example project. The four bullet points gave me a sense of how the tools that were referenced in the title fit together and all sounded very logical. However, it seems as though the structure of this ‘getting started exercise’ although implicit, does not inform the narrative approach at all. Why am I installing node.js? Where else would I use it? Why were particular frameworks developed? Answers to any of these would help me to understand better what I am doing. But what I really want to know is why I am installing it, or couchBase, or learning about a shapefile, or knowing that GDAL is widely used. There are four chapters in this book, and although I wouldn’t consider myself particularly stupid, and can discern that they must be building into this example project, the author never mentions how until we hit the four and final chapter. To be honest, he has lost me by then and why I really cannot consider this a useful tutorial at all. As I mentioned, perhaps it is just because I don’t have the appropriate background (clearly I don’t) but I didn’t disqualify myself when this was touted as a Getting Started book and nowhere is any prior experience mentioned. I was disappointed with this volume. I realise that it is meant to be a very brief (48 page) manual, but I feel it is missing many crucial explanatory materials that would actually lead a reader through the book and it also misses a very basic teaching methodology of letting me know how what I am doing is building to an end that I want to achieve.
I suppose that this book may have interest to a developer already familiar with all of the tools mentioned, but that may not have combined them previously – but I am not the person to judge whether this book meets the needs of that audience. I hope this is a fair review and as I say reflects my expectations and abilities. This wasn’t the book for me.