December 08, 2007

Designing Web Navigation: A book review

Early on in his impressive book - Designing Web Navigation (O'Reilly Media, 2007, Technical Editor: Aaron Gustafson) - author James Kalbach carefully and precisely introduces us to the fundamentals of web navigation.

This isn't a book in which the author has thrown in a grab bag of his experiences together and presented them with splashy graphics. Instead, Kalbach breaks out concepts, often presenting conflicting points of view (he mentions Alan Cooper's call to dispense with navigation entirely) and embellishes it with research from the fields of usability and human factors. This approach makes the book feel academic but it doesn't take away from the readability of the text at all. (In fact, it would make a pretty good textbook for a related course)

At one point in the initial chapter, Kalbach quotes research from usability expert Jared Spool that suggests that users who use Search to find a page in a web site are much less likely to browse the site than if they found the page using the site's own navigational aids.

This point is a critical one because it underpins Kalbach's focus on navigation. You can rely on Search to get users to your page, but the search engine now becomes the navigation of choice for the users - it has no vested interest in keeping users on your site. If you want your web site to be sticky, then design great navigation.

A little later when explaining the types of navigation and constructing key questions to formulate when designing navigation, you have the epiphany that this book isn't just about web sites. Instead it is laying down the paradigm for the flow of any application - networked or otherwise.

All through the first part, Kalbach's ability to dig into the details and anticipate the curiosity of the reader holds up well. Thus, right after listing the different mechanisms of navigation (paging, tabs, breadcrumbs, etc), he talks about some uncommon forms of navigation and ties them to the browser's own navigation mechanisms (back button, bookmarks, etc).

In Part II, a framework for navigation is presented. In the two early chapters in this section: Evaluation and Analysis, Kalbach talks about taking a step back at the beginning of a web design project to ask some key questions about the site under design. Evaluation and analysis techniques are discussed but importantly a systematic way of conducting preliminary research for the site is presented.

In the chapter on Architecture, we learn how to lay out navigation concepts, information structures, organizational schemes and site maps. These form the blueprint of the application flow. The stress on these aspects is important. As software architects have known for long, time spent up front is cheaper than time spent correcting things later (if they can be corrected at all).

Two more chapters round out this section: one explains layout and the other digs into presentation via typography and color. The treatment here is cursory but gives the user a fair idea of what is involved. A suggestion would be to bolster the references at the end of each chapter with some books that provide a detailed practical treatment of these topics.

Newer technologies like Ajax are changing the level of interactivity built into web sites. And in doing so, they are opening up new ways to navigate content. Kalbach doesn't forget to address this in his final chapter. But this is a newer area and the body of research isn't of the same density. Most of this chapter is spent discussing some of the newer techniques, their advantages and some common pitfalls. There are useful examples to go peruse to observe a noted technique. As Ajax pervades web sites - and given that this is an important text I would like to see around for a long time - I hope Kalbach integrates his final chapter into the rest of the book in later editions.

Each chapter is accompanied by a brief list of questions. These have been well thought out - I found myself reading and thinking about most of them and it actually helped me revise the material collated from the book up to that point. There is a list of references also and each book suggested is accompanied by a few lines that describe its relevance and importance. If you collect all of these, you will end up with an impressive list of reference material on related topics - and most importantly you'll know when to break each one open.

Congratulations also to O'Reilly and the book's design team. Color and white space are balanced beautifully in the book. The font (Hoefler Gotham) is crisp, clear and easy to read. My only nitpick would be that the color of the smaller headings is a little light - which caused me to miss them on several occasions. The graphics look consistent and sharp, the binding is excellent. I'm not a huge fan of break-out boxes but they've been done well here.

December 02, 2007

Book Review: The Unofficial LEGO MINDSTORMS NXT Inventor's Guide

The really neat thing about David J. Perdue's enthusiastic and systematic starter guide for Lego robot fans - The Unofficial LEGO MINDSTORMS NXT Inventor's Guide - is that it incorporates a number of practical, essential things you need to know. But it does this without making the task of building robots feel intimidating. In other words, its a book that makes you want to get off your chair and start building Lego inventions.

A lot of the book's readable style comes from the progressive way in which the material is presented. Perdue starts by introducing the various parts in the kit and giving an overview of how these are put together and programmed. This is followed by an introduction to the various pieces - a breakdown of the NXT, servo motors and various types of sensors. By digressing briefly to explain how these parts may be used, this chapter gets your juices flowing.

Just as importantly, Perdue then lays out the physical TECHNIC pieces and explains how these are used. This gets specific - various pieces and their capabilities are explained, giving you the ability to address them using specific terms (clearing up a lot of communication if you are building this with a friend - or a child).

Later, there are short paras with pictures on how to combine these pieces to create standard constructs in robots - wide beams, corners, angles, dynamic structures, etc. This bit of practical advice presented in menu form up front is a great idea because later as you are building the robot, you get to recognize the design pattern you are using.

Finally a discussion on constructing gears to transfer motion and an introduction to the NXT-G programming language brings you to the invention projects. The walkthroughs on the projects are fairly engaging to follow. There are step by step instructions how to build the physical robot.

The accompanying pictures are pretty clear but I've always had problems with the progressive building steps. In this book there are a couple of embellishments that really helped. First, each step has a picture and count of the parts added in that step. And sometimes there are arrows to show how the insertion of those pieces takes place. In fact these help so much that I'd have liked the arrows to be there in every picture and perhaps formatted in a different color for clarity. In more complicated robots, portions are built separately and then put together in an effort to organize the complexity.

In terms of the accompanying programming, Perdue simply shows the program in a breakout figure. The program is commented briefly enough that you know what various blocks might be doing. You can download all the programs for the robots from Perdue's web site. This is a cursory approach but its forced by the limitations of having to explain a graphical program.

There are seven major bots in all - there are robots with wheels (zippy-bot), legs (guard-bot) and even one with a turntable using an ultrasound sensor (golf-bot).

Also be sure to check out the Amazon site for the book where Perdue has added pictures of selected bots with notes.