Firefox 4 offers some compelling features such as HTML 5 improvements and a new add-on manager. Since it’s quite painstaking to compile the beta from source and quite messy to place pre-compiled binaries in system default folders (not to mention the compatibility checks and upgrade chores that would interrupt at each launch if you go back and forth between different versions), I created a repository at repo.inspirated.com which can be used to test the beta version without touching any 3.6 stable release already installed on the system:

The beta refuses to run if an instance of old Firefox is already active. Therefore, close the older Firefox and then launch the 4.0b1 version using firefox-beta command or the “Firefox Beta” shortcut in the applications menu. A new profile shall be created at ~/.mozilla/firefox/beta/ in order to leave your older profile’s settings, bookmarks and extensions etc. intact.

Threads are love. Threads are speed. And more often than not, threads are a consistent PITA. However, I’ve had an accidental epiphany just a few hours ago:

“When in doubt When you need to communicate among threads, use synchronized Queues.”

There. This magic mantra will solve more issues in your life than you can ever imagine, and certainly more than I expected.

Getting back to the topic at hand, adding threading support to the program has sped up the bookmark checking process by a factor of about 435895234. Coupled with fixing of some parsing bugs, Bookmark Undertaker v0.3 is finally capable of providing a quick, stable and consistent way of sanitizing your Firefox favorites:

This time, I’ve also tried to provide Deb and RPM packages on the release page for easy installation by the Debian/Ubuntu/Fedora populace.

Ushering in the era of communist applications:

“If everyone gives one thread, the poor person will have a shirt.” — Russian Proverb

No matter how much you try to keep the browser bookmarks clean, inevitably they jumble up and one day you realize that you have no idea which links are working and which aren’t. This is where a small utility named AM-Deadlink comes to the rescue for Windows users which checks the links for errors. Somehow, the utility lacked an alternative in the open-source world. And this is where Bookmark Undertaker comes into picture:

(Click on the image for larger version.)

For the utility, I chose PyGTK as UI backend. For parsing the bookmarks.html files exported from Firefox, I used Beautiful Soup. The latter, I must say, made my life a lot easier by cleverly sanitizing the insanity contained in Firefox’s exported favorites, staying true to the project tagline:

You didn’t write that awful page. You’re just trying to get some data out of it. Right now, you don’t really care what HTML is supposed to look like.

Neither does this parser.

And indeed it does not.

For the time being, the application imports the bookmarks properly and displays their attributes including the favorite icons. It then checks the linked URLs for errors in a separate thread and marks them as working or non-working accordingly. Exporting the bookmarks is next on the TODO-list, while it’s possible that in future I will internationalize the application as well.

One of the most common mistakes a n00b web-designer makes — and one that took me a long time to figure out back when I started — is to assume that the way their shiny web-pages look in the WYSIWYG editors is actually the way how they’ll be presented to all variety of end-users. That crazy gothic font can totally get you hawt on FrontPage, but to say that it would look crippled on most of your visitors’ screens would probably be an understatement.

The CSS @font-face feature debuted a little while ago to rectify the font mess. To put it simply, it allows authors to “embed” fonts on their web-pages. And I’m a bit late on this, but it has found its way into the newest release of Firefox as well. The example rendered perfectly on version 3.5 using the new font, raising a few points in my head:

The rule certainly has considerable space for abuse. But then, which technology on web doesn’t?

For the paranoid, Firefox does provide the gfx.downloadable_fonts.enabled in about:config to turn the feature off.

Out of curiosity, I checked out IE’s status on @font-face support. Turns out that it also supports font-embedding, albeit using an obscure format called EOT which is basically what one would label as “DRM for fonts“. How surprising.

Prior to downloading the new fonts, the demo page gracefully degraded to stock ones.

In a nutshell, intriguing at worst and exciting at best. Also, it’s nice to see that IE 6’s death is prompting a steady progress in CSS and HTML. About time as well.

If there ever was an insanely staggering year in terms of unexpected geekological developments, it has to be 2009. Since January I have regularly been taken aback by news such as record labels dropping DRM, Duke Nukem Forever finally bowing out; Microsoft confessing that ActiveX is retarded from security’s point of view, Google Apps moving out of beta, VLC reaching 1.0, Chrome OS’ announcement, XHTML Part Deux’s quiet death, HTML 5 and CSS 3’s adoption in major browsers and well; defying all expectations, Inspirated’s browser hit stats managing to keep their head high even in the half-yearly round-up. It’s been about 136,000 hits on the blog from Firefox alone, markedly more than twice the IE hits. The first time I noticed the vulpine victory I did dedicate a post to the stats. Nevertheless, consistency achieved over six months just gives me another chance to gloat about it.

I don’t know if this is at long last the year of Linux on desktop, but one thing is for sure: only a final release of GNU Hurd now stands between our planet and the apocalypse. If that does happen, however, please make sure that you refer to the calamity by its correct technical term “GNU/Apocalpyse” and not just the ignorant layman’s phrase which totally undermines the FSF’s impact on universe’s evolution.

“Mammon slept. And the beast reborn spread over the earth and its numbers grew legion. And they proclaimed the times and sacrificed crops unto the fire, with the cunning of foxes. And they built a new world in their own image as promised by the sacred words, and spoke of the beast with their children. Mammon awoke, and lo! it was naught but a follower.” — from The Book of Mozilla, 11:9 (10th Edition)

I guess the surprise is over, allowing me to label the results as “consistent”:

Or, not really. Since my Firefox is built from source code on a 64-bit platform, all I could get while trying to install the pre-compiled extension was the following error:

“Geode” could not be installed because it is not compatible with your Minefield build type (Linux_x86_64-gcc3). Please contact the author of this item about the problem.

I have posted a comment on the Mozilla Labs’ blog post about the binary incompatibility and hope to get my hands on Geode’s source code soon for a tryout. The service sounds fun, even though it would take at least a few years for websites’ awareness of the W3C Geolocation Specification to mature enough to a point where everyday usage would be the same.

Alright, Google finally releases the Chrome browser, along with a certain comic detailing features of their product. I check out the comic and the feature-list, I decide that there isn’t any compelling reason for me to switch to Windows and run the beta. I also decide never to blog about it unless I deem it important enough for a try out. So far, so good.

But hey, I have violated the unimpeachable moral obligation of going along with the current buzzword by declining to be a part of the Chromosphere. In the past week, at least seven different people have tried to persuade me to believe Chrome is going to take over the world. In fact, that is the inherent problem with Google and Apple fanboys. They equate anything remotely new from their favorite corporation with the second coming of Christ, and then try to convince other people over it. I do happen to be a fan of both as well, but I still don’t see why products like 3G iPhone or Google Chrome deserve the applauds lauded by these people. Here’s a list of arguments Chrome fans presented to me:

Chrome is Google’s attempt to blur the line between desktop and web, and it is the future Operating System
Bullocks. The line between desktop and web shall never be blurred. Are you trying to tell me that you’ll be installing your printer or screen drivers to web one day? Will a browser ever be capable of doing even half of the stuff that operating systems do, e.g., implement the POSIX specification or host other processes?
No? I didn’t think so either. Yes? You do not have any idea what an operating system is.

Chrome isn’t a memory hog like Firefox
Firefox’s memory-usage has steadily improved over the released and I have yet to encounter someone who had any serious memory troubles with the former that were solved by the latter.

Chrome’s Javascript runs faster
The only worthwhile feature of Chrome is its Javascript engine. Nevertheless, milliseconds of speed improvement won’t even be noticeable by me. The AJAXed Facebook or Gmail run on my Firefox extremely well and I don’t think my productivity with either would increase by switching to Chrome.

Chrome’s rendering engine (WebKit) is new whereas Firefox’s rendering engine (Gecko) is outdated
Wrong. Totally wrong. Gecko might be bloated, but Mozilla does a more than reasonable job of making it perform well. Gecko is huge — WebKit comparatively isn’t — but it is still frequently updated and properly maintained. The huge codebase is an issue for the developers rather than the users and as long as developers are delivering stable final products using that codebase, it’s certainly not an issue for me. WebKit is great for new applications like Chrome, but Mozilla has already settled with Gecko so it isn’t a bother for them.

Chrome uses separate processes for each tab
And this was the only “visible” feature Google was able to highlight in their comics. This is nifty behavior, but with frequency of my browser crashes reduced to almost once a month, this isn’t enough to convert me over.

On the other hand, consider the mammoth developer base Mozilla already has for its Firefox extensions. Google isn’t going to replicate that as well as bundle Chrome with killer feature(s) anytime soon, if ever. What Google perhaps aimed to do was to get other browsers to adopt Javascript enhancements that they’re going to introduce with Chrome. More than that, I don’t think Chrome shall ever compete in user share against Safari, let alone against the big guns.

Once upon a time (or, “in before times, long long ago” according to South Park speak), I used to be a Flash developer. I even developed a half-useful extension called “External Text MX” circa 2003, which got a little bit popular too. I loved Flash and even found ActionScript to be an intriguing language for a learning programmer.

And then, slowly and gradually, I realized that Flash isn’t worth 10% of the hype it usually gets. I’m in no way trying to debunk the wonderful art produced by Flash developers. It’s wonderful. My realization was a direct consequence of the troubles I had with Flash as a user rather than as a developer. Flash, for all the great things it embodies on a particular version on a particular platform, is still a proprietary technology steered by an enterprise giant. I started using different architectures and operating systems than simply 32-bit Windozes and most of the time I felt like the efforts needed to get Flash running aren’t worth all the animations and sounds. The mere idea of something as vendor-specific as Flash “driving” the “next-generation” of something as general as Web was enough to make me scowl.

Flash fans usually try to argue that it did become a driving force behind Web 2.0 afterall, and come up with YouTube as the example supporting their claim. Actually though, I had been using major Web 2.0 sites (YouTube, Facebook, Slashdot) for about 2 years now without any Flash support. YouTube videos can easily be viewed without Flash plugin and other websites are careful enough not to rely on Flash for their business. During this period, I treated Flash plugin with contempt simply because Adobe have been epically unsuccessful for providing a working version for 64-bit Linux. I was aware of a method which allowed usage of the 32-bit plugin to work with the 64-bit platforms, but it turned out to be highly unstable and resource intensive with my initial efforts. This method involved installing a “wrapper” plugin named NSpluginwrapper in Firefox. My verdict: “totally not worth it”; up until just a few weeks ago, when I retried the NSpluginwrapper with Firefox 3 and the official Adobe Flash Player 9.0 r124 plugin. The result? Finally the PITA vs. worth ratio has been reduced significantly enough to guarantee its continued existence on my laptop. YouTube works wonders and even the sound gets played through PulseAudio like a charm. Too many animations do tend to crash my X.org server every once a while but I’m willing to spare this much for now.

Not to mention, I still immediately close any website which starts with a Flash-y intro ;-) .