Image of Operating System Concepts
Image of Android Wireless Application Development
Image of Beginning Google Maps API 3
Image of RHCE Red Hat Certified Engineer Linux Study Guide (Exam RH302) (Certification Press)

Firefox 4 Restartless Add-ons

Prior to Firefox 4, extensions (more commonly called add-ons) that modified or added to the browser user interface (UI) required one or more UI overlays which the browser loaded from the add-on and applied atop its own user interface. While this technology made creating add-ons that modified the Firefox UI relatively easy, it also meant that updating, installing, or disabling an extension required that Firefox had to be restarted. UI overlays for Firefox are written in XUL (pronounced “zool”), an XML-based markup language created by Mozilla for specifying user interfaces. XUL provides a number of largely platform independent widgets from

HTML5 Canvas To PPM Serializer

Earlier this week I added support for saving images in Portable Pixel Map (PPM) format to a Firefox Add-on called WIPS which I wrote earlier this year. Why bother adding PPM support you may well ask? Well, the PPM format is probably one of the lowest common denominators amongst the image exchange formats that are in common use on Unix and GNU/Linux platforms. I wrote the PPM image serializer in Javascript so that it would be portable across all the platforms supported by Firefox. I could have called out to a shared library or DDL, for example netpbm‘s libnetpbm, but

HTML5 Canvas Element Rubber Banding

Some time ago I wanted to provide rubber banding functionality for a Firefox add-on which I was developing that used the HTML5 canvas element as a drawing surface. Not having previously implemented rubber banding on a HTML5 canvas element, but having done so in the X Window system and in Microsoft Windows, I thought that it would be something that would be relatively trivial to implement. Just find the appropriate routines, plug them into my application and and declare victory. Much to my surprise when I did an Internet search on the topic I found very little useful information on