Getting Started with GEO, CouchDB and Node.js by Mick Thompson

geo couchdb.gif Why? Unfor­tu­nately I quickly come to this ques­tion and don’t get an answer when read­ing Get­ting Star­ted with Geo, CouchDB and Node.js. The brief sum­mary and end piece of the book enticed me. The premise appeared to be: today’s tech­no­logy tells us where we are, so how can we best work with this loc­a­tional data? Good premise. Anti­cip­at­ing that this might be a deeper than I would typ­ic­ally attempt to go pro­gram­mat­ic­ally, the idea of put­ting together a use­ful applic­a­tion as an exer­cise appealed to me.

I can usu­ally back­wards engin­eer how we will get there. The point being: when I know why I am doing some­thing it gives me the con­text and in this I can often parse in the miss­ing bits. I will admit up front that I do not have a rig­or­ous hands-on code back­ground. I can usu­ally work my way through things, but I do need to know why I am doing some­thing to determ­ine how it is actu­ally happening.


This unfor­tu­nately is where I find a a prob­lem with the author’s approach in this book and why it is not dir­ec­ted at me. I am sure there are oth­ers who will find this an appro­pri­ate and pos­sibly great book. Of the three tech­no­lo­gies men­tioned in the title, I have some grasp on node.js. CouchDB I only know by name. Geo encom­passes some con­cepts I do know such as GeoJSON and G

eohash. So far so good. This is a get­ting star­ted book, and it leads me to believe that I will be start­ing from some meas­ure of scratch. How­ever, after a two para­graph intro­duc­tion that main­tained the tease, I start to dive in and am imme­di­ately lost.


The first chapter is on Node.js. and moves very quickly into the tech­nic­al­it­ies of installing using Node.js, with abso­lutely no explan­a­tion of why I would use it or how this might fit into a big­ger pic­ture. There’s no hand-holding here, just a bunch of rel­at­ively low level dis­cus­sion of asyn­chron­ous call­backs. Why? I don’t know. Who am I mak­ing requests of, what inform­a­tion am I look­ing to retrieve? I have no idea. This is a get­ting star­ted book. It would be appro­pri­ate to explain exactly what sort of prior know­ledge a user will need to use this book. I really can’t seem to see any qual­i­fic­a­tions and Get­ting Star­ted sounds pretty basic to me. I am get­ting star­ted. How­ever, this book is jump­ing in some­where bey­ond where I am. I want to get star­ted, but where can I go for more inform­a­tion? Per­haps the title was meant to pre-qualify who this book is for. Unfor­tu­nately I looked bey­ond that and it really soun­ded like the pro­ject that was being under­taken was some­thing that I could and would do.

I breathed a sigh as the next sec­tion on Geo­graphic Data star­ted a little slower and in fact very well laid out and writ­ten. It is well intro­duced, gives good examples of where you might seek data (i.e. places you may also get some good back­ground inform­a­tion as well). But again there is some assump­tions about basic knowledge.

Quickly I sense that this book is far too con­cise. Maybe the editor decided that the 250 page manu­script sub­mit­ted was far too wordy and asked for some massive cuts, I am not sure what was asked, but the end res­ult is some­thing even less than skeletal. The author begs off spend­ing too much time with geo­graphic data formats as he claims this could occupy a full book in itself (it could and a ref­er­ence to one a reader might turn to here would really help). Where are a few of the more com­mon ones? He tells us about ESRI shapefiles. They are com­mon and you might get away with the single para­graph describ­ing them, but where are the other formats? The links to pub­licly avail­able data­sets is mea­gre, but a reas­on­able start. Then we are into GeoJSON and imme­di­ately more info really would be use­ful, even if the user might already have some expos­ure to JSON or even GeoJSON set a found­a­tion, reaf­firm a com­mon under­stand­ing, build a bit of a bond between reader and author. Not there. Ref­er­ences to co-ordinate arrays and fea­ture col­lec­tions need some sort of explan­at­ory declar­a­tion so that reader and author know they are both talk­ing about the same thing. I might be a developer that knows some of the frame­works, but doesn’t have any geo­spa­tial back­ground. At this stage even ref­er­ences to places for more inform­a­tion might be acceptable.

Now we are into CouchDB and yet I don’t quite know why I am being bom­barded with all these tech­no­lo­gies with the assump­tion I already know a fair bit about them. This is the least con­cise chapter yet and we are taken through some brief exer­cises after installing it. The instruc­tions though remain very cryptic to me as I attempt to get started.

This is a very com­pact book. To my taste far too com­pact and doesn’t provide near enough back­ground inform­a­tion for me to really carry out the tasks, or know where to get more inform­a­tion to carry them out. Most cru­cially though I don’t have any sense of why I am car­ry­ing out any of the tasks. The back cover of the book is extremely well writ­ten and led me to believe I would be led through cer­tain tasks as part of a lar­ger pro­ject to build an example pro­ject. The four bul­let points gave me a sense of how the tools that were ref­er­enced in the title fit together and all soun­ded very logical. How­ever, it seems as though the struc­ture of this ‘get­ting star­ted exer­cise’ although impli­cit, does not inform the nar­rat­ive approach at all. Why am I installing node.js? Where else would I use it? Why were par­tic­u­lar frame­works developed? Answers to any of these would help me to under­stand bet­ter what I am doing. But what I really want to know is why I am installing it, or couch­Base, or learn­ing about a shapefile, or know­ing that GDAL is widely used. There are four chapters in this book, and although I wouldn’t con­sider myself par­tic­u­larly stu­pid, and can dis­cern that they must be build­ing into this example pro­ject, the author never men­tions how until we hit the four and final chapter. To be hon­est, he has lost me by then and why I really can­not con­sider this a use­ful tutorial at all. As I men­tioned, per­haps it is just because I don’t have the appro­pri­ate back­ground (clearly I don’t) but I didn’t dis­qual­ify myself when this was touted as a Get­ting Star­ted book and nowhere is any prior exper­i­ence men­tioned. I was dis­ap­poin­ted with this volume. I real­ise that it is meant to be a very brief (48 page) manual, but I feel it is miss­ing many cru­cial explan­at­ory mater­i­als that would actu­ally lead a reader through the book and it also misses a very basic teach­ing meth­od­o­logy of let­ting me know how what I am doing is build­ing to an end that I want to achieve.

I sup­pose that this book may have interest to a developer already famil­iar with all of the tools men­tioned, but that may not have com­bined them pre­vi­ously — but I am not the per­son to judge whether this book meets the needs of that audi­ence. I hope this is a fair review and as I say reflects my expect­a­tions and abil­it­ies. This wasn’t the book for me.


Leave a Reply