Firefox Desktop Notifications for Gmail

At work, I use Google Chrome mostly. When I access Gmail, it asks if I wish to enable desktop notifications, but oddly at home I don’t see it. That’s because I use Firefox.

With so many tabs open, it’s definitely a good thing to have desktop notifications (something like Growl for Mac), especially since I use Google Chat on the Gmail page sometimes. I was hoping that Gmail detects a capable browser based on the availability of Javascript objects, instead of some stupid sites that detect the User Agent string, so that the functionality could at least be injected into the page using a Greasemonkey script or a Firefox plugin.

It turns out that someone has already written a Firefox plugin to implement desktop notifications, and that Gmail does in fact detect the presence of Javascript objects instead of blindly relying on the UA string. It’s called ff-html5notifications. With this plugin installed, Gmail will now ask if you want to enable desktop notifications, just as if you were using Chrome.

Chrome implements the Web Notifications API (draft specifications at this point) via the window.webkitNotifications object. It is unclear whether Firefox would support this API in the future, but the ff-html5notifications plugin provides a good solution for now.

Enable iOS 5 Multitasking Gestures on iPad 1

Now that iOS 5 has been released, it’s easy to enable multitasking gestures on the iPad 1, using the same trick as before for display mirroring.

Edit the /System/Library/CoreServices/Springboard.app/K48AP.plist file and add a boolean key multitasking-gestures in the capabilities dict, and set its value to true. You can add both display mirroring and multitasking gestures to the iPad 1 using this method.

That’s it!

Alternatively you can use Cydia or redsn0w to do this for you.

My First Arduino

I finally bought myself an Arduino Uno this week.

“Wait a minute… then what have you been using?” I hear you ask. Previously I had access to an Arduino Duemilanove, and used it to burn the Optiboot bootloader onto an ATmega168 that I had. The Duemilanove board used an FTDI chip which had additional pins brought out to an unsoldered header marked as X3. Following this guide by Kimio Kosaka, I downloaded the precompiled avrdude for Windows and used it to program the ATmega168 via the X3 header.

The end result was a bare-bones Arduino that ran on a 12MHz crystal. The reason for 12MHz was because that was the maximum “safe” clock speed at 3.3V, which I used for a university project and have been using ever since. You can see it below, driving a HD47780 parallel LCD.

However, it’s a real chore to hook this up, especially since everything on the breadboard like the crystal, FTDI header and reset button and pullup resistor are all inserted like any other component. It is more convenient to have a ready-built board for prototyping, where you don’t have to worry about the Arduino components.

If you haven’t gotten an Arduino board yet, I highly suggest you get one. If you would like to hook it up on the breadboard similar to what I did, at least get the Really Bare Bones Board (RBBB) Kit.