Firefox 2.0 installation and tweaks

I guess you’ve heard … Firefox 2.0 is out.

I resisted running the earlier Firefox 2.0 release candidates, but now that the official 2.0 release is out, I thought I’d give it a go. In reality, there are no dramatically new features between the 1.5.x and 2.0 release, but I was more interested in the claim that 2.0 was faster and more stable than the (already pretty good) 1.5.x versions. And for the record, I’d say it is faster and more stable in my hands.

I thought I’d give a quick rundown of the installation and some tweaks, if anything for my own future reference.

Installation:
I’m running Ubuntu Dapper 6.06, and since Firefox 2.0 hasn’t been backported to the Ubuntu Dapper 6.06 repositories yet (and may never be), and I’m not prepared to upgrade to Edgy Eft 6.10 (yet), I had to find another option for getting my Firefox 2.0 goodness.

After backing up my ~/.mozilla directory ($ cp -r ~/.mozilla ~/.mozilla.1.5.0.7), I installed Swiftfox , a processor-type optimized build of Firefox (downloaded appropriate deb and ran $ sudo dpkg -i swiftfox_2.0-1_pentium-m.deb). After installing, ‘Swiftfox’ was added under ‘Internet’ in the Applications menu. As far as I can tell, apart from the compile time optimisations and changing the word ‘Firefox’ to ‘Swiftfox’ in a few places, there is no other difference to the vanilla Mozilla Firefox 2.0 releases.

So far, it’s been working nicely, but there were a few little steps to migrate my old Firefox 1.5.0.7 config and extensions to Swiftfox 2.0.

Rescuing disabled extensions:
Most of my Firefox configuration was carried over correctly, however a few extensions that have not (and may never be) updated for Firefox/Swiftfox 2.0 were automatically disabled.
The trick around this is to install the ‘Nightly Tester Tools‘ extension. Once you have restarted Swiftfox/Firefox, you can go to Tools->Add-ons and then right-click on any disabled Extension and select ‘Make compatible’. I’d suggest doing it one extension at a time, restarting and testing, since things can go stupid if an extension is truly not compatible.

Many extensions work fine, despite not being designed for anything higher than Firefox 1.5.x (eg NeedleSearch and SwitchProxy to name a few). However, not every extension behaved correctly when forced to run (eg. TabMixPlus), and so after having some strange behaviour, I re-disabled those. A lot of extensions tend to be fixed and updated a week or two after a major Firefox release, so there is hope that the broken ones will become available for Firefox 2.0 soon.

I also used this as an opportunity to disable or uninstall any extension I wasn’t using. I find it often makes Firefox run faster, use less memory, (leak less memory :P), and in a very small way it makes your browser more secure by not having lots of random unmaintained extensions hanging around.

Tweaks:
Here are a few things I like to tweak in a new Firefox installation, and some brand new options to tweak in Firefox/Swiftfox 2.0. (All these can be accessed by typing about:config in the address bar, and many were pinched from here).

Firefox 2.0 already restores all tabs and forms after a crash, but it can also be set to restore tabs back to their original state after a normal shutdown. This is about the only feature of the TabMixPlus extension that mattered to me … it’s great that it is now part of Firefox proper !

To enable auto-restore all the time, change:

browser.startup.page = 3

(this one can also be found under Edit->Preferences->Main->When Swiftfox starts->”Show my tabs and windows from last time”)

You can fit a few more visible tabs along the top by setting:

browser.tabs.tabMinWidth = 75

I hate those stupid close buttons on the tabs. I’m forever accidentally closing a tab unintentionally. Technically, it seems like putting the close button on the tab is actually better user interface design, but old habits die hard, so I put it back on the far right hand side in the style of Firefox 1.5.x with:

browser.tabs.closeButtons = 3

I got rid of the ‘Go’ button at the end of the url bar. I don’t need it, since there is a big, highly accessible ‘Go’ button on my keyboard already, labelled ‘Enter’.

browser.urlbar.hideGoButton = true

I also use some HTTP pipelining and rendering tweaks. Apparently pipelining can break some sites such as Myspace.com … but in the case of Myspace, how could you tell if the site was broken or not ?

network.http.pipelining = true
network.http.proxy.pipelining = true
network.http.pipelining.maxrequests = 8
(don’t set maxrequests higher, Firefox won’t allow more anyway since it adheres to the HTTP spec)
nglayout.initialpaint.delay = 0
(may need to experiment with this one)

I’m a cookie snob, so I disable third-party cookies (which doesn’t have a GUI configuration option in Firefox 2.0 like it did in 1.5.x … it’s gotta be some conspiracy):

network.cookie.cookieBehavior = 1

Finally, turn off link prefetching. This is a ‘feature’ whereby the browser follows links which authors have marked to be prefetched in the current page, potentially wasting your bandwidth and CPU time on the chance that you will click on one of the pages that gets “precached”. With it turned on, prefetched pages are likely to load much faster. Personally, I don’t trust that it won’t be abused by some page authors and I like to have more control of what my browser fetches. So, without going off into a paranoid rant … I turn it off.

network.prefetch-next = false

Well, that’s enough tweaking for today. I’ll leave the obligatory “Must have Firefox Extensions” post for another day.

Bioinformatics data (non-)formats

(spurred on by my own comment here)

Anyone know if the Clustal alignment file format (eg ClustalW output) has any strict definition somewhere ?

Some Googling suggests it has never been “formally” described .. eg, from the ClustalX help:

“CLUSTAL format output is a self explanatory alignment format. It shows the sequences aligned in blocks. It can be read in again at a later date to (for example) calculate a phylogenetic tree or add a new sequence with a profile alignment.”

Well, it is fairly self explanatory, and as a result there are lots parsers around for Clustal format alignment data, and lots of programs that claim to output alignments in “Clustal format”. I say claim, since many programs output Clustal alignments with different headers to the original ClustalW program (eg “MUSCLE” instead of “CLUSTAL”) .. and some parsers don’t handle that very gracefully (eg Biopython’s Bio.Clustalw).

Unfortunately, these ‘pseudo-Clustal’ formats aren’t going away, and so it is probably up to the parsers to be a little more flexible. Fortunately, the variation is usually only in the header on the first line of the file, so it should be trivial fix the Biopython parser so that it is more forgiving. One idea would be to simply add an optional keyword flag like “ignore_header = True” to the the Bio.Clustalw.parse_file() function. This way, something like:

alignment = Bio.Clustalw.parse_file(my_muscle_align_file, alphabet=IUPAC.protein, ignore_header=True)

should happily slurp up most variations on the Clustal format.

Eventually I’ll get this to the Biopython mailing list (I’ll probably write a proper patch first).

Ways of seeing the world …

As blogged by several others … the Science Magazine Science and Engineering Visualization Challenge winners have been announced.

I’m a big fan of innovative visualization … sometimes it can the difference between seeing something meaningful in data, or just seeing noise. I was initially disappointed at the large number of finalists that are purely ‘educational’ in nature, rather than providing novel representations of ‘raw’ data. But, the National Science Foundation site explains it: “The spirit of the competition is for communicating science, engineering and technology for education and journalistic purposes.“. It’s important to have these types of events pitched so that the ‘general public’ (i.e. non-scientists, or scientists of vastly different fields) can get something out of it .. after all, they are often indirectly providing the funds for a lot of the research, and in some cases a cool image is all they get for their tax dollars. Nonetheless, I’d like to see a competition dedicated to innovative visualization of new experimental or statistical results, with no opening for purely ‘textbook’ style educational compositions (I bet there’s one or two out there … comments anyone ?).

Also, congratulations goes to one of the (tied) 1st place winners in the non-interactive multimedia section, Drew Berry and François Tétaz at The Walter and Eliza Hall Institute (WEHI) and Jeremy Pickett-Heaps at the University of Melbourne. It’s nice to see some local Aussies getting some recognition.