
On Friday, the 12th, a significant event took place, such as Google Developers Day 2010 in Moscow. This is the penultimate event in the GDD series, the next will be in Prague on November 16, and the previous ones were held in Tokyo, Sao Paulo and Munich. GDD is a significant event for all developers and 4,000 people wanted to get there, as many applications were submitted. It was only 1500 and I was one of the lucky ones. About how GDD 2010 was for me, and I want to tell.

The conference was held in Crocus Expo, a giant exhibition complex, on one of the floors of which easily fit 1,500 people. From the metro, there were clear signs to everyone, which eventually led us to the 3rd floor to the reception desk with registration. Quickly passing it thanks to the registration codes sent in advance, we went to the pavilion, where everything was all to create a pleasant atmosphere: unobtrusive music, lots of soft seats, refrigerators with soft drinks, hot tea and coffee for those who just got up, games and entertainment - for those who came to get a fan, Wi-Fi - for those who want to surf the net. But everyone was waiting for the main thing - reports.

The conference was opened by Evgeny Sokolov, head of the Moscow development center, and Eric Tolome (
Erik Tholome ), director of products for developers. Eric, with his characteristic enthusiasm, told about all the updates to Google, which unfortunately was a spoiler for some of the reports and spoiled the impression from them. In order not to repeat this experience, briefly go over the key points of his speech.
What is new to us HTML5:
- geolocation and positioning in space;
- speech recognition;
- 2D & 3D graphics using WebGL;
- WebSockets;
- productivity increase.
What is new to us
App Engine :
- full map reduce
- export / import data;
- high security;
- Storage SQL;
- OpenID + OAuth;
- special offers for business.
Then we started talking about GWT and development such as
Spring Roo . Spring Roo (SR) is an analogue of Django, but only on java. SR takes over the backend, and GWT takes over the front end. Before our eyes, Fred Sauer, to whom Erik passed the word, showed how from the command line you can create a simple application with a certain set of entities, configure them with Hibernate and generate a UI for GWT. Then Fred launched Eclipse, for which there is a special plugin
Google Plugin for Eclipse and launched the application in front of the public. (By the way, a single word about the demos - almost all were demonstrated in FireFox with poppies.) The demo worked with a bang. Fred also showed another SR chip - redeployed, after changing the essence. Separate customization options - configuration for deployment to Google App Engine.
Thanking Fred, Eric almost immediately gave up the microphone to Reto Meier, who spoke in some detail about the prospects of Android development. According to his words, today released 90 types of devices running on the Android platform. Without becoming delved into the technical details, Reto spoke about the possibilities that the Android Store provides, namely:
- integration with the developer's site;
- convenient system of reports and comments;
- cloud;
- special business conditions.
')
At this conference was declared open and earned 5 sections:
- Android;
- Chrome & HTML5;
- monetization;
- cloud computing;
- social web
In each section, there were 6 reports each (this is if monetization and the social web were merged into one), so a total of 24 reports were read, and at times it was terribly like to break. But in the end it turned out what happened. Let's go in order.
How to write epic applications for AndroidReto Meier ( Reto Meier )
Reto built his report in 4 positions:
- how to do NOT;
- how to do it;
- how to measure the result;
- how to learn lessons
Here is what I managed to extract for myself. First, you need to work a lot on performance and use, for example, Threads / AsyncThreads. At the same time, it is imperative to keep the user fully aware of what is happening in the application.
Of course, the application should be user friendly, so do not forget about user experience:
- we make easy navigation, including hanging it on the trackboll;
- status bar is better not to hide;
- it is better to use native icons;
- Be sure to take into account and remember user preferences.
With regards to programming style:
- Do NOT use undocumented APIs (no, seriously!);
- Do not forget about the life cycle of the application;
- Be sure to support landscape / portrait display modes;
- remember about the various possible screen sizes.
One of the most seemingly obvious tips would be to call in a designer. For all its obviousness, it is often forgotten.
Reto finished with a story about how important it is to integrate an application with analytics to get the following data:
- attendance statistics;
- user reviews;
- other
What's new in App EngineFred SauerChannel APIThis API is intended for direct communication between the server and the browser client.
What is there now:
- Async Server - Client (based on the Channel messaging system, bidirectional system)
- Server (sends and receives messages through the created channel);
- Client (written in JS, allows you to subscribe to messages and respond to them via callbacks).
MapReduceMapReduce is a framework for computing some sets of distributed tasks using a large number of computers forming a cluster. In the course of the story about MapReduce, Fred regularly spoke “magic!”. Part of MapReduce is the Map, for which the Mapper API is open. A few words about him:
- convenient to use for generating reports, data export, shema migrations;
- TaskQueue inside;
- Apache 2 licensing;
- python / java support;
- automation of internal processes.
Namespace APIThis API changes the usual work with datastore and memcached storage, adding the namespace field between the key and the value. One of the obvious applications is working with different versions of the program.
Matcher APIAn interesting system, which so far, sort of like. implemented only for pythone. Allows an entity to match fields to any values ​​according to the condition we have chosen. Applicable for migrations and reporting.
Hosted sqlThis functionality allows you to store on the server a set of SQL queries that can be launched by pressing 1 button. Which is convenient for generating demo data and also receiving reports.
Admin consoleComfortable admin to work with most of the functions sounded above.
Saturated spiritually, we began to be saturated financially - lunch began. Everything was organized very well, since there were no special rush and queues. The food was delicious and it was enough. Also very pleased with free drinks in refrigerators.

Having a little rest, we again rushed to find out and enjoy the new.
Practical HTML5Jeremy Orlov (Jeremy Orlow)Jeremy first talked about the changes in semantics, namely:
- new page markup tags;
- new values ​​of the rel parameter of the link tag;
- the emergence of microdata;
- ARIA attribute.
Next, we moved to canvas:
- drawing lines and shapes;
- image data;
- Web GL;
- inline svg.

Then there was a demo and a story about:
- tagged audio and video;
- opportunities to drag & drop files;
- notifications;
- determination of the orientation of the device in space.
Well, finally we switched to css3:
- transformations;
- transitions;
- animation;
- flexible box model.
Together with Jeremy,
Vadim Makeev , also known as pepelsbey, gave a presentation on
“Special Effects Tea” .
Data processing at high loads in App EngineMike Aizatsky ( Mike Aizatsky )By the way, it was the most eventful of all the reports. It began with a description of the problems faced by App Engine users:
- time limits for requests;
- problems with very frequent updating of the same records;
- growing delays;
- AppEngine does not like heavy applications.
Then Mike brought out several concepts that change the familiar look at the LAMP approach:
- data must be written so that it is convenient to read;
- often the same data can be stored in 2 different places;
- need to change the programming model.
And to solve these problems, two approaches are possible: low-level and high-level.
Low-level technologyNamed tasks:
- queue ensures the uniqueness of tasks;
- names are kept for at least 7 days;
- creating a named task is faster than similar database manipulations.
Hitch tasks:
- task breakdown;
- creating tasks within other tasks;
- of the minuses - the uncontrolled increase in the number of tasks.
Transactional Tasks:
- The task is created during the application of the transaction.
Record groups:
- a single way to make transactions;
- the group is organized in the form of a tree;
- There are no restrictions on the size and shape of the tree;
- any records create a transaction;
- batch tasks automatically create groups of entries.
Named Records:
- provide the ability to quickly search by key;
- already sorted by key;
- the use of automatic keys is an extra waste of space, so you need to use the unique fields of the entity itself.
Synthetic properties:
- properties are created based on other properties;
- Requests are faster.
High-level technologyHere Mike suggested the following:
- reading publications on the Internet;
- MapReduce;
- use of small libraries;
- exchange of experience between developers.
I hope to find this presentation, as I was not able to record anything. After that, it was absolutely necessary to have a rest, so the break came in handy.
Web apps in the Chrome WebStorePaul KinlanPaul started with a story about what should be in good modern applications:
- simple registration (aviary editor);
- registration with inheritance, that is, using existing accounts (diary.com);
- automatic long-term storage (iehtherpad.com);
- rich animation, using the features of html5 and css3;
- support for offline mode, due to AppCache and LocalStorage / DB;
- Handling most tasks with WebWorkers
- presence of hardware acceleration.
After that, Paul turned to enumeration, why was Chrome WebStore created:
- convenient search for the desired application in one system;
- single integrated payment system;
- simple scheme involving a large number of users.
And I completed the entire report, which I waited with great impatience.
Mobile development: HTML5 or Native?Reto Meier, Mike Schemof (Reto Meier, Michael Mahemoff )For a start, the speakers determined when it was worth writing this or that application.
The power of native applications:
- work speed;
- iron support;
- high integration with the system.

The power of html5 applications:
- support of various form factors;
- runs on various devices with a minimum of cost from the developer;
- rapid development of web technologies and their time.
Here, by the way, Michael brought an interesting slide of the form:
Processing speed js code:
- Firefox (2004) - 1800 ms
- Chrome (2010) - 10 ms
DOM processing speed:
- Firefox (2004) - 118 ms
- Chrome (2010) - 2 ms
Excellent comparison, I think =)
In addition, web technologies allow us to work with geolocation and many other things, access to which is provided by hardware.
As a summary of the report, the following thought was put forward that the ideal is a combination of Native and HTML5 applications, which allows for example
PhoneGap and
Titanium .
At this GDD was almost over, there was only the final word and a buffet that summarized this wonderful and busy day.
As a postscript:
- Hidden advertising Yandex =)

- Google - back view
