Saturday, December 10, 2011

[Gd] Calendar API v3 Best Practices: Recurring Events

| More

Google Apps Developer Blog: Calendar API v3 Best Practices: Recurring Events

We recently launched a new version of the Google Calendar API. In addition to the advantages it gains from Google's new infrastructure for APIs, Google Calendar API v3 has a number of improvements that are specific to Google Calendar. In this blog post we’ll highlight a topic that often causes confusion for developers using the Google Calendar API: recurring events.

A recurring event is a 'template' for a series of events that usually happen with some regularity, for example daily or bi-weekly. To create a recurring event, the client specifies the first instance of the event and includes one or more rules that describe when future events should occur. Google Calendar will then 'expand' the event into the specified occurrences. Individual events in a series may be changed, or even deleted. Such events become exceptions: they are still part of the series, but changes are preserved even if the recurring event itself is updated.

Let's create a daily recurring event that will occur every weekday of the current week (as specified by the recurrence rule on the last line):

POST https://www.googleapis.com/calendar/v3/calendars/primary/events

{
"summary": "Daily project sync",
"start": {
"dateTime": "2011-12-12T10:00:00",
"timeZone": "Europe/Zurich"
},
"end": {
"dateTime": "2011-12-12T10:15:00",
"timeZone": "Europe/Zurich"
},
"recurrence": [
"RRULE:FREQ=DAILY;COUNT=5"
]
}

When added to a calendar, this will turn into five different events. The recurrence rule is specified according to the iCalendar format (see RFC 5545). Note, however, that, in contrast to the previous versions of the Google Calendar API, the start and end times are specified the same way as for single instance events, and not with iCalendar syntax. Further, note that atimezone identifier for both the start and end time is always required for recurring events, so that expansion happens correctly if part of a series occurs during daylight savings time.

By default, when listing events on a calendar, recurring events and all exceptions (including canceled events) are returned. To avoid having to expand recurring events, a client can set the singleEvents query parameter to true, like in the previous versions of the API. Doing so excludes the recurring events, but includes all expanded instances.

Another way to get instances of a recurring event is to use the 'instances' collection, which is a new feature of this API version. To list all instances of the daily event that we just created, we can use a query like this:

GET https://www.googleapis.com/calendar/v3/calendars/primary/events/7n6f7a9g8a483r95t8en23rfs4/instances

which returns something like this:

{
...
"items": [
{
"kind": "calendar#event",
"id": "7n6f7a9g8a483r95t8en23rfs4_20111212T090000Z",
"summary": "Daily project sync",
"start": {
"dateTime": "2011-12-12T10:00:00+01:00"
},
"end": {
"dateTime": "2011-12-12T10:15:00+01:00"
},
"recurringEventId": "7n6f7a9g8a483r95t8en23rfs4",
"originalStartTime": {
"dateTime": "2011-12-12T10:00:00+01:00",
"timeZone": "Europe/Zurich"
},
...
},
… (4 more instances) ...

Now, we could turn one instance into an exception by updating that event on the server. For example, we could move one meeting in the series to one hour later as usual and change the title. The original start date in the event is kept, and serves as an identifier of the instance within the series.

If you have a client that does its own recurrence rule expansion and knows the original start date of an instance that you want to change, the best way to get the instance is to use the originalStart parameter like so:

GET https://www.googleapis.com/calendar/v3/calendars/primary/events/7n6f7a9g8a483r95t8en23rfs4/instances?originalStart=2011-12-16T10:00:00%2B01:00

This would return a collection with either zero or one item, depending on whether the instance with the exact original start date exists. If it does, just update or delete the event as above.

Lastly, in Google Calendar API v3, we have added the ability to revert the changes made to an individual instance, so it is no longer an exception. One way of doing something similar with the previous versions of the API would be to just copy all fields from the underlying recurring event into the instance and perform an update. That is an incomplete solution, however, because fields that were once updated in the exception would not be updated when the recurring event changes. The proper way to do this now is to use the reset method on the event. To undo the changes we did to our Friday meeting, we would issue a request like this:

POST https://www.googleapis.com/calendar/v3/calendars/primary/events/7n6f7a9g8a483r95t8en23rfs4_20111216T090000Z/reset

We hope you’ll find value in these changes to recurring events. Keep in mind, too, that these are not the only improvements in Google Calendar API v3. Look for an upcoming post describing best practices for another key area of improvement: reminders.

If you have any questions about handling recurring events or other features of the new Calendar API, post them on the Calendar API forum.


Peter Lundblad   profile

Peter joined Google in 2006. He's been leading the Calendar API team for the last 2 years. He's previously worked on video uploads for YouTube.


Fabian Schlup   profile

Fabian is a Software Engineer at Google in Zürich, working on Calendar and Tasks, with a focus on APIs.

URL: http://googleappsdeveloper.blogspot.com/2011/12/calendar-v3-best-practices-recurring.html

[Gd] Dev Channel Update for Chromebooks

| More

Chrome Releases: Dev Channel Update for Chromebooks


The Dev channel has been updated to 17.0.963.2 (Platform versions: 1412.5.0 and 1412.7.0) for Chromebooks (Acer AC700, Samsung Series 5 , and Cr-48).

Highlights:

  • Updated Chrome version (stability and feature improvements)
  • Pepper flash: release 11.1.31.202
  • Update Chromevox (features and bug fixes)
Known issues:
  • Issue 23560: Power button does not respond (rare).
  • Issue 23908: chrome://system output truncated after "touchpad_activity"
  • Issue 23244: Browser context menu is displayed when right-clicking on File browser window
  • Issue 23379: Selected text disappears in file browser
  • Issue 23571: Angry birds : graphics problems
  • Issue 23802: Crash: Chrome crash on enabling and disabling Capslock (or) accessibility
  • Issue 23848: Playing youtube video in gtalk window causes all gtalk windows to disappear
If you find new issues, please let us know by visiting our help site or filing a bug. You can also submit feedback using "Report an issue" under the wrench icon. Interested in switching to the Dev channel? Find out how.

Orit Mazor
Google Chrome
URL: http://googlechromereleases.blogspot.com/2011/12/dev-channel-update-for-chromebooks.html

Friday, December 9, 2011

[Gd] Fridaygram: graphing functions, telescope milestone, baby scientists

| More

The official Google Code blog: Fridaygram: graphing functions, telescope milestone, baby scientists

Author Photo
By Scott Knaster, Google Code Blog Editor

You might already know that Google Search makes a handy calculator. Just type any calculation into a Google search box, and the answer is computed for you. Earlier this week, we added an even cooler, more powerful feature. Now, when you type a function, you’ll see it graphed.



As you can see in this image, you can graph more than one function at a time by separating them with commas. Once the graph is drawn, you can zoom and pan to see the sections and details you want. And the Google colors are a nice touch.

In other calculation-related news this week, the Hubble Space Telescope counted to 10,000. That’s the number of published scientific papers based on data gathered from Hubble. Although the telescope was launched back in 1990, it’s said to be in great shape and is taking great pictures, thanks largely to frequent service missions by astronauts. That should inspire you to change the oil in your car.

Finally, here’s one especially for you babies out there, and for those who know or are related to babies. The Nerdy Baby coloring book for very young scientists looks like a great way to nudge very small kids toward a proper nerdy upbringing. And when you’re not coloring, you can spend some time this weekend coming up with cool functions to graph on Google Search.


Fridaygram posts are just for fun. They're designed for your Friday afternoon and weekend enjoyment. Each Fridaygram item must pass only one test: it has to be interesting to us nerds (sometimes including nerdy babies).


URL: http://googlecode.blogspot.com/2011/12/fridaygram-graphing-functions-telescope.html

[Gd] Games, apps and runtimes come to Native Client

| More

The official Google Code blog: Games, apps and runtimes come to Native Client


By Christian Stefansen, Product Manager

Cross-posted from the Chromium Blog

Since we launched Native Client late last summer, our team has been working hard to make the technology more useful to developers. Yesterday at an event held at Google we shared the progress we’ve made towards this goal and showcased work from some of the early adopters of the technology, including Square Enix, Unity Technologies, and Bungie.

One code base for all OSs
In September, we started supporting a set of core Pepper interfaces, suited for 2D graphics, audio, and compute-intensive applications. Since that release, we’ve shipped additional APIs and capabilities, providing native code with more of the capabilities available from JavaScript. These include hardware-accelerated 3D graphics via OpenGL ES 2.0, a mouse lock API, a full-screen API, and much more. One example of the kind of experience Native Client can currently support is Bastion, an award-winning role-playing game from Supergiant Games. Previously limited to Microsoft Windows® and Xbox® systems, the Native Client port of Bastion allows Supergiant to reach users on all popular desktop operating systems, with the safety and simplicity of the web.

Easy porting of previous work
If you have existing code bases in C, C++, or C#, Native Client now allows you to port your existing apps to the web while maintaining just one code base. This was particularly appealing to Spacetime Studios. They ported their multiplayer online game Star Legends to the web in less than two weeks from an existing code base of more than half a million lines of code. The side benefit of being able to maintain their existing development and testing infrastructure further accelerated their delivery of a shipping title.

More choices of programming languages

The community is actively involved in Native Client, porting some of the most popular application middleware. Ports include Unity and Moai game engines, programming language environments Mono and Lua, audio middleware such as fmod and Wwise, as well as the Bullet physics engine. These Native Client ports make the web more accessible to hundreds of thousands of application developers. At the event, we showcased upcoming applications from Heartwood, Silvertree, Exit Strategy, and Dedalord, who used those tools to bring their apps to the web with very little effort. We’ll continue to work with the community to get even more languages and middleware systems ported to Native Client.

We recognize that building a Native Client app is only the start of a successful app. That’s why we’ve enabled distribution of Native Client-based apps via the Chrome Web Store. The Chrome Web Store gives developers a simple, effective strategy to reach over 200 million active users of Google Chrome.

If all this sounds exciting, please visit our new documentation site at gonacl.com. There you’ll find a growing collection of tutorials, examples, videos, reference documentation, and much more.



Questions or suggestions? Join us in the discussion forums. We look forward to seeing some great new apps from Native Client developers.


Posted by Scott Knaster, Editor
URL: http://googlecode.blogspot.com/2011/12/games-apps-and-runtimes-come-to-native.html

[Gd] Improvements to Autocomplete

| More

Custom Search Engine: Improvements to Autocomplete

Custom Search Autocompletions allow you to add to the list of useful queries users see as they type in the search box. Today we are announcing two major improvements.


Promotions in Autocomplete:


Promotions are a great way to call special attention to a result by putting it at the top of search results and making it visually distinct. Now you can choose to display them in autocomplete too. To enable this feature, simply click Show promotions in autocomplete in the Promotions section of your CSE’s Control Panel. Note that promotions based on regular expressions or the $q variable will not appear in autocomplete.


If you’d like to have promotions that appear in autocomplete but not in search results, you can add them via the new Autocomplete Promotion tab of the Custom Autocompletions in the Autocompletion section of your CSE’s Control Panel.








Match mode:


Match mode give you options for how Google displays autocompletions. The following are now available in the Promotions section of your CSE’s Control Panel. Changes to match mode will require you to update the CSE code snippet on your site.



  • Prefix (default) mode matches the opening words of the user’s query: “how to bake” will trigger “how to bake a pie”.
  • Ordered mode doesn’t require the words to be in the opening, but their order must match the user’s query: “bake a pie” will trigger “how to bake a pie”.
  • Any mode matches regardless of the order of the words in the user’s query. “pie bake” will trigger “how to bake a pie”.


We hope these new options make autocompletions even more useful for your site. Read more about Promotions in Autocomplete and Match mode. Let us know what you think in our discussion forum.


Posted by: Min Zeng, Software Engineer



URL: http://feedproxy.google.com/~r/blogspot/Syga/~3/_IbaaVlVjRg/improvements-to-autocomplete.html

[Gd] Games, apps and runtimes come to Native Client

| More

Chromium Blog: Games, apps and runtimes come to Native Client

Since we launched Native Client late last summer, our team has been working hard to make the technology more useful to developers. Yesterday at an event held at Google we shared the progress we’ve made towards this goal and showcased work from some of the early adopters of the technology, including Square Enix, Unity Technologies, and Bungie.

One code base for all OSs
In September, we started supporting a set of core Pepper interfaces, suited for 2D graphics, audio, and compute-intensive applications. Since that release, we’ve shipped additional APIs and capabilities, providing native code with more of the capabilities available from JavaScript. These include hardware-accelerated 3D graphics via OpenGL ES 2.0, a mouse lock API, a full-screen API, and much more. One example of the kind of experience Native Client can currently support is Bastion, an award-winning role-playing game from Supergiant Games. Previously limited to Microsoft Windows® and Xbox® systems, the Native Client port of Bastion allows Supergiant to reach users on all popular desktop operating systems, with the safety and simplicity of the web.

Easy porting of previous work
If you have existing code bases in C, C++, or C#, Native Client now allows you to port your existing apps to the web while maintaining just one code base. This was particularly appealing to Spacetime Studios. They ported their multiplayer online game Star Legends to the web in less than two weeks from an existing code base of more than half a million lines of code. The side benefit of being able to maintain their existing development and testing infrastructure further accelerated their delivery of a shipping title.

More choices of programming languages

The community is actively involved in Native Client, porting some of the most popular application middleware. Ports include Unity and Moai game engines, programming language environments Mono and Lua, audio middleware such as fmod and Wwise, as well as the Bullet physics engine. These Native Client ports make the web more accessible to hundreds of thousands of application developers. At the event, we showcased upcoming applications from Heartwood, Silvertree, Exit Strategy, and Dedalord, who used those tools to bring their apps to the web with very little effort. We’ll continue to work with the community to get even more languages and middleware systems ported to Native Client.

We recognize that building a Native Client app is only the start of a successful app. That’s why we’ve enabled distribution of Native Client-based apps via the Chrome Web Store. The Chrome Web Store gives developers a simple, effective strategy to reach over 200 million active users of Google Chrome.

If all this sounds exciting, please visit our new documentation site at gonacl.com. There you’ll find a growing collection of tutorials, examples, videos, reference documentation, and much more.



Questions or suggestions? Join us in the discussion forums. We look forward to seeing some great new apps from Native Client developers.

Posted by Christian Stefansen, Product Manager
URL: http://blog.chromium.org/2011/12/games-apps-and-runtimes-come-to-native.html

[Gd] Beta Channel Update for Chromebooks

| More

Chrome Releases: Beta Channel Update for Chromebooks


The Google Chrome team is happy to announce the release of Chrome 16 on the Beta Channel for Chromebooks (Acer AC700, Samsung Series 5, and Cr-48).

Chrome version 16.0.912.63 (Platform version: 1193.105.0)

Release highlights:
  • Stability & security fixes
Known issues:
  • 23151 - Signing in with a custom encryption passphrase does not prompt users to fill in the passphrase. Workaround: If sync is not happening and you have an encryption passphrase for your account data, go to the Settings > Personal Stuff tab to fill in the passphrase.
If you find new issues, please let us know by visiting our help site or filing a bug. Interested in switching channels? Find out how. You can submit feedback using ‘Report an issue’ under the wrench menu.

Danielle Drew
Google Chrome
URL: http://googlechromereleases.blogspot.com/2011/12/beta-channel-update-for-chromebooks.html

[Gd] Dev Channel Update

| More

Chrome Releases: Dev Channel Update


The Dev channel has been updated to 17.0.963.2 for Windows, Mac, and Linux.  This release contains stability and feature improvement. Full details about what changes are in this release are available in the SVN revision log.  Interested in switching to a different release channel?  Find out how.  If you find a new issue, please let us know by filing a bug.

Jason Kersey
Google Chrome
URL: http://googlechromereleases.blogspot.com/2011/12/dev-channel-update_08.html

[Gd] More opportunities to Hangout with the Google Apps developer team in 2011

| More

Google Apps Developer Blog: More opportunities to Hangout with the Google Apps developer team in 2011

We've held many Office Hours on Google+ Hangouts over the last two months, bringing together Google Apps developers from around the world along with Googlers to discuss the Apps APIs. We've heard great feedback about these Office Hours from participants, so we've scheduled a few more in 2011.

General office hours (covering all Google Apps APIs):

Product-specific office hours:

As we add more Office Hours in the new year, we'll post them on the events calendar, and announce them on @GoogleAppsDev and our personal Google+ profiles.

Hope you’ll hang out with us soon!



Ryan Boyd   profile | twitter | events

Ryan is a Developer Advocate on the Google Apps team, helping businesses build applications integrated with Google Apps. Wearing both engineering and business development hats, you'll find Ryan writing code and helping businesses get to market with integrated features.


URL: http://googleappsdeveloper.blogspot.com/2011/12/more-opportunities-to-hangout-with.html

[Gd] Introducing the Google Analytics Core Reporting API

| More

The official Google Code blog: Introducing the Google Analytics Core Reporting API

Jeetendra
Nick

By Jeetendra Soneja and Nick Mihailovski, Google Analytics API Team

Today we are announcing the new Google Analytics Core Reporting API as a replacement for the Data Export API. This is the second phase in a larger project we started a couple months back to upgrade our APIs to new infrastructure.

The Core Reporting API has two versions.

Version 3.0 is a brand new API, with a 10x reduction in output size and support for many new client libraries, like PHP, Ruby, Python, JavaScript and Java. All new features will only be added to this version.

Version 2.4 is backward compatible with the legacy Data Export Version 2.3.

If you are building a new application or maintaining an existing one, we highly recommend migrating to version 3.0.

One of the biggest changes in switching to the Core Reporting API is that you now need to register your applications via the Google APIs Console and use a project ID to access the API.

With this change, we are also announcing the deprecation of the Data Export API version 2.3. This API will continue to work for 6 months, after which all v2.3 XML requests will return a v2.4 response. Also, we plan to terminate the Data Export API Account Feed. All configuration data should be retrieved through the Google Analytics Management API.

See our Data Export API changelog for all the details of the change and read our developer documentation for more details about each API.

If you have any questions feel free to reach out in our Data Export API Google group.


Jeetendra Soneja is the technical engineering lead on the Google Analytics API team. He's a big fan of cricket – the game, that is. :)

Nick Mihailovski is a Senior Developer Programs Engineer working on the Google Analytics API. In his spare time he likes to travel around the world.


Posted by Scott Knaster, Editor


URL: http://googlecode.blogspot.com/2011/12/introducing-google-analytics-core.html

Thursday, December 8, 2011

[Gd] A Friendly Update

| More

YouTube API Blog: A Friendly Update

As you might have recently read, there’s an upcoming change that affects any “friends” you might have associated with your YouTube account. Your existing “friend” connections will be automatically converted into Address Book contacts, and when you visit YouTube.com you will be given the option of creating subscriptions to any or all of those accounts.

If you’re a developer, you might ask yourself how this impacts your existing code that uses the YouTube Data API. One specific feed that’s exposed via the API is no longer relevant: the friends activity feed. The users of your application may have converted their old friends to corresponding subscriptions, and in that case you can make use of a new feed in our staging environment that contains activity updates from the accounts you’re subscribed to:

 https://gdata.youtube.com/feeds/api/users/default/subtivity

As of right now on our staging server, and around December 14 in production, we will automatically translate requests to the existing friends activity feed’s URL into requests to the new subscriptions activity feed, rather than just returning an empty friends activity feed. While this translation will take place transparently behind the scenes, we encourage all developers who are using the friends activity feed to explicitly update their code to point to the new subscription activity feed as a best practice.

There are also API calls related to YouTube contact management that would accept either an email address (in a <gd:email> element) or a YouTube username (in a <yt:username> element). As a side effect of this migration, you can only use <yt:username> for these calls, which is what the API’s documentation has recommended doing all along. An attempt to use <gd:email> will lead to a HTTP 400 error response.

Thanks for bearing with us through these changes. If you have any questions or concerns, please let us know in our developer forum.

Cheers,
—Jeff Posnick, YouTube API Team
URL: http://apiblog.youtube.com/2011/12/friendly-update.html

[Gd] Beta Channel Update

| More

Chrome Releases: Beta Channel Update

The Beta channel has been updated to 16.0.912.63 for Windows, Mac, Linux, and Chrome Frame. 

For an overview of key features in this release check out the Google Chrome Blog.  Interested in switching to the Beta or Stable channels?  You can also take a look at the changelog to see what happened in this release since .59.

Find out how.  If you find a new issue, please let us know by filing a bug.

Anthony Laforge
Google Chrome
URL: http://googlechromereleases.blogspot.com/2011/12/beta-channel-update_07.html

Wednesday, December 7, 2011

[Gd] Dev Channel Update

| More

Chrome Releases: Dev Channel Update

The Dev channel has been updated to 17.0.963.0 for all platforms.  This release has the following updates:

All Platforms
  • Updated V8 - 3.7.12.6
  • r113121 Omnibox suggestions will now be prerendered if our confidence of the user following the suggestion is high.
  • Support for <meta name=”referrer”>
  • Content Settings (in Options, Under the Hood) now has UI for “Mouse Cursor”, which controls the Mouse Lock API permissions.
  • r110556 Fixed a renderer crash that could happen when opening a new tab with many tabs open.
  • WebKit Issue 73056  - Small fix for BiDi selection.
  • WebKit Issue 63903 - Fixed WebKit's implementation of bdo, bdi, and output elements to match HTML5 spec section 10.3.5.
Windows
  • r111156 - Desktop shortcuts will be created for each user account, to launch Chrome with that account active.
Mac
  • The PDF viewer now renders nicer looking text.
  • r111426 - Plugins using the Core Animation rendering model are now rendered through Chrome’s compositor rather than directly to the screen. This should have no user visible side effects; please file bugs and cc: kbr@chromium.org if any unexpected issues are seen with plugin rendering on Mac.
Known Issues
  • Extension/App/Themes installs on Linux/ChromeOS are currently not working.  This includes sync-driven installs. (Bug 106599)
Full details about what changes are in this release are available in the SVN revision log.  Interested in switching to a different release channel?  Find out how.  If you find a new issue, please let us know by filing a bug.

Jason Kersey
Google Chrome
URL: http://googlechromereleases.blogspot.com/2011/12/dev-channel-update.html

Tuesday, December 6, 2011

[Gd] Tips for hosting providers and webmasters

| More

Official Google Webmaster Central Blog: Tips for hosting providers and webmasters

Webmaster level: All

Some webmasters on our forums ask about hosting-related issues affecting their sites. To help both hosting providers and webmasters recognize, diagnose, and fix such problems, we’d like to share with you some of the common problems we’ve seen and suggest how you can fix them.

  • Blocking of Googlebot crawling. This is a very common issue usually due to a misconfiguration in a firewall or DoS protection system and sometimes due to the content management system the site runs. Protection systems are an important part of good hosting and are often configured to block unusually high levels of server requests, sometimes automatically. Because, however, Googlebot often performs more requests than a human user, these protection systems may decide to block Googlebot and prevent it from crawling your website. To check for this kind of problem, use the Fetch as Googlebot function in Webmaster Tools, and check for other crawl errors shown in Webmaster Tools.

    We offer several tools to webmasters and hosting providers who want more control over Googlebot’s crawling, and to improve crawling efficiency:

    We have more information in our crawling and indexing FAQ.

  • Availability issues. A related type of problem we see is websites being unavailable when Googlebot (and users) attempt to access the site. This includes DNS issues, overloaded servers leading to timeouts and refused connections, misconfigured content distribution networks (CDNs), and many other kinds of errors. When Googlebot encounters such issues, we report them in Webmaster Tools as either URL unreachable errors or crawl errors.

  • Invalid SSL certificates. For SSL certificates to be valid for your website, they need to match the name of the site. Common problems include expired SSL certificates and servers misconfigured such that all websites on that server use the same certificate. Most web browsers will try warn users in these situations, and Google tries to alert webmasters of this issue by sending a message via Webmaster Tools. The fix for these problems is to make sure to use SSL certificates that are valid for all your website’s domains and subdomains your users will interact with.

  • Wildcard DNS. Websites can be configured to respond to all subdomain requests. For example, the website at example.com can be configured to respond to requests to foo.example.com, made-up-name.example.com and all other subdomains.

    In some cases this is desirable to have; for example, a user-generated content website may choose to give each account its own subdomain. However, in some cases, the webmaster may not wish to have this behavior as it may cause content to be duplicated unnecessarily across different hostnames and it may also affect Googlebot’s crawling.

    To minimize problems in wildcard DNS setups, either configure your website to not use them, or configure your server to not respond successfully to non-existent hostnames, either by refusing the connection or by returning an HTTP 404 header.

  • Misconfigured virtual hosting. The symptom of this problem is that multiple hosts and/or domain names hosted on the same server always return the contents of only one site. To rephrase, although the server hosts multiple sites, it returns only one site regardless of what is being requested. To diagnose the issue, you need to check that the server responds correctly to the Host HTTP header.

  • Content duplication through hosting-specific URLs. Many hosts helpfully offer URLs for your website for testing/development purposes. For example, if you’re hosting the website http://a.com/ on the hosting provider example.com, the host may offer access to your site through a URL like http://a.example.com/ or http://example.com/~a/. Our recommendation is to have these hosting-specific URLs not publicly accessible (by password protecting them); and even if these URLs are accessible, our algorithms usually pick the URL webmasters intend. If our algorithms select the hosting-specific URLs, you can influence our algorithms to pick your preferred URLs by implementing canonicalization techniques correctly.

  • Soft error pages. Some hosting providers show error pages using an HTTP 200 status code (meaning “Success”) instead of an HTTP error status code. For example, a “Page not found” error page could return HTTP 200 instead of 404, making it a soft 404 page; or a “Website temporarily unavailable” message might return a 200 instead of correctly returning a 503 HTTP status code. We try hard to detect soft error pages, but when our algorithms fail to detect a web host’s soft error pages, these pages may get indexed with the error content. This may cause ranking or cross-domain URL selection issues.

    It’s easy to check the status code returned: simply check the HTTP headers the server returns using any one of a number of tools, such as Fetch as Googlebot. If an error page is returning HTTP 200, change the configuration to return the correct HTTP error status code. Also, keep an eye out for soft 404 reports in Webmaster Tools, on the Crawl errors page in the Diagnostics section.

  • Content modification and frames. Webmasters may be surprised to see their page contents modified by hosting providers, typically by injecting scripts or images into the page. Web hosts may also serve your content by embedding it in other pages using frames or iframes. To check whether a web host is changing your content in unexpected ways, simply check the source code of the page as served by the host and compare it to the code you uploaded.

    Note that some server-side code modifications may be very useful. For example, a server using Google’s mod_pagespeed Apache module or other tools may be returning your code minified for page speed optimization.

  • Spam and malware. We’ve seen some web hosts and bulk subdomain services become major sources of malware and spam. We try hard to be granular in our actions when protecting our users and search quality, but if we see a very large fraction of sites on a specific web host that are spammy or are distributing malware, we may be forced to take action on the web host as a whole. To help you keep on top of malware, we offer:

We hope this list helps both hosting providers and webmasters diagnose and fix these issues. Beyond this list, also think about the qualitative aspects of hosting like quality of service and the helpfulness of support. As always, if you have questions or need more help, please ask in our Webmaster Help Forum.

Written by , Webmaster Trends Analyst

URL: http://googlewebmastercentral.blogspot.com/2011/12/tips-for-hosting-providers-and.html

[Gd] Around the world with Google Developer Day 2011

| More

The official Google Code blog: Around the world with Google Developer Day 2011

Author Photo
By Monica Tran, Google Developer Day Team

This year's Google Developer Day events just finished after a worldwide tour across nine cities and four continents. We'd like to thank the thousands of developers who contributed to making Google Developer Day a success. If we didn’t make it to your city, you can continue to get regular updates on all things developer at our Google Developers page on Google+. And for those of you looking for a community to join, get in touch with one of our local Google Technology User Groups (GTUGs) or if you’re feeling bold, start your own chapter!

Please read the recaps below, and visit our website to get the highlights, videos and photos from Google Developer Day 2011. See you in 2012!


Google Developer Day photos

Sao Paulo, Brazil: The countdown to Google Developer Day ended with the first of our events in Sao Paulo, where we welcomed over 1,600 developers. Brazilian developers showed up in full force for the event, celebrating the latest Chrome Webstore launch, showing us the most crazy code they’ve ever written and interacting with developers’ creations in the Android ADK showcase.

Buenos Aires, Argentina: Continuing our Latin America tour, James Whittaker, Director of Engineering, delivered a keynote featuring the latest from Android, Chrome, and Google+. The keynote presentations were built in HTML5 and featured a 3D demo of the latest Ice Age trailer. The Google+ game was a hit among attendees, who used the pin exchange as a conversation starter to meet other developers. Those who found all five, including the elusive black Circles pin, took home one of these guys.

Moscow, Russia: Russia is home to the 4th largest developer population in the world, accounting for 12% of EMEA’s developers. On October 10, more than 1,800 of those developers joined us in Moscow, where we hosted five simultaneous tracks featuring 19 speakers and 25 sessions. With the help of Russian GTUGs, we featured 16 projects, including ADK-powered robots from our Open Call challenges. Check out photos of our speakers in Russian national shirts and other photos of the event here.

Prague, Czech Republic: This year’s Google Developer Day focused on bringing nearly 1,000 members of the developer community together in creative and fun ways. Our very first Developer Sandbox featured 12 companies, in addition to four projects from ADK Challenge and a showcase of the 20 latest Android devices. At the end of the day--after 27 sessions by 25 speakers--Ignite stole the show with eight Czech influencers presenting on topics from happiness at work to 3D printing. Additionally, check out our HTML5 developer competition, Mam Padla, as well as videos and photos from the event.

Beijing, China: Despite being a late addition, China showed up in a big way with a 3-city Google Developer Day tour that attracted 2,240 attendees. In addition to the keynote, 36 breakout sessions, 21 partner booths and 6 product demos were offered, and over 60 developer applications showcased. New to Beijing this year was the live audience instant message display, which was shown during the keynote. Seven GTUGs across China sent in greeting videos and nearly a dozen developers came on stage to share their experiences developing innovative business solutions using Google technologies.

Tokyo, Japan: With over 1,700 developers in attendance after being selected via DevQuiz from 5,000 registrations, and with over 100 volunteer developers and Googlers collaborating to organize, this year’s Google Developer Day embraced the spirit of open source with 40 developers in the Developer Sandbox, 17 Open Call (Android and HTML5) exhibits, a Mini Theater for developers to stage informal presentations, and an appearance from Bar Android. Ignite closed the event with lightning talks from 6 developers and our DevQuiz team, GoogleFes!, and a special dance performance from the GDD48. Check out our highlights video and photos for the full picture.

Sydney, Australia: We hosted our largest developer audience in Australia at our third Google Developer Day event. Our Sydney-based engineers and Developer Relations speakers put on 32 sessions, including a VC panel that featured interviews from experts at Posse, Pollenizer and Atlassian. To quench their thirst, developers turned to iZac, our Android ADK-powered bartender. For more highlights and photos, visit our homepage.

Tel Aviv, Israel: Israel has one of the highest numbers of startups per capita, leading us to deem it the “Startup Nation” amongst our Google Developer Day countries. 1,450 developers joined us for this year’s event, where we hosted 27 sessions, as well as lots of fun activities at the innovation lounge. To showcase the rich innovation coming from the country, local developers Paradroid, The Sign Language Glove, Xtendi and iOnRoad (among many others) were on-hand to demo their creations; while Tmura (the Israeli Public Service Venture Fund) and the Israeli Accessibility Association helped raise awareness for causes relevant to developers. Check out the highlights video and photos.

Berlin, Germany: With over 2,100 developers in attendance at this year’s event, the grande finale of our world tour, Google Developer Day in Berlin, was also our largest single GDD in 2011. Partnering with two of the most innovative universities in Germany, Technische Universität Berlin (TU) and Humboldt-Universität zu Berlin (HU), we hosted 37 sessions in 5 parallel tracks. We had a great presentation of the winners of the German ADK- and HTML5-Open Call, university students showcased 31 projects with innovative technologies mostly related to Google products and GDD themes, and we had a great after-GDD get together at the famous Berlin underground space station c-base. Our German GTUG community, with 16 local GTUGs the most active in Europe, organized an amazing 4-day Developer Weekend, which included Bootcamp, Hack-and-Tell and Ignite sessions. Don’t miss our highlights video (featuring beatboxing at its best) and our photo gallery.


You might remember Monica Tran from I/O Live or one of our eight Google Developer Days around the world. Now Monica is back to lead the charge on Google I/O 2012.

Posted by Scott Knaster, Editor


URL: http://googlecode.blogspot.com/2011/12/around-world-with-google-developer-day.html

Monday, December 5, 2011

[Gd] Google Apps Developer Hackathon NYC

| More

Google Apps Developer Blog: Google Apps Developer Hackathon NYC

Editor’s note: If you’re in the SF area, join us tomorrow for our next hackathon. There are a few spots left. See Eric's note at the end of this post.

Last Thursday’s Google Apps Hackathon in New York brought together 70 developers to create cool new applications using Google Apps APIs. The varied field of talent included individual developers, small teams from companies like ShuttleCloud, and a group of technically inclined educators from the non-profit New Visions for Public Schools.

Ten Google engineers were on hand to help participants with tips and information about specific APIs. Among them, Dan Holevoet and Alain Vongsouvanh from Mountain View shared their Calendar and Contacts API expertise, while Shradda Gupta and Gunjan Sharma traveled from India to help field questions about admin and domain management APIs.

At this hackathon, competitors had two categories to choose from: building new applications using Google Apps APIs, and integrating Google Apps APIs with an existing app. The various groups entered and demonstrated a total of sixteen apps across the two categories, including:

  • Schedule Monsters: a Google Calendar integration that facilitates scheduling job interviews by giving applicants limited access to employer's calendars
  • Automating Administrivia: an ambitious project using Google Documents, Email, Calendar, and Spreadsheet forms to automate educational admin workflow.
  • Show Me: a mash-up tying Google Calendar together with Earth and Places APIs to help visualize geographic data on the locations of events.

For the new apps category, the panel of judges settled first prize on “AlphaSheet,” a simple but streamlined app using a custom spreadsheet function to fill in values from Wolfram Alpha queries. “Fareshare” took top honors in the second category for integrating Google Calendar in a mobile app that helps New Yorkers share cab rides.

It’s great to see developers join forces and have a great time hacking up new apps at events like this one. An impressive amount of knowledge-sharing occurred, and everyone walked away with new ideas and skills to take back to their work in the realms of business or education.

If you missed this event, don’t worry — the future holds more hackathons, including the upcoming event tomorrow (Dec 6th) at Google’s Mountain View, CA campus from 1:00pm - 8:00pm PST. If you’re located in Europe, we have a series of events planned over the next few months.


Eric Gilmore  

Eric is a technical writer working with the Developer Relations group. Previously dedicated to Google Enterprise documentation, he is now busy writing about various Google Apps APIs, including Contacts, Calendar, and Provisioning.

URL: http://googleappsdeveloper.blogspot.com/2011/12/google-apps-developer-hackathon-nyc.html

[Gd] New markup for multilingual content

| More

Official Google Webmaster Central Blog: New markup for multilingual content

Many websites serve users from around the world. There are different approaches to serving content appropriate to your users' language and/or region. Last year, we launched support for explicit annotations for web pages rendering the same content with different language templates.

Today we're going further with our support for multilingual content with improved handling for these two scenarios:

  • Multiregional websites using substantially the same content. Example: English webpages for Australia, Canada and USA, only differing in price
  • Multiregional websites using fully translated content or substantially different monolingual content targeting different regions. Example: A Product Webpage in German, English and French

Specifying language and location

We've expanded our support of the rel="alternate" hreflang link element to handle content that is translated or provided for multiple geographic regions. The hreflang attribute can specify the language, optionally the country, and URLs of equivalent content. By specifying these alternate URLs, our goal is to be able to consolidate signals for these pages, and to serve the appropriate URL to users in search. Alternative URLs can be on the same site or on another domain.

Annotating pages as being substantially similar content

Optionally, for pages that are substantially the same content, in the same language, and targeted for multiple countries, you may use the rel="canonical" link element to specify your preferred version. We’ll use that signal to focus on that version in search, while showing the local URLs to users where appropriate. For example, you could use this if you have the same product page in German, but want to target it separately to users searching on the Google properties for Germany, Austria, and Switzerland.

Example usage

To explain how it works, let’s look at some example URLs:

  • http://www.example.com/ - contains the general homepage of a website, in Spanish
  • http://es-es.example.com/ - is the version for users in Spain, in Spanish
  • http://es-mx.example.com/ - is the version for users in Mexico, in Spanish
  • http://en.example.com/ - is the generic English language version

On all of these pages, we could use the following markup to specify language and optionally the region:



<link rel="alternate" hreflang="es" href="http://www.example.com/" />
<link rel="alternate" hreflang="es-ES" href="http://es-es.example.com/" />
<link rel="alternate" hreflang="es-MX" href="http://es-mx.example.com/" />
<link rel="alternate" hreflang="en" href="http://en.example.com/" />

If you specify a regional subtag, we’ll make assumptions that you want to target that region.

Keep in mind that all of these annotations are to be used on a per-URL basis. You should take care to use the specific URL, not the homepage for both of these link elements.

More help

As always, if you need more help correctly implementing multiregional and multilingual websites, please see our Help Center article about this topic, or ask in our Webmaster Help Forum.

Written by , Software Engineer, Search Infrastructure, Google Switzerland

URL: http://googlewebmastercentral.blogspot.com/2011/12/new-markup-for-multilingual-content.html