July 2011

I’ve been having some wrist issues lately, so I’ve switched to an ergonomic split keyboard (and made an appointment with an orthopedist). I’m also trying to cut way down on my mouse usage; since I mouse with my right hand and that’s the wrist with worse problems, the mouse is my prime suspect.

But how to navigate the web without using a mouse?

Turns out that many mouse navigation actions can be replaced by the plethora of undocumented keyboard shortcuts hiding inside Firefox. Here are the ones I’ve found most useful; maybe some will prove useful to you too.

(On a Mac, replace “ctrl” with “cmd” in all the following examples.)

  • To follow a link via the keyboard: Hit the forward-slash key to enter Quick Search mode. Start typing the text of the link. The first few letters are usually enough. Once the link is highlighted, hit enter.
  • To go back: Backspace/delete key.
  • To enter a url: ctrl-L to focus the awesome bar, then start typing; optionally use the down arrow – or better yet, the tab key – to select a suggestion, and then hit enter to go to the selected url. (I find the tab key much easier to hit from the home row than the down-arrow key, and they both move down through awesome bar suggestions.)
  • To do a search: ctrl-K to focus the search box. I typically hit ctrl-T for a new tab, then ctrl-K to focus the search box, then type my search term, then hit enter to do the search.
  • To go to a bookmark: typing “* keyword” into the awesome bar – asterisk, then a space, then the keyword – will filter the awesome bar suggestions to show only bookmarks matching the keyword. You can think of the asterisk as representing the bookmark star icon. The whole interaction is ctrl-T for new tab, ctrl-L to focus the bar, asterisk, space, keyword, tab to select the bookmark, enter key to go to it. Sounds like a lot of work, but for me it’s still faster than hunting through my labyrinthine bookmark menu with the mouse.
  • To switch to a tab: much like the asterisk filter for bookmarks, a percent sign will restrict awesome bar matches to currently open tabs. “% keyword” will show only the open tabs that match (by url or page title) the keyword. E.g. I often use “% bug” to show all my Bugzilla tabs. So ctrl-L to focus the bar, percent space keyword, tab key to select the right suggestion, enter key to focus the tab. Again, I actually find this faster than hunting for tabs with the mouse.
  • There are many more filters besides * and %, too. You can find them documented at Mozillazine.
  • Another way to switch to a tab is by its position: ctrl-1 focuses the leftmost tab, ctrl-2 the second leftmost, etc. I generally don’t find this as useful as switching by names, but it can be great for app tabs, if you always have the same app tabs open in the same order. So for example ctrl-1 for me will always be WordPress, ctrl-3 will be my Zimbra calendar, ctrl-7 is the Test Pilot mercurial repo, etc.

What all these keyboard interfaces have in common is that they’re based on recall, not recognition — they work best if you know exactly what you want, and can call it by name. They’re not very good for things you’re used to recognizing by icon or by spatial location (e.g. if you’re used to getting to a certain page by clicking the second link in your bookmark bar, you’d have some adjustment to do.)

(Not Firefox related, but I’ve also mapped the ctrl key to the caps lock on my keyboard, which makes using Emacs a lot more pleasant, since I no longer have to do contortions with my left pinky to trigger commands there.)

Anybody have any more keyboard navigation tips to share? (Or tips for fighting RSI?) The comments are open.


"Official Bottom 95% of All Web Sites" badge

One thing I don’t like at all about Silicon Valley culture is its monomaniacal focus on Hugeness: on the very biggest companies and websites.

Living in said valley, we get bombarded with news and gossip about what Google, Facebook, Twitter, Apple, and a couple of others are doing (Yahoo and Microsoft, no longer considered “cool”, are slowly dropping off the list.) The tech press acts like the Internet is defined by the actions of these few companies. Whatever they’re doing, everybody else had better copy it, or risk irrelevance. You don’t matter unless you’ve got hundreds of millions of users and are raking in billions of dollars of advertising money.

(I imagine even Google and Facebook must feel the pressure to copy Google and Facebook! Why else do they keep trying so hard to break into each others’ markets?)

Part of Silicon Valley culture is the assumption that the destiny of every company or website is to become huge or to fail: those are the only two options. Global reach, with tens or hundreds of millions of users, is the only definition of success. Venture capitalists are known to base their gambles upon the idea that the profits from one one breakaway hit will pay for the losses from twenty flops. The breakaway hits are what they’re after; a modest but sustainably profitable company is not.

There are structural reasons for this attitude. The lack of barriers to competition on the web means no longer do you just have your neighbors to compete with. You have to compete with everyone in the world. That means that if company X offers something even 1% better than its competition, it can rapidly become a global near-monopoly. And so many web-based activities have network effects — sites like LinkedIn, eBay, etc. become more useful the more other people are using them, so success tends to snowball.

I feel this attitude misses something important. It misses what made the web so interesting in the first place. Think back to 1995 (if you’ve been on the internet that long). What was so exciting about the emerging medium? What was it that pulled you in for the first time?


A user on the Test Pilot discussion forum wrote:

“I didn’t join the big brother “test-pilot” but had to comment on how invasive this research will really be to the average user. Everything you type, always, whether sent or saved, will be saved on a database. If you have a webcam and you agreed to the test pilot thing, mozilla can use your camera to see what is going on. It sounds absurd, but it
is simple for a computer to identify certain things and bring the more important images to the front, however, your actions will be recorded whether they are flagged as a hazard or not. just put a bit of electrical tape over the lens when you aren’t using the camera.

I hate being watched….Peace”

It would be easy to dismiss this person as paranoid. (If we wanted to spy on you, why would we go to the trouble of announcing a data collection program and inviting people to voluntarily join it?) but actually, he is absolutely right to be concerned about his privacy and absolutely right to be skeptical of the motives of the organizations writing his software.

No, Test Pilot does not collect video data or connect to your webcam in any way. (I don’t even know how I would connect a Test Pilot study to a webcam! The user is accusing me of being a much better programmer than I actually am.) It does not record any words that you type, either. Certain studies have recorded certain very specific keystrokes, in order to tell whether a user is using keyboard shortcuts for Firefox menu items, for example, or whether they’re using the Enter key in the URL bar. We published a privacy policy and we have stuck to the rules of that privacy policy. And each study gives you, before you agree to upload anything, the chance to review the collected data for yourself.

The user who posted the above message has already decided that he doesn’t trust us, so I doubt I can convince him that we’ve stuck to our privacy policy.

But, as Levar Burton used to say on Reading Rainbow, you don’t have to take my word for it.

All of the Test Pilot studies are open-source, as is Firefox itself, as is the Test Pilot extension that bridges the two. Anyone who likes can examine the source code for themselves.

Now not every user will have the time, inclination, or ability to read through that source code. But not every user has to; all it takes is one whistleblower to look at the source code and tell everybody “hey, it looks like this study here is doing something fishy”.

So here’s the link to the source code of every single Test Pilot study. And here’s the link to the source code of the Test Pilot extension that runs them.

Go ahead! Read through that code. Look for the functions that secretly turn on your webcam and log the words you type. (There aren’t any.) Flag anything that looks fishy, wrong, or that looks like it might go outside the privacy policy. Please! We’ve got nothing to hide. I would welcome that sort of code review. I would consider it a personal favor from you to me to help us improve the quality and security of Test Pilot code.

This is an underappreciated benefit of open source. With closed-source software, you have to take a company’s word that they aren’t doing anything fishy with your machine. An open source project can’t hide that kind of thing from its users. Sharing the code keeps us honest.

“Why did my Firefox suddenly go from 3.6 to 4.0 to 5.0 in the space of half an hour?” asked my friend on the phone, in the middle of what was otherwise a conversation about role-playing games.

“Because the automatic updater system is working?” I said.

“Was Firefox 4 really so broken that you had to kill it after three months?” he asked. Except he used a ruder word than “broken”.

“No, not at all”, I said, remembering the giant launch party we had had for Firefox 4. It did feel kind of like we told everybody “Firefox 4 is the greatest thing ever, and it’s finally here! Download it now! OK now it’s obsolete already.”

“It’s just that we’ve got this new rapid-release schedule going”, I continued, “where we push out the new releases every three months, so that users always have the latest bug fixes and speed improvements and stuff.”

“OK, well, it says that Perapera-kun (the extension I use to translate Chinese) is no longer compatible. I really needed that extension.”



Hello, everybody! My name is Jono Xia and I work for Mozilla User Research. I haven’t updated “Not the User’s Fault” in over a year six months.

It’s not because people have stopped making terrible UI designs.

It’s not because Internet freedoms have stopped being under attack.

It’s not because I stopped having opinions. Oh no. I have more opinions than ever. Some of them might be pretty controversial ones even.

I just got into a period of heavy crunch time and overlapping deadlines with developing Test Pilot and all the other things I was working on, and blogging got pushed out of my schedule. And when something gets pushed out, it’s easy for it to stay out.

But it’s about time to re-start this blog, I think.