Showing posts with label Developer Day. Show all posts
Showing posts with label Developer Day. Show all posts

Wednesday, October 28, 2009

Stack Overflow Dev Day

Stackoverflow.com is a free collaboratively built and maintained programming Q&A site, and if you haven't heard about it already, you should have done. It's pretty much my first call now for those obscure programming questions that come up from time-to-time, and the community that's grown up around the site is pretty solid.

I'm currently down in London for the the day to attend the first UK Stackoverflow Dev Day. The conference is in the Kensington Town Hall, somewhere I haven't been since the London ADASS meeting back in 2007. Although I do remember there is a really good Lebanese place around the corner...


Waiting for the #DevDays to begin...

Along with the the intriguingly entitled talk "Humanity: Epic Fail" about half way through the day, we're covering topics ranging from Python to Android, and Qt to the iPhone.


Joel Spolsky

I's going to be a lot of fun, and you can follow along on Twitter...

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...

Thursday, May 31, 2007

The Mountain View Webcast

After a short break I'm back in the same seat for the final session of the day, which is a live webcast directly from Google's campus in Mountain View.


The opening keynote from Mountain View

As the developer day in London draws to a close the one in Moutain View is just kicking off and, along with everyone else here in London, I'm currently listening to the opening keynote from California. Funnily enough they're saying many of the same things, in the same way, as we heard this morning during our own opening keynote. Consiering how much fun some of the rest of the day has been, this seems to be a bit of an anticlimactic end to the day.

Update: Okay here we go, we've got some product announcements. The first announcement is Google Mashup Editor, which apparently does what it says on the tin and lets you build simple mashups with a few clicks.

Update: Next up they're talking about Mapplets which we heard about earlier. I'm guessing I was in the wrong parallel session to hear about the Google Mashup Editor perhaps?

Update: I actually think our own keynote was a lot better than the Mountain View keynote, which seems to be very heavily scripted and with the talking heads obviously not being that used to public speaking. This certainly isn't a Steve-note like performance from Google. But maybe there will be one more thing?

Update: Now covering the Google Web Toolkit and now Google Gears which we've also already heard about and the new offline version of Google Reader.

Update: They've just rolled on the CTO of Adobe to talk about Google Gears and Apollo. I haven't seen a demo of Apollo before, and I'm actually quite impressed especially with Gears integration it looks interesting to manage easy cross-platform development.

Update: Okay, we're wrapping up at the end of the keynote. It doesn't look like there is one more thing, alhtough they have just rolled Sergey Brin onto the stage.

Update: No, Sergey didn't really say anything interesting, and we're done...

Developing for the Mobile

So I've actually had to get off my seat and move through to one of the other theatres for my next session, which is Developing for the Mobile with Gummi Hafsteinsson.

Looks like my back-up battery might be enough to see me through the rest of the day, but it's going to be close. I still can't believe there aren't any power sockets here?


Gummi Hafsteinsson talking about mobile websites

Gummi has started off talking about the difference between the standards on the mobile web and the "desktop" web. His claim that there was only two main browsers on the desktop, IE and Firefox, didn't go down that well. You could see people with Apple's on their lap whincing as he said it...

He went on to talk about the complexity involved in the mobile market, the large number of browsers that tend to render things differently, and the huge number of handsets with different capabilities. But the thing we're supposed to take away from the talk is that we should, "Ignore the complexity and try and keep it simple".

However a good rule of thumb is that since most of the mobile browsers are XHTML not HTML, if your markup isn't standards compliant then it probably won't be rendered at all. Unlike the "desktop" web its unlikely that sloppy markup will work. This also means that you need to specify you character encoding specifically because the browser probably won't guess correctly.

Another interesting point he's trying to hammer home here is that the way people use the mobile web is very different than the "desktop" web. People generally don't type URLs into a mobile browser, so if your site isn't indexed by a search engine (or is well known and has a short URL) then people probably won't use it.

You also need to take account of the small amount of processing power available on the client side, you really need to sclae the images on the server rather than client side and have a maximum image width of 120 pixels by default.

The other thing to focus on is what people are actually going to use your mobile site for, after all you probably don't want to do the same things from your phone than you do from your desktop.

Next he's really insistant that you do your testing on actual handsets because the emulators don't reflect what really happens when you put the site onto real hardware. However you shouldn't be tempted to exploit the capabilities of the new advanced phones without good reason. Don't do optimisation unless it gets you real functionality for your predicted user base. If you are pushing financial data and your users mostly (all?) have a Blackberry then it makes sense to optimise for that handset, but otherwise it's probably not worthwhile.

In summary, you have to develop your site with a good idea of why your doing it and why your users might want to use your site on the move. Finally, keep things simple, and only do customisation if it's really needed.

Update: The session has been posted to YouTube...

Building better AJAX apps (Google Gears)

I'm still sitting in the same seat for my next session, looks like my choices were fairly popular as this is the largest of the theatres, which was originally titled "Building better AJAX applications/Newest APIs" which was the obsufcation used to disguise today's launch of Google Gears. So I'm now sitting in a tutorial called "Google Gears: An Open Source Offline Toolkit" given by Chris Prince the Gears Engineer.


Chris Prince talking about the new Google Gears

Needless to say, there still aren't any power sockets in here and I've just had to dig the spare battery out of my rucksack...

Gears is basically somewhere in between a full blown web application, and a fully offline native application, but is intended as an incremental approach to supporting offline in web applications implemented as a browser plugin for IE, Firefox and Safari (well, almost)... he says its going to "Do for offline what XMLHttpRequest did for web apps".


The Google Gears architecture with its sync server

Basically the applications write to the local database instead of the remote server, and when you go online the changes are written (or read) from the remote server. Basically its analogous to a browser cache, except that the local "cache" is actually the primiary reference rather than the fall-back.

We're getting down to nuts and bolts right now, with bits of code starting to appear, so I'm going to stop typing now and listen...

Update: ...okay, so Gears look really interesting. I can't help thinking that Gears combined Google Apps equals the long rumoured Google office suite. It answers the main problem with web applications and your data. That being, what happens if you don't have a web connection? Not being able to get to your data isn't really acceptable. I've got a feeling that this is Google's call to arms, and a shot across the bow of Microsoft Office, and it's going to be interesting to see what happens here. Basically people are sitting around here with their jaws hanging open... "You can do that!?".

Update: The session has been posted to YouTube...

Google Earth and the GeoWeb

I'm in the same room for my second session, which is Google Earth, KML and the GeoWeb given by Peter Birch. Who has just promised us to go light on PowerPoint and heavy on the KML and text editors.



Peter Birch talking about Google Earth

He's talking about how to use Google Earth and time domain data to tell stories which is an interesting perspective on how people view data visualisation and from my hard science perspective wasn't really something that had occured to me...

Update: Like the previous speaker he's heavily pushing using KML to store your geo-data so it can be indexed and searched, and can you blame him? It also looks like he's doing what he promised and really gettting down and dirty with the XML, so I'm going to stop typing and listen to what he's saying...

Update: ...okay, I'm back. That was a really good walk thourgh of the features available in KML. He's closing out with some new features in KML 2.2, including photo overlays which is something I've been wanting to do for a while now...


The new photo overlay feature

Update: The session has been posted to YouTube...

New features in the Maps API

Managed to sneak a couple of row forward from where I was in the keynote, but there still aren't any power sockets in here...


Andrew Eland talking about the Google Maps

My first real session of the day Andrew Eland talking about the new features in the Maps API. He started off giving a brought overview of the API, but did finally dig down into showing us some real code, starting off with the classic Hello World program in Maps by dropping a marker onto the map as an overlay that when clicked on displays the classic message.

I'm going to stop typing now and listen to what he's got to say...

Update: Apparently coming soon is AdSense for Google Maps which means you'll be able ot monterise your Maps mashups pretty trivially, interensting...
<script>
var manager = new GAdsManager(map, "id" );
manager.serMaxAdsShow(3);
manager.enable();
</script>
Update: He's talking about Mapplets which blends the Google Gadgets and Maps API, which produces a Google Maps API application turned into a plug-in for Google Maps. He's going through the "Hello World" example as a mapplet now, doesn't look too bad, and explaining how the Mapplets are protected against cross-site scripting attacks.

Update: He's trying to sell us on not locking away your geo-data inside your own Javascript code but instead use a KML file which will be indexed by Google and allows the data to be used by other people.
<script>
var kml = GGeoXml( "url" );
kml.addMapOverlay( );
</script>
Another benefit is that it's a lot easier to add the data as an overlay as Google will handle virtually everything for you. Looks to be a classic case of separation of data and implementation. An easy sell?

Update: The session has been posted to YouTube...

The Google Keynote

The kick-off keynote is in two parts, with Chris DiBona giving the first keynote on open source idealisim and the APIs and then Ed Parsons who'll be talking about the Geoweb.


Waiting for the keynote to start...
 

Chris DiBona talking about open source and APIs

Chris kicked off talking about their sitemaps protocol for web crawling, which they've released under the Creative Commons license, and about how this approach is being extended to the rest of their APIs. He's arguing that "What's good for the web is good for Google" and how bogus it is to create your own license, and how releasing APIs is the obvious thing to do...

He's going on to talk about Google Gears, which is a new too which can be used to make web apps able to work offline, which they're releasing into the big bad world today. Looks like they've snuck it into the Newest APIs session because they were all being secretive and stuff, so I get to have a close look.

Chris has handed over to Ed Parsons, fresh in from Where 2.0, who is talking about geography, maps and building the Geoweb.


Ed Parsons talking about the Geoweb

Ed has just said "Everything that happens, happens somewhere", which is something I hear from my other half all the time. I've definitely got déjà vu here...

Ed went on to talk about the amount of geographical information and how only a small fraction of it has been indexed yet, and the huge amount of niche long-tail geo-data that is sitting around waiting for people to pick up make accessible. After his overview, he returned to the core product Google Maps and how the functionality of the application is exposed for us to use. He brought us all the way up to date and talked about street view which was only released yesterday at Where 2.0. No open API yet, but it's coming soon. He's also talking about the new Google Mapplets application.

From there he went on to talk about Google Earth as a platform, and how the database is open and extensible, and how you can use KML to create and expose content.

We're about to break for lunch, I've got pictures, but pushing that much data up to Flickr isn't going to happen with the wireless network in its current state. I'll upload them when the network improves.

Update: The session has been posted to YouTube...

Google Developer Day 2007

I'm currently squatting on one of the large pillows strewn Blogger Lounge at the Google Developer Day in London.

The Blogger Lounge
The Blogger Lounge

For those of you who didn't manage to talk their boss into letting them blow an entire day to go to this thing, you'll have to make do with the talks that are being streamed to the web. I've managed to get into the New features in the Maps API, Google Earth and the GeoWeb, Building better AJAX apps/Newest APIs and Developing for the Mobile sessions. I'll try and keep blogging as the day goes on, but the wireless internet is starting to creak under the pressure already, and I've got a feeling I'm going to have to fight for a power socket.

The important bit of these sorts of days is, of course, the free stuff. So far I've snagged a 500MB flash drive, a yo-yo, some silly putty, a Google mouse mat and of course a Google T-shirt. You can't complain...

Update: The Google Keynote given by Chris DiBona and Ed Parsons.

Update: The new features in the Maps API session with Andrew Eland.

Update: The Google Earth and the GeoWeb session with Peter Birch.

Update: The Google Gears session with Chris Prince.

Update: The mobile development session with Gummi Hafsteinsson.

Update: The webcast keynote, live from Mountain View.

Update: Footage from the Google Developer Day is now on YouTube.