Even before I converted my laptop to Linux, I had been running Firefox as my browser everywhere. It’s a good browser, made even better by plugins that can do all sorts of neat things. In some cases equivalent functionality can be achieved using other browsers and/or external proxies, but in other cases it’s hard to see how you could get the same functionality other than as a plugin. Here are the five plugins that I find most useful, in the order that I installed them.

FoxyProxy allows me to set up multiple proxies, and define pattern-based rules to select which one (or none) to use for each URL. This one’s all but essential when I’m working from home, allowing me to access all of the internal websites at work – wiki, bug database, test results, etc. – through an ssh tunnel while still using my own (faster!) link for everything else.

One of my pet peeves while browsing is sites that insist on opening links in a new window. I want to control whether or not to use a new window, thankyouvery much. Enter Greasemonkey, which can actually allows users to do a great many things by defining Javascript scripts which can arbitrarily rewrite pages however you want. In this it’s very similar to Proxomitron (inactive but apparently semi-reincarnated as Proximodo) or Privoxy, except that the filters have all the capabilities of Javascript and DOM instead of just string-based pattern matching, plus of course they work right within the browser instead of as an external program. Right now the only script I use is “killblank” which fixes the problem I just mentioned, but some day I plan to find or create Greasemonkey equivalents of the several dozen Proxomitron/Privoxy rules I’ve developed over the years.

There are several ad-blocking scripts for Greasemonkey, but an even better solution is Adblock Plus. It’s better because, in addition to letting you maintain your own lists of things to block, it also lets you subscribe to external lists that get automatically updated so you never have to see the latest form of junk even once before it’s gone. I use EasyList and haven’t seen any junk for a while.

As with FoxyProxy and Greasemonkey, I don’t use 90% of the functionality of Firebug. Heck, it’s probably more like 99% in this case. Firebug looks like a true technical tour de force, offering functionality that I would not have believed could be done as a plugin if not for the fact that it obviously has been. This is the one that I just don’t think could be done in IE, other than by the IE team at Microsoft, no matter how many ActiveX controls or external proxies you threw at it. The most technically impressive features have to do with Javascript debugging, and there are some neat features for digging into the structure of the HTML and CSS that make up a page, but while I can appreciate the coolness of those features I don’t actually use them. What I do use is the feature that shows me the Javascript errors on a page, and particularly the feature that shows me how long it took to load every file (style, image, script) that goes into a page, so that I can tweak my Greasemonkey and Adblock Plus configurations. Those features alone, though I’m sure the developers almost consider them throwaways, make Firebug worth installing.

Last and probably least is S3 Firefox Organizer (a.k.a. S3Fox). By “least” I mean no insult, merely that this one’s very specialized and audience-limited. It’s actually a very sophisticated piece of software, providing an interface within Firefox that I think is actually superior to that offered by standalone programs that do the same thing. As with Firebug, it’s truly a testament to the richness of the functionality Firefox makes available to plugins. As long-time readers know, I’ve taken to storing images (such as the last batch of Amy pictures) not on this site itself but on Amazon’s Simple Storage Service (S3). The difference is invisible to you, but to me it means that I have to use somewhat specialized tools to upload the pictures. I had previously been using JetS3t Cockpit for this, and liked it except for some inadequacies around handing of MIME types and directories (the latter mostly S3′s fault because it doesn’t actually have directories and thus forces external programs to provide some kind of simulation). This should be cross-platform since it’s implemented in Java, but I ran into some sort of UI-library incompatibility on my system so it’s all screwy1. I had to find an alternative, and eventually found S3Fox. It’s truly cross-platform, with an interface that’s actually more visually appealing than a plain old command line (unlike JetS3t Cockpit’s), and it handles folders reasonably well. I haven’t looked into whether it really sets the MIME type correctly in all cases, but it did manage to get the right answer for the pictures I uploaded and for now that’s good enough. Without this plugin, those pictures might still not have been posted.

1Just another Sun technology that doesn’t live up to the hype, I guess. “Write once, run everywhere” has never been more than a slogan. “Debug everywhere” is more like it, except that it doesn’t capture the full annoyance value of having to match each application to a particular JVM and libraries, and/or put up with a UI that avoids platform differences by adopting a platform-neutral interface that I’m sure is very convenient for Java developers but remains equally alien and barely usable to everyone outside that echo chamber. It’s entirely possible to write Java programs that avoid these problems, but few Java developers seem to care enough about users – or anyone outside their own little community – to bother.