Noticed a nice design in Chrome’s extension mechanism:

Extension requests additional permissions
Noticed a nice design in Chrome’s extension mechanism:

Extension requests additional permissions
Yesterday, Google announced a public DNS service that promises to speed up your browsing experience.
We here at x7 Labs like our interwebs speedy, so I decided to take a quick look at the service. For testing, I used my home 110 Mbit/s cable modem connection from Welho.
As background information, I wanted to know how long it took for packets to travel to Google data centers compare to my ISP.
TCP/IP packets travelled several additional hops compared to the local ISP case. First they were beamed to Sweden, adding 10-20 ms to the roundtrip time. From there, they were routed to an unknown datacenter, possibly in UK or continental Europe.
All in all, the roundtrip time for Google DNS wasn’t bad, around 50 ms (see below), compared to 8-10 ms for my local ISP (not shown):

UDP roundtrip test
A side note: The media was in a frenzy when it was announced that Sweden is allowed to monitor all network traffic flowing through their backbones. At least until Google opens a data center in Finland (which is under construction), the Swedes can easily log DNS queries made by Finnish internet users through Google.
Next, I used the DNS Benchmarking tool developed by Steve Gibson. It does exhaustive tests to find out how long it takes for the DNS servers to return both cached and uncached records. I compared my local ISP, OpenDNS and Google:

DNS Benchmark by GRC
My local ISP was twice as fast (~100 ms vs. ~200 ms) when serving uncached records, and around 5-6 times faster for cached DNS records (8-9 ms vs. 50-60 ms).
Next, I wanted to see if changing the system-wide DNS setting affects the browsing speed. The test case was very simple: reset all caches, open yahoo.com and record time spent in DNS. For this test, I used the excellent Fiddler HTTP Debugging Proxy.
Using my ISP’s DNS, name resolution time was around 300 milliseconds. Here’s a typical result:

Time spent in DNS (local ISP)
When I changed system settings to Google’s Public DNS, I noticed a difference:

Time spent in DNS (Google)
Using the Google DNS Public Service increased name resolution time almost by a factor of 10x during actual browsing.
Clearly, Google Public DNS isn’t competitive in performance at the moment.

A browser action that shows unread messages.
Extensions for Chrome are about to take off. The functionality has been in developer builds for a while, but Google is poised to bring it to all users.
Extensions are ZIP packages with HTML, JavaScript, CSS and images inside. A JSON manifest tells Chrome what the extension does and what features it has.
All access to tabs, windows and content is done through JavaScript APIs. Each extension is run isolated, and it cannot access other extensions or scripts that run on web pages.
Note that future versions may have API hooks that do these. For now, extensions can’t touch the inner workings of the browser.
These are the two main types of UI for extensions. A browser action is a button that’s always visible. When clicked, it can open a new tab, show an info popup or do some other function. The button can change appearance and have an overlay badge like an unread count.
Page actions are the same, but the button only appears when necessary. This could be used for subscription buttons, for example.
Click to install, enable/disable, update or uninstall. No restarts ever. For someone with a long Firefox background, this was quite the eye-opener.
Chrome isn’t a Firefox-like “extensions can do anything” system. Every extension must declare privileges it needs, like access to bookmarks or a specific domain. These are shown to the user when installing an extension.
Google provides a way to package existing Greasemonkey userscripts into Chrome extensions. In fact, userscripts are the way page content is manipulated in Chrome.
If extensions are just JavaScript, how can you monitor ongoing events? An extension gets an invisible always-open page, where the JavaScript can keep on running.
Updates are fully automatic. An extension’s manifest contains an URL that Chrome listens to for future updates.
Google already has a gallery for Chrome themes, and an extension one will open soon. Developers are invited to submit their extensions for the gallery.