Monday, July 1, 2013

[Gd] Easier navigation without GPS

| More

Official Google Webmaster Central Blog: Easier navigation without GPS

Webmaster level: All

Today we’re unveiling a shiny new navigation in Webmaster Tools. The update will make the features you already use easier to find, as well as unveil some exciting additions.

Navigation reflects how search works

We’ve organized the Webmaster Tools features in groups that match the stages of search:
  • Crawl: see information about how we discover and crawl your content. Here you will find crawl stats, crawl errors, any URLs you’ve blocked from crawling, Sitemaps, URL parameters, and the Fetch as Google feature.
  • Google Index: keep track of how many of your pages are in Google’s index and how we understand their content: you can monitor the overall indexed counts for your site (Index Status), see what keywords we’ve found on your pages (Content Keywords), or request to remove URLs from the search results.
  • Search Traffic: check how your pages are doing in the search results — how people find your site (Search Queries), who’s recommended your site (Links to Your Site), and see a sample of pages from your site that have incoming links from other internal pages.
  • Search Appearance: mark up your pages to help Google understand your content better during indexing and potentially influence how your pages appear in our search results. This includes the Structured Data dashboard, Data Highlighter, Sitelinks, and HTML Improvements.

Account-level administrative tasks now accessible from the Settings menu

Account-level admin tasks such as setting User permissions, Site Settings, and Change of Address are now grouped under the gear icon in the top right corner so they’re always accessible to you:

This is the list of items as visible to site owners, “full” or “restricted” users will see a subset of these options. For example, if you're a “restricted” user for a site, the "Users & Site Owners" menu item will not appear.

New Search Appearance pop-up

Beginner webmasters will appreciate the new Search Appearance pop-up, which can be used to visualize how your site may appear in search and learn more about the content or structure changes that may help to influence each element:

To access the pop-up window, click on the question mark icon next to the Search Appearance menu in the side navigation.

It includes the essential search result elements like title, snippet and URL, as well as optional elements such as sitelinks, breadcrumbs, search within a site, event and product rich snippets, and authorship information.

We hope the new navigation makes it easier for you to make the most of Webmaster Tools. As always, if you have additional questions, feel free to post in the Webmaster Help Forum.

Posted by , Webmaster Trends Analyst

[Gd] Google App Engine takes the pain out of sending iOS push notifications

| More

Cloud Platform Blog: Google App Engine takes the pain out of sending iOS push notifications

Delivering scalable, reliable mobile push notifications when hundreds of thousands of users have installed your app on their phones can be a major headache. Fortunately, Google App Engine’s support for sockets and accessible but powerful queues makes it easy to quickly build a mobile backend that can reliably scale to huge numbers of devices.

Get the code!

We’ve created a simple push notification application to help you get started in our Github repository that uses all of the techniques described below. Download or fork the source code to get started.

Push notifications are the little pings your phone gives you to let you know that you’ve got a new message, your friend is waiting for you to take your turn on the latest game or that band you like has just announced a concert in your town. As a developer, push notifications give you a new dimension to engage with your users in real time, any time, regardless as whether they have your app open or even if they have their phone in their hand.

On iOS devices, like iPhones and iPads, push notifications are handled by Apple’s Push Notification Service (APNS). APNS is hosted by Apple, and acts as a bridge between your server and your mobile clients. In brief, here’s how it works:

  • Your mobile application securely registers itself with Apple to be able to receive push notifications, usually when the app is being launched the first time. It receives a device token, which the mobile application passes to your mobile backend.

  • Your server opens a secure connection to APNS, and when an event occurs that requires a push notification - your server sends a short message including the device token of the device that should receive the message to APNS. APNS will then handle the ‘last-mile delivery’ of the notification to the device.

Although this seems relatively trivial, there are a few important things to consider when implementing push notifications in your application.

Connection pooling with backend instances and pull queues

If you have a popular application you can quickly end up generating a large number of push notifications - even after a single event.

For both performance reasons, and should avoid opening a large number of secure connections to APNS, but rather simply hold a few connections open and funnel any push notifications your applications generate through those. This approach is commonly called Connection Pooling.

Fortunately, App Engine provides the building blocks for scalable connection pooling. Resident backend instances are long running App Engine containers that can be used to as workers to hold open APNS notifications for sending notifications. These workers can then monitor a pull queue that can signal to the workers when a notification should be sent. When an event occurs in another component of your application that should trigger a push notification (say an action triggered by your mobile API in a frontend instance), other components of your application can simply enqueue a task on the pull queue.

Each worker can then periodically read from a pull queue to see if any notifications need to be sent by the application, and if there are, lease a block of them, send them via the previously established APNS connection, and delete them.

As well as saving on opening many connections to APNS, this approach also improves the reliability of the app. If a worker is unable to deliver a message to APNS for some reason (e.g., because the TCP connection was severed), App Engine’s pull queues will release the lease on the task and allow another worker to retry it. You can also scale the solution simply by adding additional workers that read off the same pull queue.

Sending bulk notifications with push queues and cursors

You may find a need to send a push notification to a large number of devices at once. This requires a query to your database/datastore to find the list of relevant device tokens and then enqueuing a request onto the pull queue described above that includes the message you want to send along with the relevant device token.

If you were to attempt this in a single request, you could quickly run into problems as your list of device IDs becomes large. A simple but elegant solution is to use push queues and (if you’re storing device IDs in the App Engine datastore) query cursors.

A query cursor is a token that can be used to iterate over a given a given query result set in small batches. A query cursor is an opaque string marking the index position of the last result retrieved. The application can then use the cursor as the starting point for a subsequent retrieval operation, to obtain the next batch of results from the point where the previous retrieval ended

Query cursors can be combined with App Engine push queues. A push queue handler is written to take a query and an optional cursor. The push queue handler then executes the query with a small result limit (say 100 entities), and for each result adds a task to the pull queue described above. If the result of the query also includes a cursor then this indicates there are still unretrieved entities in the query. Once the task handler has cycled through the results it has retrieved, if it has a new cursor, then it can initiate a new push task with that cursor’s value.

Connecting to APNS

While you can use App Engine’s outbound sockets support to talk to APNS from Java or Python directly, popular 3rd party libraries such as JavaPNS also work well, and often provide a cleaner higher level interface for sending notifications.

Putting it all together

Although this sounds like a lot, putting all of this together on App Engine is remarkably straightforward, requiring only a simple batch query queue handler and notification worker. Everything else is taken care of by App Engine’s robust queueing and datatore APIs.

If you’re feeling ready to add Push Notifications to your app, we’ve got some great resources to help you get started.

- Posted by Grzegorz Gogolowicz, Solutions Architect

Sunday, June 30, 2013

[Gd] Fridaygram: Street View in the sky, robot carp, restored shuttlecraft

| More

Google Developers Blog: Fridaygram: Street View in the sky, robot carp, restored shuttlecraft

Author Photo
By +Scott Knaster, Google Developers Blog Editor

This week we launched Street View images showing what it’s like inside (and outside) the Burj Khalifa in Dubai. We love taking Street View places it’s never been, and now we’ve added two firsts: the first collection in the Arab World, and the first one to feature a skyscraper.

As if it’s not enough to visit the 163rd floor of the world’s tallest building, or ride an elevator traveling at 22 mph, we thought it would be fun to send our Street View camera outside the 73rd floor in a maintenance unit for a breathtaking view of the surrounding cityscape. So don’t miss that view, as long as you’re OK with heights.

We go from high above the Earth to under the sea for news of the world’s first robot carp. A team of scientists in Singapore studied these freshwater fish and designed an autonomous underwater exploration vehicle. They plan to use this robofish to study tight spaces in underwater places, such as pipelines or the lost city of Atlantis. The researchers used cameras to record carp doing their thing, then created a mathematical model of carp movements to trigger actuators in their robot.

Finally, let’s journey beyond even the Burj Khalifa, out into (pretend) space, where the Galileo Shuttlecraft served Captain Kirk and the crew of the U. S. S. Enterprise in the original Star Trek universe. This prop was originally considered too expensive for the production company to build, so Federation personnel had to make their way to and from planets by transporter instead. But the craft was eventually built and appeared midway through the first season, in 1967 (or stardate 2821.5, if you prefer). In the years since then, the ship has deteriorated. But now Star Trek fans and a shipwright are restoring the Galileo to its original glory, to be enjoyed by fans everywhere. Magnifico!

Whether on the surface of the Earth, way down below the ocean, or in space, Fridaygram is always your ticket to fun nerdy stuff. Speaking of space (and Star Trek), it looks like Voyager 1 has still not left the solar system, although it has entered a previously unknown area, far out there. This weekend, go and explore something new on your own!

[Gd] More innovation from African developers

| More

Google Developers Blog: More innovation from African developers

Author PhotoBy Chukwuemeka Afigbo, Outreach Program Manager, Sub-Saharan Africa

Cross-posted from the Google Africa Blog

Developers play a crucial role in making the Internet relevant for Africans. This is why fostering a vibrant African developer ecosystem is very important to Google. Developers and tech entrepreneurs from across the continent joined thousands of their peers from all over the world to explore the latest tech innovations at Google I/O 2013 in San Francisco. Several of them were members of the Google Developer Groups in countries such as Algeria, Burkina Faso, Egypt, Kenya, Republic of Congo, Togo and Uganda.

Hassan Nsubuga, Lead for GDG Mbale,Uganda with Google SVP Vic Gundotra at Google I/O

Luckily, participation was not limited to those who could make it to San Francisco’s Moscone Center. Developers back home were also able to get in on the action with more than 67 I/O Extended parties hosted by Google Developer Groups and Google Student Ambassadors across the continent where talks were streamed live to an excited audience.

Away from the excitement of I/O ‘13, it has been a busy year for many African developers and tech startups. We added six new apps to our African case studies page:

  • Maji Dashboards and Virtual Kenya from Upande: websites that utilize the power of Google’s Geo tools to make information about Kenya readily accessible for better decision making, development planning, and education.
  • ReadyCash from Parkway Projects: a home grown mobile money service from Nigeria with an app that leverages the power of the Android platform to integrate a unique QR code based payment system.
  • Matatu is an Android version of a local card game from Uganda.
  • ASiM, developed by Olivine Technology, is a real time inventory management solution with an Android client and App Engine backend.
  • Asa: an Android tablet app by Nigeria’s Genii Games that brings the magic of African folktales to children of all ages.
Asa (African Folktales)


Remember AfriNolly – winner of 2011 Android developer competition? The app by Fans Connect Online now has over 2 million downloads across several platforms, with a new Android version support for 11 languages launched in May 2013. The Fans Connect Online team also ran a contest for African short films and created a radio show focused on the African film industry.

Keep an eye on our case studies page to follow the exploits of these and many more developers in Africa, as they continue to innovate with Google APIs and platforms.

Do you feel your app should be featured here? Let us know!

+Chukwuemeka Afigbo is a Program Manager in the Sub-Saharan Africa Outreach Team. He is passionate about making the internet more relevant to Africans. He is also an avid football (soccer) fan.

Posted by +Scott Knaster, Editor