(Cross-posted from http://evilbrainjono.net)

I wrote a Thunderbird add-on to make the email interface I’ve always wanted — one that helps me remember to stay in touch with people I really care about, instead of always distracting me with the newest incoming trivia.

The add-on is called Lovebird and you can download it here.

lovebird screenshot (with fake names)

the names in this screenshot have been changed to protect the innocent

The rest of this post is about the philosophy behind Lovebird and why I designed it the way I did.



Alexander Limi has posted a video, from the Design Lunch three weeks ago, wherein the UX leads answered questions about their provisional redesign of the Firefox UI.

Alex wants to warn you that the contents of this video are very rough, very much a work-in-progress, and very much liable to change. You shouldn’t watch it thinking "this is how the next version of Firefox is definitely going to be". You should think of it as a behind-the-scenes look at "how the sausage gets made", in Alex’s words. He also warns:

There’s swearing, there’s mumbling, there’s ranting, there’s hand-waving, there’s political incorrectness.

I’m also in the video, playing MC in my overalls.

Today we recorded Part 2, which goes into detail about the notifications interface and the downloads manager; it should be posted fairly soon.


Raise your hand if:

  • Bookmarks are less important to your web use in 2009 than they were in 1999
  • Trying to find one bookmark in your bookmark menu is like looking for a needle in a pile of a thousand needles
  • You do searches for pages you know you have bookmarked, because using Google is easier than hunting through your bookmark menu.
  • You create about ten bookmarks for each one you come back to later.
  • You know you could make your bookmark menu more manageable with tags and folders… but it’s so much work that you never get around to doing it.

Bookmarking was a great feature back in the days of the first web browsers, but on the modern Web it feels a bit creaky. Maybe bookmarks are no longer doing their job as well as they could be.


For the past few Thursdays we’ve been doing something called an “Open Design Lunch” at Moz. We’ll pick a design problem that somebody’s working on and brainstorm it informally while munching pizza and burritos. Asa has been broadcasting these events on air.mozilla.com.

At today’s Open Design Lunch I brought up the question of how bookmarks should be accessed in Fennec. Bookmark management on Fennec gets extra tricky when you have hundreds (or thousands) of bookmarks from your desktop computer getting synced onto your mobile phone; so this problem is closely related to the UI design of Weave. My previous attempts to design a bookmarks UI haven’t solved these problems to my satisfaction.

The conversation didn’t conclusively settle anything (of course) but it brought up a lot of good ideas that deserve further investigation. Here’s the video:

(Note: These videos use the cutting-edge <video> tag from HTML 5, so they may not work for you unless you have the latest version of Firefox or another standards-compliant browser.)

Infocom interactive fiction – a science fiction story
Copyright (c) 1984 by Infocom, Inc. All rights reserved.
Release 31 / Serial number 871119 / Interpreter 0 Version

You wake up. The room is spinning very gently round your head. Or at least it would be if you could see it which you can’t.

It is pitch black.

>flip lightswitch
I don’t know the word “lightswitch”.

>lights on
There was no verb in that sentence!

>turn on light
Good start to the day. Pity it’s going to be the worst one of your life. The light is now on.

Bedroom, in the bed
The bedroom is a mess.
It is a small bedroom with a faded carpet and old wallpaper. There is a washbasin, a chair with a tatty dressing gown slung over it, and a window with the curtains drawn. Near the exit leading south is a phone.
There is a flathead screwdriver here. (outside the bed)
There is a toothbrush here. (outside the bed)

>get out of bed
Very difficult, but you manage it. The room is still spinning. It dips and sways a little.

>take nightgown
I don’t know the word “nightgown”.

>put on dressing gown
You’re not holding your gown.

>take gown
Luckily, this is large enough for you to get hold of. You notice something in the pocket.

>put on dressing gown
You are now wearing your gown.

>reach in pocket
I don’t know the word “reach”.

>empty pocket
I don’t know the word “empty”.

>take stuff out of pocket
You used the word “stuff” in a way that I don’t understand.

>open pocket
Opening your gown reveals a buffered analgesic, pocket fluff, and a thing your aunt gave you which you don’t know what it is.

>take pills
I don’t know the word “pills”.

>take medicine
I don’t know the word “medicine”.

>take buffered analgesic

In Ubiquity 0.1.1

  name: "get-stuff-from",
  takes: {url: noun_container},
  preview: function( pBlock, dirObj ) {
    pBlock.innerHTML = "Gets the stuff that is inside your " + dirObj.summary;

From the Inform manual

An Inform verb usually has several English verb words attached, which are called synonyms of each other: for instance, the library is set up with

“take” = “carry” = “hold”

all referring to the same Inform verb.

Hitchhiker’s again

>take aspirin
You swallow the tablet. After a few seconds the room begins to calm down and behave in an orderly manner. Your terrible headache goes.

>get toothbrush
As you pick up the toothbrush a tree outside the window collapses. There is no causal relationship between these two events.

>hold screwdriver


>carry robe
You are already wearing it.

In the latest Ubiquity source build, as of yesterday afternoon

  name: "get-stuff-from",
  synonyms: ["take-stuff-from", "take-stuff-out-of", "empty", "reach-in"],
  takes: {url: noun_container},
  preview: function( pBlock, dirObj ) {
    pBlock.innerHTML = "Gets the stuff that is inside your " + dirObj.summary;

There’s been a lot of discussion at Mozilla lately about the keyboard shortcuts for switching tabs, and how to improve them:

  1. Boriss talks about why the new behavior is being proposed for addition.
  2. Atul talks about the trade-offs between the old behavior and the proposed new behavior.
  3. Aza Raskin throws his hat into the ring with some analysis based on information density.
  4. Boriss takes inspiration from application-switching shortcuts in the operating system in looking for ways to improve the new proposed behavior.

In this post I’ll add my two cents to the discussion.

First, if you’re using Firefox, and you have several tabs open, please try holding down the ctrl key and tapping tab a few times, just to see what happens. Go ahead, try it right now. Come back to this page and keep reading after you’re done.

If your Firefox is version 3.0 or older, what should have happened is that each time you tapped tab, Firefox switched to the next tab — meaning the tab to the right in the tab bar. Let’s call this the “old tab behavior”.

If you are using the brandest-newest cutting-edgiest version of Firefox, you would see a transparent overlay with up to three thumbnail images in it, of three of your tabs. Each time you tapped tab, it would change the hilighted thumbnail, but it wouldn’t change anything in your main Firefox window until you released ctrl. Another difference is that the tabs in this mode are ordered by freshness, i.e. by how recently you looked at them, which may be different from the left-to-right ordering of the tabs at the top of the Firefox window. Let’s call this the “proposed new tab behavior”. In case you haven’t seen the very latest Firefox yet, here’s what the proposed new tab behavior looks like:


What would the web be like if you could tell it what you want to do as easily as you currently tell it where you want to go?

Mozilla Labs is starting to experiment with linguistic interfaces. That is, we’re playing around with interfaces where you type commands and stuff happens — in much the same way that you can type a location into the address bar in order to go somewhere.

I think this is cool because, for one thing, I think language-based interfaces are seriously under-explored compared to pointing-based interfaces. For another thing, I used to work on a project called Enso. Enso’s a language-based interface, where you type commands in and stuff happens. I think we got certain things right and certain things wrong in Enso’s UI design, so I want to take another crack at doing it better.

What makes a good linguistic UI?

Here’s my current theory.

  1. It’s easy to learn.
  2. It’s efficient.
  3. It’s expressive.

Those are the three “E”s. Let’s unpack ’em a little.