The dialog that launched a million Firefox downloads

The dialog that launched a million Firefox downloads

If you’re using IE you may begin to see this dialog more often then you would like:


What horrible UI.

The above dialog is a result of the legal battle over embedding active content in web-pages. The new dialogs skirt around a patent:

Distributed hypermedia method for automatically invoking external application providing interaction and display of embedded objects within a hypermedia document

Coming soon to an IE browser near you all your ActiveX web pages will start to break. You’ll either see the above dialog or you may see the tooltip variation where you will need to click on the control to activate the content.

What will break:
- Any page with a QuickTime movie
- Any page with a Flash object
- Any page that uses shockwave
- Any page that embeds Windows Media Player
- Perhaps other embedded content (Word, Acrobat?)
- Any intranet pages that use custom activeX controls.

It could be very ugly. It’ll take months for many sites to alter the page code to avoid the error and many older sites that are not maintained regularly will never get updated.

For individuals this will be annoying and many will look for alternatives. For larger corporations that use ActiveX controls internally this will be a major problem. In the first 30 days after the patch is released I suspect that few corporations will deploy the patch as they scramble to figure out the potential impact. Many corporations will likely use this opportunity to evaluate FireFox as an alternative.

FireFox currently has 10% of the browser market. It’s likely that individuals, OEM’s and Corporations looking for an alternative will convert to FireFox by the millions.

Post to Twitter

Linux Thoughts in Portland Continued

Back in December I was invited to Portland, OR to speak at the Open Source Desktop Linux (OSDL) architects meeting. The attendees represented individuals from all top commercial and community desktop Linux groups including Redhat, Suse, Ubuntu, Mozilla, OpenOffice, KDE, Gnome, FreeDesktop, IBM, Adobe, Real Networks, Linspire, One Laptop Per Child project and many others. Together about 70 architect level people where present.

My presentation slides and notes are now available here

Post to Twitter

Functional Images

Typically an image is a composed of a grid of pixels. Each pixel has red, green and blue components. Together these pixels form an image. It’s these images that form the basis of all the graphics you see on the web today.

Now imagine a PNG image this is the most basic idea of a functional image. A PNG image has the same red green and blue components but it also has fourth functional component an alpha channel that interacts with the background. It’s this functional component that allows PNG’s to be semi-transparent.

Now image an even more interesting pixel. Imagine a pixel where the functional component can do much more then simple alpha. The four components would be: Red, Green, Blue and a Function. The functional component of the pixel applies a functional transform on the color with respect to other colors either behind the current pixel or adjacent to the current pixel. An example pixel that would show part of the red channel of an image underneath could be something like:

Red: 0 Blue: 50 Green: 256
Function:{ red=pixel.background(x,y).red/2; }

Another pixel function could shift the image underneath by a couple of pixels:

Red: 0 Blue: 0 Green: 0
Function:{ pixel=pixel.background(pixel.x-5,pixel.y-5); }

Yet another pixel could apply a blur on the x axis of adjacent pixels:
Red: 0 Blue: 0 Green: 0
Function:{ pixel=(pixel.background(x-1,y)+pixel.background(x,y) + pixel.background(x+1,y))/3 ; }

Of course these functions could go a lot further to enable things like shadows, mirrors, embossing, fish eye, lens, gradients and more:

Functional Image Concept
A functional image could be applied as a background to text or as a component of a larger design. This would allow for much more dynamic web graphics. It could also allow designer to easily create graphics that have been elusively difficult to create: Rounded corners, Shadows, Lighting effects as well as image manipulations like multiply, lighten, darken etc would all be possible.

Ok… Now it starts to get interesting. Because the image is interpreted the content of the image can change. Some possible ideas:

  • An image of a beach where the sun can change position based on the time of day.
  • An image that expires on a certain day or time.
  • An image that alters the background to appear like frosted glass or a stained glass window
  • An image that changes orientation based on it’s location on the screen
  • An image that gets tinted based on the background color
  • An image of a circle that stretches correctly and doesn’t look pixelated

This is just a sample of what could be done. Over the years HTML has made a lot of progress it’s time for image technology to catch up.

Post to Twitter

DRM – Dumb Recordable Media

DRM also known as digital rights management is working it’s way into many technologies. Music, DVD’s, Video Games, TV. At it’s core DRM is the new way of saying “Anti-counterfeit technology.”

It’s main purpose is to prevent the counterfeit creation of digital data. Unfortunately DRM is specifically designed to prevent the one thing that consumers want… Choice.

Choice of media player, choice of playback options, choice of hardware vendor.

Fact: It’s impossible to protect digital media in a free information market. DRM technology is like a safe. Your digital media is locked inside the safe. For you to be able to hear your music and use your content you need to unlock the safe. Once the lock is open you have access to the music. Once the combination to the lock is used anyone can look inside.

There has never been a DRM technology that has ever fully worked. They have all been broken.
The RIAA and MPAA are two organizations that are meant to protect the recording and movie industry. But instead of making it easier for consumers to buy and enjoy music and movies anytime, anywhere on any device these organizations put up road blocks in the form of DRM and other technologies. Pssst. Sometimes technology is not the answer.

Fact: If I could legally purchase my favorite music from an online music store in a non-encrypted, non-DRM format for a reasonable price I would buy more music then I do today.

Post to Twitter

ABC Scrollbar Control

I had an idea for a new type of scrollbar. The idea is to enhance the drag space of a scrollbar by giving users information about where in a scrollbar a particular piece of data lives.

Typically if you have to scroll through a very large set of data (10,000 or more) items the scrollbar becomes virtualized and as the user scrolls the application gets data on an as needed basis. When dealing with very large data sets the scrollbar becomes very harder to use. It’s not as intuitive where a particular letter stops and the next one starts.

ABC Scrollbar

The general idea is to use an approach found in most filing cabinets. By placing the ABC’s within the scrollbar it becomes much easier to target the correct spot on the scrollbar to either click or drag. Ideally the spacing and size of the letters would be proportional to the space that the letter takes within the scrollable region.

My friend and co-worker Craig suggested that you could further simplify the appearance of the control by only showing the ABC’s on hover. This makes it look like a normal scrollbar until you need to actually interact with it.

Archived Comments
Sergio Sánchez said…
Great idea! We also think that this concept could be applied to the pagination, introducing the page numbers of a document instead of the alphabet.
March 23, 2006

yusef hassan said…
Great. In my opinion, this scrollbar could be improved with a FishEye technique. The size of letters could be proportional to the space that the letter takes within the scrollable region, and inversely proportional to the distance with the mouse pointer.
March 23, 2006

Michael Zuschlag said…
Yes, there’s all kinds of cool ways you can extend this idea. I was thinking of a database front end where when you drag the scrollbox for a table, tool-tip-like callouts appear showing the scroll-to points for various helpful values of the attribute the table is sorted on. For example, if sorted on status, put a callout at each point in the sort that the status changes; for dates, put a callout at each point the month or year changes.
March 24, 2006

Greg Raiz said…
There are lots of ways to extend the concept and I’m a little surprised that such a control doesn’t yet exist.
One thing that is similar is the ipod radio UI:

http://store.apple.com/Catalog/US/Images/lm_ma070ga_rr.jpg

It’s like a scrollbar in that you scroll through the different stations. On the ticker they show little peaks for your preset channels. If done right the scrollbar could naturally ‘attract’ to logical possitions in the scroll region such as the tops of pages in documents, the tops of functions in code screens or the tops of groupings in database sorts.

If anyone would be interrested in using such a custom control in a project please email me directly. If we get enough intrest I’ll look into building this type of control.
March 24, 2006

Eban Tomlinson said…
Great idea for sure, but just for reference, a similar idea is in the following book. (I’m doing a large amount of reading on HCI as this is the general topic for my undergrad thesis and thats how I ran across this one)

Crawford, Chris
The Art of Interactive Design: A euphonious and illuminating guide to building successful software
QA76.76.I59 C73 2002 (No Starch Press, 2002)
Crawfords idea of implementation is slightly different however. But I thought for completeness it should be posted here. page 125
March 27, 2006

Post to Twitter

Kiss my ARSS – That’s asynchronous RSS

There are a couple problems with RSS. The first is that RSS polls for data. Instead of getting a notification that something is new RSS readers have to check for new information. This works fine for small sites with only a few subscribers but if your feed gets more popular you start to run into problems.

Even if I write nothing and have no new posts my RSS traffic still takes up a significant amount of bandwidth. Is there anything new? How about now? How about now? How about now? Perhaps now? RSS readers just keep polling my server.

Unfortunately there isn’t a commonly accepted way for a server to just tell you when something is new. RSS readers ask for the entire file. If the RSS reader is smart enough and if the server is configured right the server may return a 304 error. (This tells the reader that nothing has changed) Unfortunately this doesn’t happen often.

What if RSS acted more like a subscription rather then syndication technology? Imagine if RSS was combined with a web-service-like function to allow applications to register for events.

First time:
Get the RSS feed as you do today.
In the RSS declaration would be a new property containing a URL for registering and unregistering a subscription notification. Old readers can still get the RSS and keep asking… Anything new? How about now? New RSS readers could call the subscription notification service and register a callback URL.

When the callback URL is accessed that’s the asynchronous notification that tells the RSS reader that new data is available. No more polling. Bandwidth scales with the number of subscribers and the number of posts, not with the polling frequency of RSS readers.

Tools such as blogger, wordpress, and other blogging tools could add such a webservice to their existing publishing steps without breaking old readers. Similarly both aggregators as well as client side tools could incorporate such technologies to improve the user experience.

Client side tools? How would that work? (I hear you ask)
In the same way that email is stored on a server before it is retrieved by your client side email reader an RSS notification could also be qued on a server.

Of course the approach I suggest is a touch more complicated but it also scales better and it allows for existing RSS readers to continue to be simple. As more browsers incorporate RSS the lack of a notification mechanisms is going to continue to grow into a larger issue.

Perhaps in the future I’ll tell people to their ARSS off my site. ;)

Post to Twitter

Acrobat Reloaded

The standard for opening PDF files has been Adobe Acrobat reader. I’ve been using this for many years and have always been underimpressed with it. The main problem for me is load time. When I click on a PDF link from a webpage I want the document now, I don’t want to wait 10-20 seconds. It’s so slow that Google offers to convert pages to HTML so users don’t have to feel the pain of the PDF.

Recently I found a great replacement called FoxIt reader. At first I thought it was Acrobat but it’s in fact a look-alike that loads PDF files in about a second. It seems to have all the same features without all the bloat. PDF files open on screen in less time then it takes for Acrobat to display it’s initial splash screen.

It’s a nice little application, FoxIt could do to Acrobat Reader what FireFox is doing to IE. As it stands FoxIt has a clone UI and it’s website doesn’t exactly look professional. This makes it a follower not a leader. If it took some steps to differentiate itself it could really take off as the new leader for opening PDF files.

Post to Twitter

On simplicity

I’ve met many people who seek to add to a product and enable an endless assortment of new features and functionality. This often goes beyond the original intent of the design. Some believe that a design is complete when there are no more features that can be added.

To me a design is complete when it’s simple, elegant and exactly what the customer needs. A design is complete when there is nothing left to remove. Said another way in one of my favorite quotes:

“Make everything as simple as possible, but not simpler.” - Albert Einstein

Post to Twitter