Archive for the 'Browsers' Category

Note: I've reorganized this site to use tags; the category archive remains to support old links. Only posts prior to April, 2006 are categorized. Tag Archive »

On Support

Simon Willison points to a Forrester Reasearch publication (being offered for $49) that cites Greasemonkey as a reason for corporate IT departments to delay or avoid Firefox deployments. For those unfamiliar with Greasemonkey, it’s a plugin for Firefox that allows users to create custom JavaScript to be attached to invidual web pages, changing their functionality in much the same way that user style sheets can change the appearance of a web page.

Simon calls the report FUD, which it may be, and defends the right of corporate web users to employ such means:

…tools like Greasemonkey are a fantastic way of fixing issues with the atrocious interfaces found in many “enterprise” web applications.Workers who use Greasemonkey to improve their productivity by fixing problems with internal applications should be applauded.

While I have nothing against Greasemonkey, this statement gave me pause. It reminded me of a parallel situation I have seen often as a corporate developer- Excel VBA Macros. Working for a financial institution, many of my non-IT co-workers are advanced power users of applications such as Excel- but they are not programmers. Many is the time that I (or my department) have been called because some business process is broken- only to learn that the process is one we’ve never hear of. Most often it is an Excel solution that uses VBA macros, which usually begin as a recorded macro and grow over time, and that was developed by an end user. When we are called in, often the original author is no longer with the company (interns are notorious for building these things). The end user only knows how to push a button, and has no idea what to do when they see a VBA error dialog.

Why do these grassroots solutions break? Ignoring for a moment the questionable nature of Excel in general and VBA macros in particular, there are still many factors. Foremost is the fact that these users aren’t developers. These solutions generally have no error checking (or worse, on error resume next, VBA’s way of saying, “Don’t stop just because it’s broken”). These solutions are often built from a recorded macro, and so they have all of the implicit assumptions the user made when recording the macro. Just because your query returned data in column K doesn’t mean it always will. Another major factor is lack of awareness- the users don’t know when things external to the app will change- DB schema, filesystem paths, etc- and the IT department doesn’t know that some guy in accounting has a macro that will break when the upgrade the file server next weekend and change the server name. In addition to these problems, there’s no Q/A, no source code control, and no documentation.

So when the inevitable day comes, when Joey Intern is long gone back to college, when the third or fourth person to inherit this spreadsheet gets and unexpected error or incorrect results, what do they do? They call the helpdesk, of course. The helpdesk has no record of such an app and no documentation on how to support it. Yes, they can support Excel, but they have no clue what the macro send_daily_faxes does or how it works. So they send the problem to the developers- whoever has VB and/or Excel experience. Now we (development) have to support something we’ve never seen, not written to corporate standards, with no documentation.

The developers will calmly tell the user that this is not supported, that we have no idea where it came from or what it does. Sometimes they have to accept that, and if the need is sufficient, make a request for the development staff to build a tool which does the same thing (as they should have dome from the beginning). Sometimes, the developer has to bite the bullet and kill the better part of a day figuring what to fix so he can fix it. After all, if this thing has been used for the past three years to send faxes to clients each day with important financial info, we can’t just call the client and say, “Sorry, your daily fax was sent with an unsupported tool. We’ll build a new tool in month or two.” Even then, we try to schedule work to replace that macro with a supported solution.

I hope the parallels are obvious. While writing custom JavaScript for use with Greasemonkey is more complex than recording (and extending) an Excel macro, there are those who will try it. Every such modification that becomes critical to daily operations will eventually be shared and/or handed down, and one day they will break. Who will fix them?

Firefox Printing

Earlier today I wanted to print a web page for some offline reading. It was a page from a blog, featuring a left-handed nav/info bar and content on the right. Of course, I only wanted to print the content area. I tried printing, hoping for a print stylesheet that would supress the navbar. No such luck (note to self: implement a print stylesheet for your own glass house, and put down that stone).

I then tried turning off styles, figuring I could omit the pages of the printout which contained the navbar. I was surprised to find that Firefox prints using the default style sheet when styles are turned off (View|Page Style|No Style) (note to self: check Bugzilla, report if needed).

I considered adding a user stylesheet, hoping that it would cascade with the existing stylesheet. In trying to figure out what my stylesheet should do, I used the DOM inspector. I was disappointed to find the layout used a 1 row <table> with with 2 <td>s to achieve layout (note to self: you don’t do that- good job). No wories, judicious use of a following sibling CSS selector did the job:

td {display:none} /* don't show <td>s */
td+td {display:block} /* okay, show <td>s that follow another td */

The net affect is that only the first <td> (in each <tr>) is hidden. Perfect for this application. I tested this CSS snippet using the Edit CSS feature of fantastic the Web Developer Toolbar. On a whim, I tried printing, and was pleased to see that Firefox printed using the edited CSS.

Update: I dutifully checked Bugzilla. Bug 260762 looks like a match.

Extention List

My list of installed Firefox Extensions has grown recently. In an effort to document what I’m using for future reference (the next time I need to setup FFx on a new machine), here’s a list of what’s currently installed, along with a brief blurb about what it is and what I think of it.

  • ChromEdit 0.1.1

    Lets you edit userChrome.css, userContent.css, prefs.js and user.js without having to hunt for (or create) them. Quick tip: Go to, open their custom userContent.css, and paste it into your own. This creates User Stylesheet rules to hide images from many common ad sites. Update: A newer version of the ad blocking list, based on the floppymoose list, is available from

  • 0.3.2

    Adds context menu with entries to post current page or link to, find current page there, or to open your links/tags/inbox. Compatible with Also adds a toolbar button for posting to (not displayed by default – Customize Toolbars to get it).

  • Feed Your Reader 0.7.1

    Changes the Live Bookmarks ‘RSS’ icon to subscribe to the feed instead of creating Live Bookmarks. Can subscribe via more than 15 different aggregators, including Bloglines and any application that supports the feed:// protocol.

  • fireFTP 0.83.2

    While still a little rough around the edges, this graphical FTP client that runs via Firefox (in a separate window) is exciting – I’ve been looking for a good, cross-platform, open-source graphical FTP client for a while. I even submitted a (1 line) patch to get it working on OS X… thanks in part to a debug build that author Mime Cuvalo sent me. I plan to spend some time contributing on this if I can find any.

  • ListZilla 0.5

    Exports a list of all installed themes or extensions as text, html, or vBulletin codes. I used this to start this list. I have a few improvements I’d like to see in this one; I might even try submitting a patch when I can find two spare moments to rub together. Top of my list- let me ‘export’ to clipboard instead of a file, and let me edit the HTML template. Markdown output would also rock.

  • LiveHTTPHeaders 0.9

    The first indispensible debugging aid I found for Firefox. Displays a trace window of all request and response headers. Perfect for debugging web services.

  • Print It! 0.2

    Simple little plugin that adds context menu entries to Print and Print Preview. The single biggest feature I missed from IE. Don’t have to miss it anymore. Gotta love the ‘Fox.

  • Tabbrowser Extensions 1.11.2004092801

    I’ve been using this since Firefox 0.6, and installing TBE is still the first thing I do to a fresh FFx install. Possibly not for the timid, it does have more options then you can shake a mouse at. I use it mainly to get the following features: Tab bar always visible, close icon on each tab, open new tabs in background, and colored tab groups. Indispensible. Thanks Piro!

  • User Agent Switcher 0.6

    Lets you change the User Agent information reported by Firefox. Let your browser pretend to be IE or Opera, for stupid sites that care. You can also setup custome UA strings; I have one for Googlebot that I try sometimes if I think a site is cloaking. Haven’t caught one yet though.

  • Web Developer 0.8

    The plugin no web developer should be without. Too much wholesome goodness to cover here, but as I’ve said before, it’s A Party in a Toolbar.

So there you have them. Links go to the extension’s homepage. You can also find extensions at Mozilla Update and’s Firefox Help. Moz Update is the ‘official’ place to go, but I find Texturizer to be so much easier to browse. You can also subscribe to MozUpdate’s New Firefox Extensions RSS Feed. You’ve seen my preferences; leave me a comment with your list of favorites- or any you found to be a bust.

Fixing the Firefox 1.0PR Default Theme on OSX

As I recently reported, I’ve been disappointed by the differences in the Firefox 1.0PR default theme on Windows and OS X. Using both platforms daily, I value Firefox’s cross-platform voodoo more than any other feature… but that means it really has to feel the same. As I stated last time:

The Win and Mac default themes are similar, but different enough to really bug me. I prefer the Windows default theme. Also, Piro’s TabBrowser Extensions made weird looking tabs under the default Mac theme. Changing themes fixed that (I tried pinball for a while). Of course, you can’t download the Windows default theme (or any default) from the update website. Today, I finally got tired of the issue, and tried to overcome the problem. I copied classic.jar from the chrome folder of my windows install, and used it to replace the version in my OS X install. It’s almost perfect. The only problem is the scroll bars… they don’t appear. There’s room for them, and If I click in the right place, they function, they just aren’t displayed.

Of course, I couldn’t leave well enough alone. After digging around for a while, I found that the scrollbars.css file in the OS X version was much smaller than in the Windows version, apparently delgating functionality to the OS scrollbars. So, I patched up my copy of the Windows jar file with the original OS X scrollbars.css, and it worked. Beautifully.

Screen shots. First, the “Before”:

Default Firefox Theme on OS X

This is the true default OS X theme. I’m running Piro’s TabBrowser Extensions, which accounts for the tab bar being fubar… it doesn’t mix with the default OS X theme. Also, compare the toolbar icons and the Bookmark Bar’s bookmark folders with the next screen shot- the “After”:

Modified Firefox Default Theme on OS X

As you can see, the toolbar icons are a little different; to my eye they’re much better. The bookmark folders in the bookmarks bar contain folder icons, which makes it easier to visually separate the folders from each other. These feature were gained just by dropping in the windows version of classic.jar. But also notice the visible scrollbar; this was made possible by modifying the jar as described above.

If you’re using OS X and like the second screenshot better than the first, you’re welcome to download my modified classic.jar, however: I take no responsibility if it breaks your browser, your computer, or your leg. You’ve been warned.

Instructions: Download it, say to your Desktop. Shutdown Firefox (print these instructions, memorize them, or open this page in Safari while you work). In Terminal, go to Firefox’s application (not profile) chrome directory. Assuming a default drag-n-drop install to Applications, should look like this:

cd /Applications/

Don’t be a shmuck. Back up the original: :

cp classic.jar classic.jar.orig

Put the shiny new one in place:

cp ~/Desktop/classic.jar .

Fire up the ‘Fox. Bask in the glow of your monitor.

Eventually, I need to just extract the thematic elements of the windows version from the jar file, and bundle it as an installable theme. For now, this is working.

Critical Update Followup

On Saturday, I reported on the first Critical Update for Firefox. In addition to being pleased with the rapid response and integrated update notification, I was concerned about the fact that almost no detail was given on the vulnerability, either in the update tool or on any of several Mozilla websites. At the time, I said the following:

So there’s some kind of file download exploit possible, but the details are omitted. I’m no security expert, but I though best practice was to release as much information as possible. I don’t mind that Firefox has a vulnerability; no software is perfect. I’m impressed by the level of response and the integrated update system. At the same time, I’d rather see more information about the problem and solution (or even a link to same) than statistics spin.

On Sunday or Monday, I came accross the Bugzilla Bug# for the vulnerability (probably via Burning Edge). When I tried to click through to view the bug report, I got a big red screen with a message indicating the bug was permissioned, and I didn’t have perms to view it. This was something I’d not seen before at Bugzilla, and I’d intended to blog about it here.

Today there’s more information. Early this morning, Burning Edge reported “Bug 259708 fully disclosed”. I’ve now read bug 259708 and the comment thread, and I have to say I was wrong. The bug in question was pretty nasty, and would allow a download link on a web page (assuming you choose to save the file) to delete every file in the target directory. Ouch! The Mozilla folks decided to restrict access to the specifics while a patch was cranked out. They also decided to wait a couple days for the patch to be downloaded before disclosing the bug, allowing users to put a fix in place. The team acted quickly in the best interest of the users, and released all of the information in a timely manner without further jeopardizing users’ data.

Nice Job, Guys.