Creating a Client-Side Search Engine With Gears




I've posted an in-depth article and tutorial on creating a client-side search engine with Gears. Here's a short snippet from the article:

Did you know that you can use Gears to do fast, client-side searching of data, similar to a client-side search engine? Gears bundles Full-Text Search (FTS) abilities right into its local, SQLite database. MySpace, for example, uses this feature with their MySpace Mail application, downloading all of a user's messages for fast, client-side search. Because all of the data is local, you can do nifty things like search over the data in real-time as the user types, something that is much harder if you have to query over the network to a server to do the searching.

Would you like to add the same kind of fast, local searching to your own web page and web applications? This article introduces you to PubTools Search and the Gears features that power it, namely Full-Text Search and Workers. PubTools Search is an open source JavaScript library that drops a client-side search engine right into your page. You configure it with basic HTML plus a list of URLs to index. Once loaded, a search form that uses the local Gears full-text search abilities will appear in your page to quickly and locally search over the documents in real time as a user types into the search field.

Please note that PubTools Search is not an official Google project or Gears API; it is a project I created on my own to teach and help developers. The Gears team does not support this project.

The article covers the following:

  • An introduction to Gears' Full-Text Search and Worker features
  • How to drop PubTools Search into your page to quickly get going
  • Deep walkthrough and dissection of how PubTools Search works internally with source code and snippets so you can use these Gears features in your own applications
  • An introduction to parts of the Dojo toolkit used in PubTools Search, using actual source from PubTools Search including a discussion on some of the techniques used in modern JavaScript development
  • Tips and tricks when working with Gears

Read the full article and try the demo yourself!

Speeding Up WordPress With Gears




WordPress.com just recently went live with Gears support for accelerating the user-interface, and the upcoming WordPress 2.6 release will also bundle Gears.

Andrew Ozz, a member of the WordPress team and the person responsible for the Gears integration wrote the following guest post on his experience working with Gears:

I thoroughly enjoyed working with Gears. After checking the excellent API documentation and examples, the test implementation of a ManagedResourceStore in WordPress was ready to go in about an hour.

After that I only had to refine the various status messages and user prompts and the first step of implementing Gears support in WordPress was ready for public testing. That was the fastest and easiest integration with another open source software I've had the opportunity to contribute to.

Currently WordPress implements Gears support in a somewhat "non-traditional" way. It uses only the local storage to cache all static files from the admin interface on the user's computer, eliminating needless requests to the server and improving page load speed, quite significantly in some cases.

Some of the limitations of this are that Gears prompts for permission on each sub-domain, so when a user has several blogs on WordPress.com, it will have to be enabled for each separately. Another is that although all files are served from the local storage in SSL mode, the browser reports that the web page is partially encrypted.

The Gears support is already live on WordPress.com, and is included in the next version of the self-hosted WordPress, that is due in a few days.


In my opinion Gears is more than an easy way to enable online applications to work offline. It extends the web browser into an OS independent application development platform. I won't be surprised to see some very different web enabled desktop applications built with it.

Flexi-ng your muscles with Gears




When a lot of developers think about Flex, they often tie it to Flash and AIR, but you can of course integrate Flex applications with many other front-end services.

Mrinal Wadhwa has seen value in building Flex applications, and also likes functionality available in Gears.

He wrote up an article on enhancing Flex applications with Gears which had him create a sample application the uses the Desktop API in Gears.

It is interesting to take a look at the source to see how Flex applications tie back to plain old JavaScript.

For example, the following shows you how you put JavaScript into your Flex application, and then call back to the Flex code via thisMovie(APP_NAME).methodToCall:
<JavaScript>
// tells the swf if gears is installed
function isGearsInstalled() {
if (window.google && google.gears) { //gears is installed
thisMovie("FlexGears").testForGears(true);
return;
}
//gears is not installed
thisMovie("FlexGears").testForGears(false);
}


function thisMovie(movieName) {
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName];
} else {
return document[movieName];
}
}
// ....
</JavaScript>
Thanks to Mrinal Wadhwa for taking the time to try this all out. We enjoy seeing how people take Gears into many corners of the Web!

Also, you may not have seen QuickFix, an example application that shows how you can use Flex to talk to Google App Engine. The example is created by Dick Wall from App Engine, and James Ward from Adobe.

Gears Sessions from Google I/O are now available to watch






We had a great time at Google I/O at the end of May, and there were plenty of Gears-related content. Fortunately, video cameras were at the ready, and all of the sessions have been published on YouTube.

I put together a playlist (embedded player above) of the Gears content which includes:Also, you may be interested in other Ajax related content such as:

GWT

General Ajax

Fly, Gears 0.3!




Well, that's it, Gears 0.3 has officially left the nest. Most users have now been updated to 0.3.24.0. If you haven't, you can update at gears.google.com.

It seemed like just yesterday we were announcing 0.2. But here we are again, with great new features like:
*Sniff* ... They grow up so fast.

As always, please let us know what you think of the new APIs, and what you think still needs work. Or better yet, join the project and send us a patch.

And don't worry about us, we'll be fine. We've got to focus on 0.4. Soon enough, it too will spread its wings.

Appcelerator gives you Gears functionality out of the box




Jeff Haynie announced that the latest Appcelerator SDK supports Gears.

First, for those that haven't heard of Appcelerator, it is an open source "RIA" development toolkit that focuses on rich clients talking to services on the backend. You can think of it somewhat as a Flex-like framework built with Open Web technology.

We are seeing an interesting trend. At first, frameworks would wrap Gears semantics in something that makes sense for their audience of developers, which is great.

Appcelerator though does something a little different. It uses Gears under the hood to make your existing Appcelerator based application a better user experience.

This is what they say:
With the next release of the SDK, Appcelerator's javascript servicebroker will now automagically (and transparently) switch to using a Gears-enabled servicebroker when talking to your service-backend. That means your application will perform faster because the AJAX communication between client and server (especially for apps using fast polling) will be out-of-process using Gears' worker pool.

You have to do nothing to enable this in your application. When you Appcelerator application loads, a small piece of code will check to see if Gears is enabled and will dynamically load the gears-enabled servicebroker code.
I am looking forward to seeing applications that use this in the wild.

In other news, they also wrote up a nice post on how you can use Appcelerator and App Engine in a very simple way.

MySpace Message Center is now searching with Gears




MySpace announced new functionality into their MySpace Message Center today at Google I/O.

One feature that they were lacking was the ability for MySpace users to actually search their MySpace messages. To go through mail, users have to page through all of their messages until their find the right one. Not optimal to say the least!

They could have tried to do search on the server side, but it can be a very expensive operation, and when you are at MySpace scale, you have to choose your battles.

With server side search out, they looked at doing the work on the client. They ended up with a Gears powered solution that not only searches, but gives back results in real-time as you are typing it in. This means that you can stop typing earlier, as you find what you are looking for.

The MySpace team has been a pleasure to work with, and were very fast to put the pieces together of an Full Text Search datastore, and the WorkerPool to offload the search without hanging the browser. As I type this Owyn Richen is going over the details of the implementation at his Google I/O session.

We are excited to see them launch, and look forward to seeing what else they come up with!