George V. Reilly

Review: Defensive Design for the Web

Title: Defensive Design for the Web
Author: 37 Signals
Rating: ★ ★ ★ ½
Publisher: New Riders
Copyright: 2004
Pages: 246
Keywords: pro­gram­ming, web
Reading period: 23 December, 2007 - 9 January, 2008

This book contains 40 usability guidelines for websites, ranging from Eliminate the Reset button and disable the Submit button after it's clicked to Give an error message that's noticeable at a glance to Be upfront about item un­avail­abi­ity. The topics include error messages, clear in­struc­tions, friendly forms, overcoming missing pages, helpful help, obstacles to conversion, and search.

When I state them that baldly, they sound obvious. But they're not. The 37 Signals guys have amply il­lus­trat­ed each guideline with examples of sites that violated the guideline, and continue.

Review: Ajax Design Patterns

Title: Ajax Design Patterns
Author: Michael Mahemoff
Rating: ★ ★ ★
Publisher: O'Reilly
Copyright: 2006
Pages: 352
Keywords: web, ajax
Reading period: 29 October-?? November 2007

Review: Bulletproof Web Design, second edition

Title: Bul­let­proof Web Design, second edition
Author: Dan Cederholm
Rating: ★ ★ ★ ★ ½
Publisher: New Riders
Copyright: 2007
Pages: 312
Keywords: css, web
Reading period: 10-29 October, 2007

Cederholm clearly explains the CSS techniques required to build a "bul­let­proof" website: one that is robust in the face of text resizing, window resizing, disabled images, etc, with minimal, se­man­ti­cal­ly correct markup that works across all the major browsers.

Anyone who's serious about building a modern website should read this book.

Cederholm builds up his examples, one step at a time, in a clear manner. For the shorter examples, he tends to show the entire CSS or XHTML again and again, with the latest changes high­light­ed continue.

Er, er

I've grown fond of the JavaScript || idiom:

function FrobImage(img) {
    var width  = img.width  || 400;
    var height = img.height || 300;
    // ...

FrobImage({height: 100, name: "example.png"});

If img.width exists and it's truthy, then width = img.width; otherwise, width = 400. Here, it will be 400 since the img hash has no width property. More than two al­ter­na­tives may be used: x = a || b || c || ... || q;

A few weeks ago, while cleaning up the error handling in some batch files, I came across a similar idiom:

foo.exe bar 123 "some stuff"  


Picture this.

An external USB hard drive plugged in to a machine running Win64. The OS has vir­tu­al­ized the underlying transport so that it's es­sen­tial­ly in­dis­tin­guish­able from an internal IDE, SCSi, or SATA drive. Call the machine, Boss, and the USB drive, L:.

Boss is running Virtual PC, which is hosting a 32-bit virtual machine on top of Boss's 64-bit OS. Let's call the 32-bit VM, Sidekick.

Sidekick is not only a VM, but a virtual network host. Boss is bridging con­nec­tions to Sidekick, and Sidekick and Boss both appear on the LAN as separate network hosts.

The USB drive has several ISO images, which Sidekick wants to use. Sidekick connects to continue.

Greasemonkey for demos and mockups

I've been meaning to play around with Grease­mon­key for a couple of years. Grease­mon­key is a Firefox extension that allows users to install scripts that make on-the-fly changes to the look and feel of third-party websites. For example, adding price com­par­isons to Amazon or thumbnail images to Google search results. User­ has a large repository of Grease­mon­key scripts.

I finally built my first script the other day. We're putting together a new feature at Cozi that integrates partner websites with our site. Since the feature is not yet announced, I'll just say that partners will add a link to Cozi on many of their database-driven pages. That link has a complex, continue.

Review: Pro JavaScript Techniques

Title: Pro JavaScript Techniques
Author: John Resig
Rating: ★ ★ ★ ½
Publisher: Apress
Copyright: 2006
Pages: 347
Keywords: pro­gram­ming, javascript
Reading period: 16 September-4 October, 2007

At, we use the jQuery JavaScript library to do all kinds of complex and wonderful DHTML and Ajax tricks in our web client. Extremely powerful, very elegant: I commend it to your attention.

John Resig is the lead developer on the jQuery team. This book is not about jQuery, though if you work your way through it, you'll be well equipped to understand the jQuery source code.

This book covers modern JavaScript techniques, in particular, object-oriented JavaScript, un­ob­tru­sive DOM ma­nip­u­la­tion, Ajax, and cross-browser warts. It covers a lot continue.

Review: RESTful Web Services

Title: RESTful Web Services
Author: Leonard Richardson, Sam Ruby
Rating: ★ ★ ★ ★ ½
Publisher: O'Reilly
Copyright: 2007
Pages: 419
Keywords: pro­gram­ming, web services, REST
Reading period: 22 August-8 September 2007

Anyone who has attempted to build a Web Service has come away scarred by the complexity of all the WS-* standards. Heavy­weight standards that in many ways reinvent earlier dis­trib­uted object tech­nolo­gies like CORBA and DCOM, providing Remote Procedure Calls over HTTP. The promised in­ter­op­er­abil­i­ty hasn't really happened: a web service built with one stack of tools may or may not be consumable by another stack.

A movement has arisen in the last few years, arguing for RESTful Web Services: lighter­weight services built on top continue.


This week, I have written code in C#, C++, Managed C++, C, WiX, NAnt, Ac­tion­Script, VBScript, JScript, cmd batch, NMake, HTML, XSLT, and Ruby. And I will probably get some Python in before the weekend is over.

Rating with Stars

I want to be able to write some reviews and graph­i­cal­ly rate them with stars. I put together some trans­par­ent stars in Gimp and added a macro to dasBlog.

I'm going to rate this effort:


To get this effect, I simply wrote $stars(4.5).

(And I had to carefully construct the previous sentence so that dasBlog wouldn't invoke the stars macro.)

I'm hardnosed. I rarely give 5/5 to anything. I don't really expect to need the half stars, but I may want that fine control at some point.

To use this in your own blog, download the zipfile of star images.

Copy 5star*.gif to your blog's images directory. The *.xcf files continue.

Previous » « Next