Showing posts with label work. Show all posts
Showing posts with label work. Show all posts

Sunday, November 25, 2007

HTML5 SQL Player using Gears

Dimitri Glazkov is a developer from Birmingham who has been following Gears and HTML5 development. He wrote a wrapper around Gears that adapts the Gears SQL interface to the HTML5 Database specification and a test page to drive it:

HTML5 SQL Player

Notably, this wrapper is very faithful to the spec. Everything is asynchronous where it is supposed to be -- even opening a transaction is non-blocking, just as it is in the spec.

This is done by implementing a client-server protocol between a Gears WorkerPool (the server) and the wrapper API (the client). Each SQL statement the client needs to execute is proxied to the server using SendMessage() and the client waits for an asynchronous callback containing the result. A typical SQL transaction will contain many statements and these all must be routed to the same Gears Database object on the server.

For an interesting read, check out the source. It is a really good example of mapping an single-threaded asynchrous API to a synchronous multi-threaded one.

It's nice to see this work being done. It shows that as long as the basic web development model of JavaScript/CSS/DOM is preserved, developers can deal with pretty dramatic API differences.

Thursday, August 30, 2007

Gears - M1: complete; Next up: M1.

Chris Prince, my co-tech lead on Gears, has posted the news that you can now download a developer build of Gears 0.2.

The Gears team organizes its roadmap in a very simple way. We plan for 6 week milestones (actually this last one took longer, we might adjust the length) and we only have three of them. They are:
That is, M1 is the milestone we are working on now. M2 is the milestone we will work on next. M3 is everything else.

Of course, since these are all relative terms, we never actually get past M1. At the end of each milestone we re-prioritize everything and come up with a new list of M1 tasks. The obvious metaphor here always makes me smile :).

I've found this system very pleasant to work with. More complex systems with multiple competing attributes like priority and severity always confuse me.

Wednesday, May 30, 2007

Announcing Gears (and Gearpad)!

This morning, I had the pleasure and terror of announcing Google Gears in Sydney, Australia.

As part of the design process for this project we experimented with taking several different types of applications offline. I thought it would be fun to try and take my old AJAX notepad, Halfnote, offline, and the result is Gearpad:



It's basically just like Halfnote, but if you've got Gears installed, you can go offline and continue to edit your notes. When you come back online, everything will be synchronized.

Gearpad supports seamless movement between connected and disconnected operation without any specific "offline mode". This is accomplished by treating the Gears database module like a buffer, writing changes to it immediately and trying to push those changes to the server separately, when there is a connection. See the code in the Gears SDK for more detail.

It has been an incredible pleasure working on Gears. I really believe in the incremental approach to improving the web, and I have always wanted to work on browser APIs. On this project I was able to do both while working with some really great people.

Gears isn't done. Actually, it's hardly even started. We have some ideas for what's next, but what we really want is to hear what you think should be next. Join the mailing list and let us know. This is going to be fun :).