Thursday, September 29

AJAX Error Arrow

I hope to have the opportunity to see if I can make some long, ugly forms (Blogger Settings pages, anyone?) verify and submit with XMLHttpRequest. Some thoughts:
  • onblur validation would be really neat. It could even call back to the server to check on constraints beyond mere formatting (for example, “is this BlogSpot URL taken?”), or even do everything server-side to prevent the duplication of effort intrinsic in JavaScript validation. When the user pauses, go back to the server and check and, if there’s a problem, the little error triangle could pop up to indicate and explain what’s wrong.
  • In the case of an error after the user clicks “Save,” have a nice looking arrow pointing towards the error explanation, possibly as a prelude to auto-scrolling. It could fade in quickly and serve as an indication that we’re about to scroll the browser window to the location of the problem.

Sub-page Caching Granularity

The <bigwig> project has a neat component that allows them to cache page fragments automatically on the client. The whole strategy is explained in
Language-Based Caching of Dynamically Generated HTML.

It boils down to translating pieces of the templates (templates are written in a domain-specific language) into individual JavaScript files. These files represent static structure (albeit with “gaps,” places where dynamic content will be inserted) and can be safely cached by the browser without worrying about stale content.

Each page of the web application is simply a “string pool,” a list of the bits of dynamic content, and instructions on how to combine template pieces into the final page. All assembly is done client-side with JavaScript.

I think this is a pretty cool idea. It’s also probably a bit of overkill, given the problem. It also has some nasty consequences: no searchability, no view source, and a requirement on JavaScript.

Thursday, September 22

Tuesdays with vim, part 2 (on Thursday)

I’ve been using vimdiff for my code reviews, since it, unlike tkdiff can be run without worrying what my DISPLAY variable is set as. (Important for working with screen over ssh. Though there are workarounds.)

vimdiff automatically folds lines that have no changes in them. This is very convenient. The command to unfold and show the text is,
which stands for “fold open” (if you believe that “z” stands for “fold”). To re-do the fold, and hide the unaffected lines, use “fold close:”
These are typed from command mode and are not ex commands (so no :).

Thursday, September 8

iTunes 5.0 Interface

Many opinions about the new look for iTunes 5.0. Michael Tsai has collected the reactions from the Mac blog regulars.

I really like the lack of window borders, which fits in with what Aqua’s done from the very beginning. The different corner radius is pretty stupid. I don’t dislike it, I just don’t know why they bothered.

My gripe is that the toolbar is hideous looking. The individual pieces are, if not lickable, at least unabrasive. But the combination is pretty terrible. It’s missing an aesthetic sense of balance. The volume slider looks pathetic — fragile, even — and pixelated. The search box looks as if the middle pane just let one and it’s trying to casually slide away to avoid the smell. Meanwhile, it’s overly pale and dull compared to the polished sheen of the other elements. And there seems to be an overall lack of consistency in shadow and depth that I can’t quite put my finger on.

Ah, well. They can’t all be beauties.

Safari 2.0.1 Has No Release Notes

Safari 2.0.1 came out a week or so ago, and I just got around to upgrading my work PowerBook. Given that Safari is one of our supported browsers, I wanted to know what was new and fixed and adjust my testing and development accordingly.

But, the only word is that it “improves website compatibility, application stability and support for 3rd party web applications.” No other release notes or anything. Every Mac website on the planet is parroting Apple’s description, and no one seems to know what’s changed. Other than that this build, unlike development versions from April, doesn’t pass Acid 2.

Not even a peep from the Safari blog. (Though it is more concerned with the open source development of the WebKit framework than specific releases from Apple.)

Update: Apparently there has been a lot of grumbling about this issue, and the fine WebKit blog folks posted release notes for Safari 2.0.1. (But with the caution that they may not in the future.) Looks like Blogger isn’t impacted one way or another.

I Want to Meet Andy Hertzfeld

According to the Wikipedia article on Andy Hertzfeld (so consider the source) that John Gruber’s Linked List pointed to, not only did Andy Hertzfeld (previous accomplishments: the Macintosh) graduate from Brown CS, he just got hired by Google! So he might be hanging around, if only I knew what he looked like (or if he’s even in Mountain View).

Wednesday, September 7

Bonus Wednesday with Vim

These are far too useful not to memorize and internalize:


Like i, enters insertion mode, but it moves the cursor to the first non-space character on the line.


Similar to a, but the cursor ends up after the last character on the line.

(I learned these with the help of the O'Reilly book on the subject, which just arrived from Amazon. It's been a very good read so far.)

Tuesday, September 6

IE5.5, Relative Position, and Letter Spacing

I like my job. But sometimes I have to deal with some seriously fucked up browser behavior. For example, did you know that if you have nested block level elements in IE5.5/Win, and the inner one is relatively positioned and has letter spacing set, that the first letter in that element won't show up? I mean, fucking shit. What the hell, you know?

My chosen workaround was adding padding to the top of the outer element. I guess I'm lucky that this is one of the bugs with a workaround.

Tuesdays with Vim, part 1

I'm trying to learn vim, the vi-variant text editor. To help out, every Tuesday I'm going to post a little shortcut or command that I'm trying to internalize. Today's command:


Jumps to line n of the file.

Derek Powazek Just Blew My Mind

I was happily reading Powazek's new article about his redesign, nodding and blinking as he described how, despite his respect for 37 signals' clean, "black and white Helvetica" look, he wanted his personal site to have a "dirty" design. And I was intruiged as he began to dismantle the myth that the bottom of the page, as "below-the-fold" space, was the least-important, least-seen part of the site. After all, Powazek argues, if a visitor has scrolled and has gotten that far, they have earned a "special treat."

In 1996, Jacob Nielsen said "users don't scroll." Returning to the subject in 1997, he said they've since learned. As web designers, we should always be prepared to recognize when we can take advantage of users' growing familiarity with the conventions of the medium, and not get stuck designing for out-dated expectations.

So I scrolled down.

And what I found there was amazing. Powazek just killed the sidebar, and it looks stunning.

I think this design has three things going for it:
  • The main content can stand pretty much alone, or be framed by something appropriate. At any rate, it receives the pure initial focus of the visitor's attention. You have the horizontal room to use a bigger font, or just do something plesant in the margins.
  • Things are crammed in sidebars. Putting them down below gives them room to breathe, too. If you have a bit of navigation or mini-content that needs to be wide, it can be wide.
  • The navigation is suddenly right where I want it. I've read the post, and now all I need to explore Powazek's blog further is there, begging to be poked at.