Archive for December, 2006

Notes on getting PNG transparency in IE6 with pure CSS

Sunday, December 24th, 2006

Recently, I started building a site with a lot of transparent image elements. The trouble was the the client required support for IE6 as well as IE7. Now, IE 6 and lower do not support transparent PNGs out of the box, but I knew that there were workarounds for that.

The question was, which workaround to use? One method I saw involved using an Explorer “behavior.” Unfortunately, this solution required loading and HTC file, which is an ActiveX control. ActiveX controls aren’t loaded in IE6 with default security settings. Maybe there is a workaround for that, but I couldn’t find it in a timely fashion. Besides, the HTC solution requires an HTC file and a special GIF file be stored on the server. Adding mysterious stuff to the client’s file tree is something I really like to avoid.

Then I ran across a brand new article (based upon a much older article) at A List Apart: Super-Easy Blendy Backgrounds. This article describes a pure CSS technique of getting image transparency to work in IE 6.

Authoring accessible Web content

Monday, December 4th, 2006

This began as a post for the JAG internal wiki. After I’d gone to all the trouble of looking everything up and spelling it right, I thought it would be worthwhile to mirror the post here.

Here are a couple of basic pointers for building Acessible Web sites. I generally am interested in Accessibility, because it’s part of the Semantic Web vision. When I come across a relevant article, I tag it with accessibility. But I became especially interested after the National Federation for the Blind sued Target, basically because Target refused to add ALT tags to their images.

In no particular order, here’s list of core techniques:

Writing JavaScript

Monday, December 4th, 2006

This began as a post for the JAG internal wiki. But I wound up looking up a lot of good links, so I thought I’d mirror the post here in order to keep those links handy.

When I want to implement a requirement, such as a business rule or DHTML behavior in JavaScript, sometimes I find that I don’t know how to implement that behavior. Sometimes this might be because the requirement is complex, as in the case of DHTML animation. Or the algorithm I am searching for may just be obscure, such as a unique ID generator that uses a closure instead of a global counter.

When I do not immediately know how to implement a requirement, I usually need that information in a hurry. I do not have time to make extensive flow charts, or to research the deep features of JavaScript. What I want is to find someone else who has already implemented something ‘’similar'’ to the requirement. And I want to see their source code.

What makes different

Saturday, December 2nd, 2006

I’ve explained to a lot of people over the last few weeks. When I explain a new technology to a bunch of novices, that’s usually when I start to understand it myself. As I was explaining what does, I had to think a lot about how works. And I had a few insights about what makes a different kind of online community.

  • No batch import. Sure, I can import as many bookmarks as I want. But to make them public, I have to edit each one individually. This makes it harder to spam.

    It also means that all you ever see when you look at are links that I have chosen to display since I created my account. And somehow, that makes a very large difference in the quality of the community.

  • No batch edit, except for tags. I can change my own tags, but (as I mentioned) I can’t make all of my bookmarks public without visiting every one individually. And I certainly can’t apply a new tag to a whole bunch of bookmarks all at once (unless they all already share a tag).
  • Because of the two restrictions noted above, there is effectively no way for me to change my user name.
  • Even though is a “social bookmarking” service, there is no way to directly contact another member. If I like you, I can add you to my network. But that’s it; no “ mail,” or “notify me when someone in my network is online,” not even the option to “invite so-and-so to join your network.”

    In fact, while the word “share” occurs frequently when discussing, I don’t think I’ve ever heard the word “invite.” Perhaps this might imply that is marketed mostly to people who are interested in interacting with the other people that are already on Then perhaps the people who join the community tend to be people who already know and like the existing community.