Restartless Restart Add-on for Firefox

I've always wished that Firefox had a "Restart" menu item, and because of that I've used the Quick Restart Firefox add-on quite a bit in the past. At some point last year while the Jetpack prototype was still being developed I even wrote a jetpack to add the menu item in less than 50 lines for a contest that Mozilla had. I used that for a while, but these days I live on the FIrefox nightly (aka Minefield) and both of those old options aren't available to me any longer. So I decided to write a restartless add-on to add a "File" -> "Restart" menu item to Firefox.

I'm calling this add-on "Restartless Restart" and it works on FIrefox 4+, it's 1KB at the moment, and it does not require a restart to be enabled, disabled, installed, or uninstalled. You can find it on addons.mozilla.org here. If you want to contribute, then you can find the project on GitHub, where all of my projects can be found.

The part that I love most is that it's still less than 50 lines =]

User Script Revives GitHub's Old Download Tab

About three weeks ago GitHub removed a bunch of links to a repository's 'downloads' section replacing them with one big downloads button, which is only available to you on some pages, and instead of taking you directly to the 'downloads' page/section you now get a AJAXy popup that only displays some of the available downloads to you and provides a link to the 'downloads' section.

In my expert opinion this button sucks. It's hard to remember which pages it's available on, except for the source page so I always go there to find it, then I have to wait for a popup that I don't want to see inorder to get the link that I'm after.. another option is to correct the url in the location bar, which is the route I was taking before I finally decided to write a user script to bring the old tab back.

Sceenshots

This is what the old 'Downloads' tab looked like:

GitHub's old 'Downloads' tab

This is what their new button looks like:

GitHub's new 'Downloads' button

User Script

Find this user script at userscripts.org here.

I understand that they had too many links to the 'downloads' section before, but the only one I ever used was the 'downloads' tab, and it's the only one that I find myself wanting now that the old links have all been replaced with the big awful button. So I decided to write a user script to bring back the 'downloads' tab and remove the new button, here it is:

Gist 644434 embed above

Status Update: Week 42

Well I started this week working on Scriptish, but I felt that I needed a break after working on it nearly every day for the past few weeks, so I spent about half the week working on a few other things.

Mozilla Lab's Prospector add-ons, which they announced two weeks ago, caught my attention and I started doing a little hacking on one of them; after spending some time using 2 of the currently 4 prospector add-ons I can tell you that I really like them, because they each focus on solving a single, particular, searching UX/usability issue in the context of the browser, and they're restartless!

Done

Scriptish

  • Released Scriptish 0.1b5 on the 19th.
  • Replacing the status bar icon with a frequently requested toolbar menu-button (It's a button & a drop-down menu), which is added to the add-on bar when Scriptish is installed for the first-time, or when Scriptish is upgraded from a version less than or equal to Scriptish 0.1b5.
  • Added a ID field to the new script window.

GitHub Flavored Markdown

MDC

I noticed that there wasn't any documentation on em:bootstrap on the page describing install manifests, so I added something basic with a link to more information.

Mozilla Labs: Prospector - Find Suggest

  • Performance tweaks.
  • Bug fix when using the find bar on a blank page, which causes an error to be thrown (issue #1).
  • Sorting words with equal frequency alphabetically (issue #3).
  • Changing the regular expression used to split words (issue #4).
  • Requiring words to be 3 characters or longer (issue #2).
  • Making the suggestion limit a user preference (issue #7).

[More]

Easier GitHub Fork Switching

There are many issues I have with my favorite site to host git repositories, GitHub, but today I decided to solve one of them.

The Problem

When you are on a page in one of your project forks on GitHub for say some file in the repository, and you want to switch to see the same page for the project that you forked from, then you have a number of clicks and page loads ahead of you. My feeling is that there should be a single link that allows you to do this, and vice versa.

[More]

My Solution to the Alt-Tab Problem

While I was reading through my subscriptions the other day I noticed Aza Raskin's recent blog post, "Solving the Alt-Tab Problem", where he describes issues with the current alt-tab implementation which orders the applications by Most Recently Used (MRU), please take a moment to read his very detailed post before continuing with this post.

I thought this was a very interesting problem. I've personally always hated the way that alt-tab works, and hardly ever use it because of this, even though I know it should be helpful, it just is not. So, I thought a bit about this in the back of my mind and I finally came up with a solution that I like, and I haven't seen it mentioned yet so I will explain it here, but first I want to list the issues Aza mentioned with MRU and my main issue with it, then I'll quickly describe some of the other solutions I've heard, and finally I'll give you my solution.

Issues With MRU

  • Switching between 3+ applications is brutal (see Aza's post).
  • Constant seethings of MRU confound a person's strong spatial memory (see Aza's post).
  • Thinking about how to switch tabs rips a person's attention from their real task (see Aza's post).
  • If a user presses alt-tab, then decide they made a mistake and want to return to the application that they were using before pressing alt-tab, then they need press alt-shift-tab, because if they just let go of the alt key, then they will be switched to the last application that they used (my issue).

The first and last issues listed above are the two main reasons why I never use alt-tab today.

Proposed Solutions

Aza's HRMRU

In Aza's post he mentions a possible solution, which he admits he doesn't think is great, which is a habit respecting design which he dubbed HRMRU. HRMRU is basically a prediction algorithm which allows the computer to try to predict the order that you desire (read his post for a full explanation). He mentioned the possibility of using a Markov model, but an HRMRU could be implemented an infinite number of ways.

The way that HRMRU is implemented doesn't really matter imo, throughout my time at UBC studying statistics and computer science (with a focus on machine learning), and the rest of my life, I haven't seen an algorithm that would be suitable to implement HRMRU, indeed I wouldn't trust a human being with all of the time in the world to predict my habits (in this context). Furthermore, if some HRMRU method were implemented, then in order to switch applications in the blink of an eye I would have to predict the predictions made by the HRMRU implementation, and that would a terrible user experience. My last issue with this solution is that it would bog down my machine; I absolutely hate it when applications use cpu cycles when it is not necessary, when that happens I start losing control of myself, and I seriously want to start bitching at the developers, because it's what they deserve (if they didn't give me the option of turning their crappy code off).

Lukas Mathis' Solution

I'm not sure what to call Luka's solution, but he explains it here. Basically his idea is to have the currently open application in the second position, and the last application opened in the first position, and the rest are listed in positions 3 and on. Read his post for full details.

This solution would solve the last issue listed above, but does not solve the other issues.

Others

In the comments of Aza's post I saw a number of other options/~solutions mentioned, some of which I think are worth mentioning here, which I'll do as best as I can. There are other solutions mentioned in the comments of Aza's post though, so don't assume this is a comprehensive summary, because it's quite far from that.

Constant Order

This solution is very simple, the applications are listed in the same order that they were opened.

Truth be told I think this was the best solution mentioned in the long list of comments on Aza's post, it's even better than MRU, it takes care of all issues except for allowing quick application switching, which happens to be very important.

alt-tab-mouse

This is implemented on OSX and the windows alt-tab power toy (maybe winXP too I haven't checked). It's a simple solution, the user presses alt-tab, then uses their mouse to select the desired application.

This is a great solution, there is no doubt about it, but switching from keyboard to mouse all of the time is a terrible user experience, so a fully keyboard based solution is a must have, so this is only really part of a solution. Also, switching between 3+ applications in the blink of an eye is not possible with this solution, so it's just not enough.

Application Grouping (Activity Grouping)

I didn't really bother figuring out how this solution is supposed to work, as I understand it though you'll be able to group applications together, then some how you're able to switch quickly between applications..

Albeit, I don't fully understand this idea, and may not fully appreciate it, but it doesn't sound great to me. Presumably I would have to switch group/activity, then choose an application, and how I would do this isn't clear to me. This does sound like it could be an option, but it sounds like switching between 3+ apps may still be an issue, or at least it's not something that you could do in the blink of an eye.

Number the Listed Applications

This idea is simple, number or letter each open application (with 0-9 and a-z, then nothing). This way a user can alt-tab, then hit the number/letter associated to the desired application.

I like this solution.

My Solution

To start with I think a few of the solutions mentioned above should be implemented, namely the alt-tab-mouse solution, the lettering of the first 26 open applications, and ordering the applications by the order that they were opened.

Obviously, I think that if the user presses alt-tab then lets go of these keys, then I don't think the application should be changed. Also, I think the user needs to be able to customize the order that the applications are ordered (the default ordering would be the order they were opened, and this would be customizable on the fly), so the question is how should the user be able to do this? well I thought of a couple ways, one is to use the mouse to change the order via drag & drop, and the keyboard method I thought up was to incorporate the ctrl key. To change the order of the applications by keyboard only a user would simply move the selection box to the application that they want to move (so alt-tab or alt-shift-tab to the application, while holding the alt key) then they hold the ctrl key along with the alt key which 'picks up' the application, and then the user could press alt-ctrl-tab to move it right, or alt-ctrl-shift-tab to move the application left.

Now when the user presses alt-tab the currently focused application will be selected, and they can quickly alt-tab to switch to the application to the right, or alt-shift-tab to switch to the application to the left, and they can manually alter the order of the applications to something suitable for them at that moment in time.

There should also be a separate key for switching back and forth between the last application used, I don't care what it is, maybe alt-tab-`, it doesn't matter I think. It would also be nice if the last application used was easy to spot in the alt-tab list somehow, so that the user could slow down and ensure that they are going to the right application before switching, so in this case they would press alt-tab, then hold tab see the last application used, and then press ` to select it and then they just let go of the alt key to switch to it.

Finally, I've got another set of hotkeys that I think will help, which are to use the numbers 1-5 or 1-9 such that the user can quickly switch to the application that is some # positions away from the currently application in the alt-tab list by pressing alt-# or alt-shift-# (ie: pressing a number while holding alt) which would select the application some # of positions to the right or left of the current application (ie: pressing tab while holding alt is equivalent to pressing 1), and if the desired application is 100 positions away or whatever, then they just press alt-tab-5 20x, or reorder the list so that they don't have to do that every time. This may sound bad for a large number of applications, but that'll be the case with any solution, even HRMRU.

You'll notice that all of the issues listed above are solved, and the code would be lightening fast, the only issue I see is that unless you've read about these hotkeys you may not find them, but alt-tab will still work, and be useful.

A Jetpack: Java Settings

This Jetpack is meant to help Firefox users quickly enable and disable Java or JavaScript, and it is my third entry for the Jetpack 50-line Code Challenge.

Java Settings Jetpack

About

This Jetpack will add a "Enable Javascript" and "Enable Java" menu items to your "Tools" menu for quick access to these settings.

Screen Shot

How To Install

  1. Get Firefox here.
  2. Get Jetpack here
  3. Get the "Java Settings" Jetpack here

[More]

A Jetpack: Firefox 'Restart' Menu Item

I wrote this Jetpack as another entry for the Jetpack 50-line Code Challenge, it is simply a 'Restart' menu item for Firefox's 'File' menu.

When I was trying to come up with ideas I starting thinking about replacing a number of Firefox extensions I currently use with a lightweight Jetpack. So I instantly thought about Quick Restart, by Juan Carlos Avila B, which I have used a lot in the past, but it had a bunch of extra data packaged with it that I didn't want such as localization (albeit I'm sure this is something others want), xul, css, and images files.

I've used Quick Restart for some time now, and still think it is a great addon, but I'm pleased to say that there is a Jetpack option available now.

Firefox 'Restart' Jetpack

About

This Jetpack is using source lifted from the Ubiquity Firefox extension's built-in 'restart' command.

Screen Shot

Screen shot of the 'Restart' menu item in Firefox's 'File' menu

How To Install

  1. Get Firefox here.
  2. Get Jetpack here
  3. Get the "Firefox 'Restart' Menu Item" Jetpack here

[More]

Would You Like To Know More?

This is just a last moment idea inspired by the movie Starship Troopers which flashed in to my mind a couple of days ago as I was thinking about Jetpacks for the Jetpack for Learning Design Challenge. It is primarily a Microformat/Link Type proposal for rel-info with some ideas and prototypes demonstrating how it could be used.

Abstract

When you are reading something on the web there are usually pages which exist elsewhere on the web that would provide background information, and further reading if you desired to dig deeper into the subject(s) you are reading about. Sometimes some of those pages are linked to from the article you are on, but often the link wouldn't make sense in the context of the content, and using a link tag isn't very useful to a user, so the link is not made.

I propose a rel-info link type, even if just as a Microformat, for 'a' and 'link' tags to provide a link to context-sensitive information.

With rel-info a user can read more about the Movie that was discussed at Netflix or IMDB easily for example, because the publisher (or a script the user subscribes to, more on this later) provided a rel-info link which the user can easily find and follow with a Jetpack, Firefox extension, or some other browser extension.

Proposal

When rel-info links are provided on a page browser extensions can easily extract them from the page, which can lead to a large number of use cases, of which I am sure I have only just scratched the surface. There is another side to this coin however which is that there are a large number of ways that rel-info links might be added to a page.

Let's explore the latter case, first the person who published the page could add rel-info links, but then browser extensions could add rel-info links, they could also search for and remove rel-info links. A user could subscribe to a person's or institution's suggestion feed or script which adds and/or removes rel-info links to pages, along with using a AI based browser extensions to add rel-info links.

When the rel-info links are going to be consumed there are some other interesting possibilities, for example a browser extension could filter the links by a HTML 5 'data-topic' attribute by keeping a list of topics that the user dislikes or likes, the domain could also be used for filtering. A browser extension could allow the user to mark pages as read so that they are removed from pages in the future as another example.

Prototypes

To test this link type out with a Jetpack I first had to add it to some pages, so I decided to write a couple of UserScripts to do this demonstrating how they can be dynamically added to pages by anyone even users themselves. The first userscript was to add the rel-info link type to IMDB links, and another to add the rel-info link type to Wikipedia links.

If you install the above UserScripts then you should find rel="info" or rel="... info" on your IMDB and Wikipedia links. Once you have done that you can check out and install the "Would You Like To Know More?" Jetpack. This is a slidebar Jetpack, and when you open this slidebar the focused tab is then scanned for rel-info links, if any are found then they are displayed in a list for you to choose from, if you click one of the provided links a new tab will be opened for the new page.

These UserScripts and the Jetpack take advantage of HTML 5 'data-' attributes, by adding a 'data-source' attribute to the rel-info links added on the userscript side, which the jetpack was written to check for and display if found. This is an example of how HTML 5 'data-' attributes can be used with the rel-info link type which I propose to create more interesting results.

A Jetpack: Google Web History

This Jetpack adds a "Show Google Web History" menu item to your Firefox "History" menu.

Get it at:

A Jetpack: Greasemonkey Context Menu

This Jetpack will add the Greasemonkey menu commands to your context menu.

Screen Shot

Get it at:

More Entries

© Erik Vold 2007-2012. Contact Erik Vold. Top ^