Review of “Web Form Design, Filling in the Blanks”

August 4th, 2008

“Forms suck.  If you don’t believe me, try to find people who like filling them in.”

Are you kidding, I paid for a book that begins like that?  My first reaction was that I could have written that!  Well I didn’t write it, and I also feel that I got my money’s worth out of Web Form Design, Filling in the Blanks, by Luke Wroblewski.Cover of Web Form Design

Forms are hard.  I don’t think I need to mention how hard they can be for users… nor do I need to mention what’s at stake if a user finds your form too difficult.  Every web developer who doesn’t have his/her head in the clouds should know that.  Forms, however, are also very difficult to create… correctly!  A well designed form requires a lot of careful, detailed thought.  You have so much to consider… usability issues, accessibility issues, and you usually don’t have anything to go on except for your personal experience.  This book will help you methodically approach form design, and give you the experience of an expert to guide your decisions.

Web Form Design is useful, because Mr. Wroblewski takes a very detailed approach to each aspect of form design.  Within each chapter, he thoroughly analyzes the major elements to consider when designing a form.   For example, the chapter on “Actions” is devoted to action items such as submit and cancel buttons.  One of the sub-sections discusses where to place these items on the page.  The author first presents the reader with the following image demonstrating all of the reasonable placements for the submit and cancel actions.

Figure from Web Form Design

Using eye-tracking and usability data, he then discusses the pros and cons of each arrangement, without ever deciding one is better then all others.  This is key because it lets the reader, knowledge in hand, decide his/her own course of action.

The book is especially valuable because of the user data, eye-tracking data, and case studies presented within. Mr. Wroblewski’s backs his reasoning with either a summary of these tests or with an example culled from his experiences.  He reinforces his points with a number of demonstration images, all available from the book’s flickr page.  Then he includes a short “best practices” section to close each chapter, outlining what was discussed.  These can be used almost as checklists.  Interspersed in the text are sidebars which present real-life examples and perspectives from numerous field authorities.

Web Form Design is written well enough so that it can be easily read within a few hours.  However, it’s real place is beside you the next time that you have to design or write a form, so that you will be able to make intelligent design decisions, rather than just best guesses.

Clean room!

July 17th, 2008

Last weekend, I FINALLY had a chance to clean my room, and I’m pleased with the results.  Really, though, this post is just an excuse to do one of those “this is my desk, this is my bookshelf” posts that everyone seems to do.  :)

Top of bookshelf #1

My favorite books are mostly at the top (actually, there’s no rhyme or reason to any of it).  Just looking, I realize that there are a bunch of Ruby books that I almost never look at. The orange book behind the wire on the top shelf is a really good Dover book on Graph Theory.

My Desk

My monitor setup.  I’ve got 3 computers, the laptop, my ‘frankenmac’ desktop, and a pc.  The frankenmac is dying, so I am probably going to have to shift things around.  I don’t have a plan for which computer will go with which monitor, but the desk is now set, and won’t change.  I’ve got my new Griffin Elevator sitting there.  I’m happy with it, keeps the bottom of the laptop really cool.

Anyway, it’s been a week… let’s see how clean I can keep it.

Le Tour

July 15th, 2008

I’ve been following Le Tour again this year.  Previously, the aerial shots of France kept my attention, but this year I have been interested in the  competition.  I’ve found the mini-goals and side stories are as good as the goal of le maillot jeune.Le Tour

Anyway, I try to avoid re-posting the “hot link of the day” type links—the ones that have been passed around on other blogs—but the Boston Globe’s Big Picture blog is worth it… just take a look at those photos.  This set from the flickr blog is also pretty cool.

Still not enough? Follow tour coverage from the New York Times.

Review of “Learning Website Development with Django”

July 7th, 2008

Cover, Learning Website Development with DjangoOver the past few weeks, I’ve been playing around with Django.  Because of that, I’ve been looking at a few different books on the subject.  I first started out with the Django Book, which took me a few days to read.  I can’t say I absorbed it all, but I got the general idea.  Then I decided to look into other books and found Learning Website Development with Django, by Ayman Hourieh.   I started right away.

The book’s subtitle, “A beginner’s tutorial to building web applications, quickly and cleanly, with the Django application framework,” frames the book perfectly.  Its target audience is programmers (moderately) familiar with Python, but who are, at the same time, new to Django.  The book is really focused towards this audience.  The other key word in the subtitle is “quickly.”  This book moves along in a hurry while creating the demonstration app.  I was quite comfortable (and pleased) by the pace, however, I can imagine that a more novice programmer may have a harder time dealing with the information flying by.

The book centers on building one app, a social bookmarking website similar to del.icio.us, or ma.gnolia.  I think type of site was a good choice, since it provides the author with a varying degree of complexity to play around with.  It allowed Mr. Hourieh to start with the basics.  This book succeeds in starting simple and getting harder as it goes along.  I also thought it was good to focus on creating just one website, rather than a bunch of mini-projects or examples, since it models a more real-life situation.  The idea of a social bookmarking website, as well, is very useful because its features are currently en vogue, and can be found on many current sites.

Chapters One and Two are the obligatory “what is Django” and “how to install” chapters.  The meat of the book starts in Chapter Three when the project is introduced.   By the end of this third chapter, we’ve already quickly written three database models (Links, Users, and Bookmarks) and the main page.  Chapter Four introduces Django’s built-in user authentication system (django.contrib.auth), and describes how to write login, logout, and registration pages.  Chapter Five instructs us to write an additional database model (tags), which is more complex than the models we wrote previously.  Here we also write pages to display the list of bookmarks, bookmarks by tags, and a tag cloud.  [To illustrate how fast we’re moving, Chapter Five ends on page 91]

Mr. Hourieh adds occasional asides throughout Learning Website Development with Django, such as one on security at the end of Chapter Five.  Personally, I’d have liked to see more of these, but I think he consciously limited the number to better suit the book’s audience.

Chapter Six introduces AJAX behaviors, using the jQuery library.  The author includes a lightning-fast tutorial on jQuery.  The reader is then shown how to implement a live search display, in-place bookmark editing, and a tag auto-complete feature.  Chapter Seven adds both a voting and commenting system to our application.  The user writes a new database model (Shared Bookmark), and shows how to implement comments piggy-backing on Django’s built-in comment system (django.contrib.comments).

In Chapter Eight, we are finally introduced to Django’s built-in Administration Interface (django.contrib.admin), and the reader is shown how to customize the admin pages and deal with user permissions.  Chapter Nine describes adding RSS feeds, Pagination, and advanced search capabilities to our application.  We’re taught how to create advanced model queries using both the objects.filter() function and Q objects to build multi-faceted queries.

Chapter Ten focuses on adding a “Friend” data model to the application.  This chapter demonstrates how Django can be used to send email (friend ‘invites’ in this case), and how the bookmark application can be used to handle activation links.  Chapter Eleven covers three topics; language translation, caching, and unit testing.  None of these are as “flashy” as the previously covered topics, but they are given adequate mention. The final chapter, Chapter Twelve mentions a number of advanced topics that the reader is left to research on his/her own.

The book is generally well written.  I like the structure.  The chapter beginnings outline a plan for implementation, and the remainders proceede step-by-step.  I would have liked the writing to have been polished a little more.  The language seems too formal in places, and when you mix in a number of technical ideas, the language can distract.  This however, may just be a personal preference.

The more I think about Learning Website Development with Django, the more I like it.  It is well suited for someone who wants to get off the ground quickly; someone who needs to get something done and can worry about the details when they need to.  It’s not a bible, but it’s not trying to be, and I think that’s where it really succeeds.

July 4

July 4th, 2008

Photo by Vidiot. Click image for details.Happy July 4th!  Now, with that out of the way…

My sister Tania was at the Nathan’s Hot Dog eating competition today.  She was happy with the result, I was rooting for Kobayashi.  Oh well.  My roommate was rather disgusted by the whole thing.  Me?  I found myself REALLY wanting a hot dog.

Speaking of food… my roommate and I were flipping channels the other day and she insisted on stopping on the food network.  They had a show on about local resturants known only to locals.  The first part was on a place I’ve passed countless numbers of times, called Chaps Charcoal Resturant. It looked pretty good, and the prices are good, so I may have to visit soon.

Since I’m on a food kick at the moment, one more… this may also soon become my favorite thing.  Gotta try it.

Elsewhere…

The Sox won, beating the Yankees today, but are still behind the Rays.  If the Rays suffer injuries down the stretch, they’ll fall.  However, that seems to be a big if.  The Red Sox need to get a number of people back.

And  more locally…

When I have some free moments, I’ve been working rebuilding gbyo.com in Django.  The programming part isn’t particularly hard (despite not being familiar with Python… though, it’s not unlike other languages), and I kinda like the database API (It’s been a while, so I only barely remember ActiveRecord, but I seem to like this more).  The thing I haven’t grasped yet is overall project structure.  I’m working on that.

I’ve bought a number of books recently, and hope to start reading them soon.  Right now, I am reading this, as the publishers were nice enough to send me a review copy.  Review coming soon.  Additionally, I want to post some more formal thoughts about Crockford’s Javascript book soon. (Note: yes, that first linked book cost me .48 cents, w/o shipping)

I’m trying to convince people to go on vacation with me.  So far, I haven’t heard back from anyone.  That will only stall me, it will not deter me.

Down to three bugs

June 20th, 2008

I’m officially (at this moment) down to three bugs on my project at work.  This means… that I am almost ready to resume my life, as well as writing here… for the first time in 6 straight months.  I’ll be taking some (much needed) vacation time at some point, but am anxiously looking forward to re-connecting with this site.

Additionally, can I just mention that the Celtics won?  So my Red Sox are World Series champs, my Giants are NFL champs, and now my Celtics are NBA champs.  How sweet is that???

RSS Request

June 15th, 2008

I love syndication, be it RSS or Atom, and I probably love it more than the next guy.  Because I love it as much as I do, I have no problem asking this:

If you offer an feed, PLEASE subscribe to it yourself.  That way, if there’s a problem, you will notice along with your readers.

That is all.