Showing posts with label GDD08UK. Show all posts
Showing posts with label GDD08UK. Show all posts

Tuesday, September 16, 2008

GDD08: Wrapping Up

After picking up my free Google t-shirt, I'm back downstairs in Space Invaders wrapping up the day with the closing keynote...


Closing keynote...

After announcing the launch of the UK Developer Blog, we're turning around and heading back upstairs for beer, food and random fun...


Developer Day Wrap-up Video

We're done for the day, another year, and another Google Developer Day. Pictures from throughout the day can be found on my Flickr photo-stream...

GDD08: The Google Web Toolkit

I was a bit undecided about the last session, in the end I decided to go to the Google Web Toolkit: The Technical Advantage given by Sumit Chandel.


Sumit Chandel talking about GWT

What are the advantages of GWT? Firstly you get faster AJAX applications, it's faster than write-by-hand code, because the compiler takes care of cross-browser issues for you. You get free optimization, but of course that doesn't mean that you can throw general good programming practices out of the window, so in-efficient algorithms in GWT are still going to be in-efficient after optimization.

The next advantage is deferred binding. Why give the user more than they asked for? Users only download what they need to run your application. The compiler makes different bindings for your application at compile-time and choose the right one later.

Another advantage is that, with deferred binding in place you get to skip the browser quirks, you only need to code the abstraction of a given widget rather than having to handle them by hand.

Next, no more memory leaks. It's almost impossible to trace memory leaks in Javascript because there are so many ways to cause them. So provided you only code in GWT, this shouldn't happen to you.

GWT also means that your application gets history support, an implementation of the RSH protocol...

You also get code reuse though design patterns, something as a Perl person I'm not sure I believe in all that much. Although possibly that's just because I think loosely typed languages are a good idea and have never really understood Java programmer's obsession with the Gang of Four and patterns.

Another advantage is (supposedly?) faster development with IDE's and code support. Now here again, I'm not sure. I've never really been sold on development environments in general. I know good people who swear by them, and good people that think they're horrible. Perhaps I'm getting old?

Next advantage is proper testing of your AJAX application, and debugging with hosted mode. This is a definite advantage, testing AJAX applications, or Javascript code in the browser, is really hard.

Moving on, we're talking about what's new in GWT 1.5. Released at the end of August it includes Java 5 support, easier interoperability with JavaScript using JSO overlays, enhanced DOM class for full specification compliance and better application performance.

...and we're done.

GDD08: What's New in Geo

After lunch, and I decided to skip the code labs and head for What's new in Geo with Jean-Laurent Wotton and Russell Middleton. Which means, oddly enough, I'm back in Donkey Kong...


Jean-Laurent Wotton and Russell Middleton

Russell kicked the session off with a Google Maps introduction to get everyone up to speed with the API. Handing over to Jean-Laurent we're being shown how to use the Maps geocoding service.

Moving on from the introductory Maps material we're talking about cool new features. First up, is the AJAX Search API, which has actually been around for a while...

Next up is Static Maps API, which lets you embed a Google Maps image on your webpage without requiring JavaScript or any dynamic page loading, and last week started serving satellite imagery as well as the normal map type. Interestingly there is also a Static Map Wizard to allow you to build a (moderately) sophisticated map without any knowledge of coding.

Now Russell is talking about the Flash API, which lets you write the code in ActionScript 3, compile it against the Google interface library and output a SWF containing the Map. I'm not a Flash guy, no pun intended, but it looks fairly solid.


Jean-Laurent and the Google Earth API

Back to Jean-Laurent and the Google Earth API which was introduced a few months ago. Although of course, as a Mac user, I still can't get at the Earth API, and there doesn't seem to be any news on the arrival of Linux and Mac versions of the plug-in as yet. Cool demo though...

Next is Google's Street View Service and how to display these both in and outside the Maps interface. Also pretty cool, although it's not yet possible to overlay anything on top of the panorama as yet.

Moving on, the final new feature is location detection. Until recently the user had to centre/zoom in their location themselves, the solution is automatic detect the user's location using the Maps AJAX API. The Maps API now automatically tries to geocode the user's IP address, and if successful it will make this location available to the application. If successful you can also capture the city, country, country code and region.

Next up is image overlays, and how the Google Maps interface can be used to navigate custom images by defining a custom overlay.

Finally, we're moving on to KML and network links, where as it happens, I'm on fairly solid ground so to speak...

...and we're done.

Update: Except we're not. Jean-Laurent and Russell have handed over to Angela Rele from the Met Office about using Google Earth to show the global impacts of climate change and the Google Outreach project.

GDD08: What's New in Gears

After the break I'm back in Donkey Kong and listening to What's new in Gears with Aaron Boodman.


Aaron Boodman talking about Gears

The point of Gears is to add functionality to web applications, but Gears isn't just about "offline", what Google is trying to do is expose the capabilities of the local machine, whether that's your desktop of your mobile phone, to your web applications.

Every Google Chrome installation has Gears pre-installed, but Gears now supports IE, Firefox, Opera, Safari as well as Chrome. Although the Safari port was only launched yesterday. However the latest Android build also comes with a Gears stub, not full support, but it is coming soon.

We're spending some time talking about Gears' Desktop API and shortcut icons, and the File System API. The file system allows multi-file selection, fitering my extension or mime-type, native OS look-and-feel and makes sure the user has full control...

Obviously what you want to be able to do when you select a file, you want to do something with the contents of the file, and web applications can't. Which is what the Blob is for, it's a generic interchange format.

Next up is the Resumable Upload API which sits onto of the Blob API, which is apparently now live on YouTube. You can in theory parallelize the upload, but most browsers have a fairly low connection limit per-domain, so you can parallelize uploads up to that limit.

I'm going to use Chrome, because they told us to use Chrome as much as possible. But it does work on the other browsers...
Perhaps one of the coolest of the new APIs is the GeoLocation API, which can make use of on-board GPS, cell-phone tower and Wi-Fi access point triangulation. But developers can implement plug-ins to provide more methods of location. It should degrade cleanly, the API will provide the best guess of the user's location to your code.

What's next for Gears? More of the same, continue to unlock the capabilities of the host system.

...we're out of slides, and the floor is open for questions.

is there any plans to allow applications to share data between domains? This is a problem Google has, and initially they thought about sharing databases together, but that seems like a recipie for disaster. What Gears has is Cross-origin Workers, a secure solution to the cross-origin restriction policy of the browser.

...and we're breaking for lunch. Still not sure whether I'll end up in a code lab or the main tracks for the rest of the afternoon.

GDD08: A Deeper Look at Google App Engine

It was a long walk between the keynote room, dubbed Space Invaders, and the App Engine talk here in Donkey Kong, and Google has set up a number of feeding stations along the way for weary developers...


Mano Marks talking about App Engine

But I'm now in "A Deeper Look at Google App Engine" given by Mano Marks.

We've got the first estimate so how much App Engine is going to cost above and beyond the amount Google is giving away for free, about US$40 if you use double the amount of traffic in your preview allocation. There is also support for cron'd jobs, SSL and other languages, apart from Python and presumably the already semi-public effort to port Perl to App Engine, coming soon.

After a brief discussion about what Mano can't talk about, mostly when new languages are coming to App Engine and what those languages will be, we've dived directly into the code, and we're looking through the example that will be used in the App Engine code lab this afternoon. Which I still haven't decided whether I'll go to yet...

We're talking about Bigtable, the storage mechanism underlying App Engine, and Mano is really trying to emphasize that it's not a relational database, it's an object orientated (schema-less) database.

After running through request handlers and entities, we're now talking about counters. One major difference between relational database and a distributed datastore like Bigtable. Bigtable doesn't know counts by design, must scan every entity row. Google is encouraging developers to create a separate entity that you can increment every time a entity is inserted, and decremented every time one is removed. However if you're doing frequent updates you'll end up with a requests queuing up to update the counter. The solution is to use a sharded counter. You create a number of shards, and when you go to increment the counter you pick a entity at random. Mano is now running through how this works in practice...

Mano is showing an implementation of sharded counters using Bigtable and memcache, I'm wondering why this isn't available as a default Google library so is just becomes the way counters are done with Bigtable..?

...and we're out of slides, opening the floor to questions the first one is exactly that. Why aren't counters built into Bigtable? The answer is, "good question". They're trying to keep the environment as clean a Python environment as possible, but I'm not entirely convinced that answers the question?

Interestingly, the recommended work around for the lack of cron support is to set up a remote call that polls a known end point inside App Engine periodically. However you need to remember that every job on App Engine only has 10 seconds to run, and is killed after that time limit is reached, so if you're trying to do something periodically that might take a lot of time to complete (for instance re-indexing) you might have to split this request up into chunks.

...and we're done.

GDD08: The Opening Keynote

The keynote is apparently about what Google is doing for developers, and why we should care...


The opening keynote

The keynote is a hard sell for the "open web". Google believes that the browser is the client, but that modern web applications are pushing the limits of what is possible in the browser. We're getting a demo of some of the multi-process architecture of Google Chrome, and it's actually pretty impressive. I've already managed to test Chrome out, despite it currently being Windows only, and so far I must admit I'm pretty happy with it...

Next up is Gears, designed to allow you to extend the browser and enable richer web applications. The latest release has some interesting new APIs, the GeoLocation API, the Blob API and onprogress( ) events.

We're now talking about the cloud and, amougst other things, Google App Engine and the scalability advantages of using the Google infrastructure instead of your own.


Android running on mystery hardware

Moving on Mike Jennings is taking the stage, and demo'ing Android running on real hardware, amusingly with the vendor's logo taped over, although it looks like an HTC handset. The device has wireless, 3G, GPS touch-screen and accelerometers, looks good...


After the hardware demo we're back to talking to client, cloud and connectivity and GWT. A set of open source tools and libraries for writing really large scale AJAX applications. At a high level GWT is about writing your web applications in the Java programming language and cross-compiling to Javascript that is guaranteed to work on IE, Firefox, Safari, Opera and Chrome.

The final topic in the keynote is Open Social, many sites, one API. But not, unfortunately, Facebook...

...and we're done. The rest of the day is devoted to more in-depth technical sessions.

Google Developer Day 2008

I'm currently holed up in "Space Invaders" waiting for the first keynote of Google Developer Day 2008.


Space Invaders

For those of you who didn't manage to talk your boss into letting you blow an entire day on this thing, the Google Developer YouTube channel should have all talks.

I'm currently intending to go to Deeper look at Google App Engine followed by Google Gears. Then after lunch I'll either be going to the Building a simple application using Google App Engine code lab or What's New in Geo and the Google Web Toolkit. Either way I'll try and keep blogging all day, and while unlike last year the wireless network is holding up under the strain remarkably well, we still don't have any power sockets.

This year's event is, at least so far, fairly light on free stuff. We've been given a gift wrapped, USB key drive, that's actually faintly unsettling when in use. No silly putty, t-shirts, or yo-yo's this year. You can't have it all...

Update: Posts from the Opening Keynote and Deeper look at Google App Engine session.

Update: Post from the What's new in Gears session.

Update: Posts from both the What's new in Geo and the Google Web Toolkit sessions.

Update: The closing keynote. Now time for beer, food and random fun...

Update: Pictures from throughout the day can be found on my Flickr photo-stream, and videos of most of the day will be uploaded to the Google YouTube channel real soon now...