Filing Bugs in Bugzilla Components

I’m always filing bugs, and I usually know the Bugzilla component they’re supposed to go in. So I made a shortcut to get around the hoops of picking a component on the Bugzilla form. It’ll autocomplete on product and component name for faster filing:

Image

I also often search for bugs by summary in a component, so I made a shortcut for that too. You can search for open, closed, or both:

I’m interested in the common fields other people use when searching for bugs, so if you have any insight leave a comment.

 

 

Rainbow Update

A new version of Rainbow is out. This new version contains a bunch of tiny fixes that make it 10x more useful I think:

Extract color schemes from images

Extract the color scheme from any image on the page by right-clicking the image and selecting “Extract Color Scheme”:

Preview element colors

There’s now a “Preview Element Color” context menu item that will let you quickly inspect the background/text colors of any element in Rainbow’s color picker:

View last color

View whatever color was last copied/saved from the inspector with the “View Last Color” shortcut in Rainbow’s main menu:

This version also adds a French localization courtesy of Alain Besancon and some much-needed bug fixes.

Anyways, the real news is that 1.4 is the last version I’ll release on this code base barring any new locales or bugs. Soon I’ll be starting a complete re-write that might take awhile. The current code is written by a total JavaScript and programming n00b (me, four years ago) and uses XUL (thus can’t use Jquery or any nice new HTML features).

I’ll be converting it to HTML, modularizing it (starting with https://github.com/harthur/color), and making it a Addon-SDK-based addon and creating a Chrome extension if all goes well.

replace

I just published replace, a find-and-replace command line utility that others might find useful. I’m always wanting to replace strings spread throughout my code, and never found an easy way to do it. `find` + `sed` can do it, but the syntax is hard to remember and you don’t get easy-to-read feedback on what replacements are made. It’d be cooler if there were a tool devoted to this.

Replace takes a regular expression string (in JavaScript syntax), a replacement string, and files to search (or directories to search recursively when `-r` is specified). It will print out the lines that have been replaced:

screenshot of replace

There are quite a few other options and output choices, check out the GitHub for more information. It requires installing node.js and its package manager npm if you don’t already have them. Then you can install with:

npm install replace -g

Side note: It’s true that JavaScript is still quite a bit slower than bash/C, so it’s good to question why you’d write something like this in Javascript. I blame how nice it is to write programs in node, how nice it is to handle dependencies and distribute programs with npm, and all the really well-done node libraries out there (like colors for coloring console output). This is something I wouldn’t have taken my free time to write in any other environment.

Nightly Tester Tools Update

Nightly Tester Tools 3.0 has been released, containing some new features. Among the added features are Crashme functionality, copying about:support to pastebin, and viewing the pushlog of changes since the last nightly.

Since the update about the future of Nightly Tester Tools, there’s been some discussion around the addon compatibility feature. We decided to take out addon compatibility fixing for individual addons, but left in a checkbox that overrides compatibility checking for all addons. It works in the same way Addon Compatibility Reporter does, but everyone’s encouraged to install ACR to help report compatibility issues to addon authors.

Screenshot of Nightly Tester Tools Firefox menu

Mobile version

Aakash has been working on a mobile version of NTT, with a few of of the same features of the desktop version and a few mobile-specific ones. Nightly Tester Tools 3.0 for mobile has also been released.

Screenshot of mobile Nightly Tester Tools

You can request a feature by filing an NTT bug. Check out the code on Github (mobile code here).

Nightly Tester Tools Resurrection

Some of you may have noticed that the aptly named Nightly Tester Tools addon doesn’t work on nightly builds at the moment. A few months ago Dave Townsend mentioned that the popular Nightly Tester Tools extension was in need of some new owners and an update. A couple of people that work on automation have decided to lead an effort to revive Nightly Tester Tools and make it even better.

You can check out the list of current and proposed features on the wiki. We’re planning on removing a couple features, some of which have been superseded by Firefox features, including: crash report sidebar, session restore, and leak log analysis. Let us know if you use any of these features. In addition, we’re thinking about taking out the extension compatibility fixing. Extension compatibility is the main(/only) reason many people use Nightly Tester Tools, but now there’s the Addon Compatibility Reporter that keeps up to date with the extension compatibility changes (EDIT: many people have protested this and given some good reasoning, so it’s likely this will stay in).

A couple people already working on the effort are harth, jhammel, and aakashd on #qa on irc.mozilla.org. If you have any features you’d like to see in NTT you can of course comment on this blog post, or file a bug in the Nightly Tester Tools component.

If you’d like to contribute code, fork the Github repo. We’re sticking with the old code base for now but are keeping an eye on the Jetpack SDK for a switch at some point.

mozregression update

A good while ago I made a regression range finder for Firefox nightlies. It was a Python script intended to make it easier for people to manually find the regression ranges of bugs on the nightlies. The other day, someone actually used it! So I decided to revisit it and fix it up and make it easier to install. There’s more info about it here, but here’s a quick summary:

install with setuptools or pip if you know how to do that, otherwise checkout out the OS-specific installation instructions

run on the command line:

mozregression --good=2010-03-19 --bad=2010-09-12

Several nightlies will be downloaded and automatically run for you, asking you to check for the existence of the bug in each one, ending up with something like:

Last good nightly: 2010-09-08 First bad nightly: 2010-09-09

Pushlog: http://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=36f5cf6b2d42&tochange=8e0fce7d5b49

if you have questions, ask harth on #qa at irc.mozilla.org.

Jetpack: Showing Search Terms in Awesomebar

Note: this is not about searching from the awesomebar.


download addon·code on github

The awesomebar is one of my favorite things about Firefox. Especially compared to alternatives in other browsers – the awesomebar remains the fastest way for me to find where I want to go. Sometimes a site’s url and title aren’t enough to jog my memory however. At some point I wished Firefox would do full-text indexing for me. Then I realized that Google was already doing that, and there might be a way to hijack that power – by remembering what search terms you used to find the site and displaying that in the awesomebar. You can’t really get better than search terms, they put the value a site gives in your own words. Of course, you might find the site valuable for other things after viewing it, then you have no real choice but to manually tag it (or do you?).

I made a quick extension with Jetpack to do just that, implemented in the simplest possible way. It parses the referrer for ‘q=’, and appends that to the page’s user-set title (which is matched on in the awesomebar). It can be very helpful, but it was less helpful than I thought. It would be more helpful if the referrer persisted across link navigation, the referrer didn’t terminate after #, and more sites used ‘q’ to hold the query, but it was an interesting experiment, and I’d love to see more experiments in Firefox inferring tags for webpages.

Jetpack impressions

I enjoyed using the new Jetpack SDK, I’m a big fan. It took more than a couple minutes to get started but the docs were excellent and I love the CommonJS. I had to bust out the Cc but that’s just because the Places API isn’t quite ready yet. I only had to write 42 lines of code. I can confidently say I won’t be making a ‘regular’ addon again.

Black or White Text? WCAG vs. Neural Networks

The other day I ran into a problem that some developers of color tools probably run into, which is: given a color, do you display white or black text over it? An algorithm based on the WCAG luminosity contrast ratio measure works great on most colors, but can be spotty. After looking at the WCAG formula, it seemed this problem was a good candidate for neural networks.

A couple weeks ago I finally sat down to try out the idea, and made a page where you can train your own neural network when to use black vs. white text (bonus: Worker thread example). After training it on a dozen or so colors, it matches the WCAG algorithm in most cases and does better in others. It’s kind of crazy that you can just throw data at this network and it will learn it. Not every problem can be solved by a neural network, but it’s cool to see it work when the problem fits. Might try out some other classifiers next.

I ended up making a simple JavaScript neural network implementation, you can check out the code on github.