Saturday, April 30, 2011

[Gd] Discover v201101 - Advanced geo-targeting using Location of Presence or Area of Interest

| More

AdWords API Blog: Discover v201101 - Advanced geo-targeting using Location of Presence or Area of Interest

AdWords allows you to target your users based on their Location of Presence (LOP) or Area of Interest (AOI). This feature is now available to developers through AdWords API v201101 and this blog post discusses how to use this new AdWords API feature.

This blog post assumes that are familiar with how to set geographic targets on your campaign. If not, you can learn more here. For a refresher on where regionally targeted ads appear, you can refer to the AdWords Help Center article here.

Introduction

To understand how LOP or AOI based geo-targeting works, consider the following example:

You own a flower shop in New York. You run a campaign that targets New York, and one of your keywords is “flowers”. The following table shows how Google serves ads if you use LOP and AOI settings.

Target Method User Location (LOP) User Query User’s Area of Interest (AOI) User sees Ad
LOP only New York flowers  
California flowers in New York New York
AOI only New York flowers  
California flowers in New York New York
LOP and AOI New York flowers  
California flowers in New York New York

You can get or set LOP and AOI based geo-targeting through the settings field of your campaign using the GeoTargetTypeSetting class. The following C# code snippet shows how to set AOI based geo-targeting for your campaign.

long campaignId = long.Parse(_T("INSERT_CAMPAIGN_ID_HERE"));

// Create campaign with updated budget.
Campaign campaign = new Campaign();
campaign.id = campaignId;

// Set GeoTargetType.
GeoTargetTypeSetting geoSetting = new GeoTargetTypeSetting();
geoSetting.positiveGeoTargetType =
GeoTargetTypeSettingPositiveGeoTargetType.AREA_OF_INTEREST;
campaign.settings = new Setting[] {geoSetting};

// Create operation.
CampaignOperation operation = new CampaignOperation();
operation.@operator = Operator.SET;
operation.operand = campaign;

// Update campaign.
CampaignReturnValue retVal = campaignService.mutate((new CampaignOperation[] {operation}));


GeoTargetTypeSetting can also be used to geo-target negatively. You can do negative geo-targeting based on LOP alone, or both LOP and AOI. To understand how negative GeoTargetTypeSetting works, consider the following modified version of the previous example:

You run a campaign that targets all of the US, but excludes New York, and one of your keywords is “flowers”. The following table shows how Google serves ads based on your settings.

Target Method User Location (LOP) User Query User’s Area of Interest (AOI) User sees Ad
LOP only New York flowers  
California flowers in New York New York
Texas flowers  
LOP and AOI New York flowers  
California flowers in New York New York
Texas flowers  

The following code snippet shows how to apply negative GeoTargetTypeSetting based on LOP:

// Set GeoTargetType.
GeoTargetTypeSetting geoSetting = new GeoTargetTypeSetting();
geoSetting.negativeGeoTargetType =
GeoTargetTypeSettingNegativeGeoTargetType.LOCATION_OF_PRESENCE;
campaign.settings = new Setting[] {geoSetting};


A few points worth noting about GeoTargetTypeSetting:

  • This setting applies only to ads targeting the Google Search Network, and does not affect ads targeting the Google Display Network.
  • This setting applies only within a country where we determine the user is physically located based on their device location (such as an IP address). For example, if you have targeted New York for your ads, then the ad would not show for a user in London searching for flowers in New York.
  • Even if you have a negative LOP based targeting for a certain area, your campaign's geographic reports may still show impressions from your excluded area. This is because we report a physical location for users whose search didn't include a location of interest, and we generally report the user's location of search intent if their search includes one.

We have added support for LOP and AOI based geotargetting in all of our client libraries, so please take advantage of this new feature and share your feedback with us on the forum.

  --Anash P. Oommen, AdWords API Team

URL: http://adwordsapi.blogspot.com/2011/04/discover-v201101-advanced-geo-targeting.html

Friday, April 29, 2011

[Gd] Automate Event Management using Apps Script

| More

Google Apps Developer Blog: Automate Event Management using Apps Script

Editor's Note: Guest author Phil Ridout is an independent consultant specialising in Knowledge Management. He is a facilitator for the Knowledge and Innovation Network (KIN) a business to business knowledge sharing network.

Last year the network I help to run, KIN, decided to start using Google Sites for their shared online space called MemberSpace. This ‘MemberSpace’ is used as a repository for shared documents and information about various KIN events. I soon realised that using Google Apps Script would significantly enhance the event management process.

The network facilitators organise about 30-40 events a year. For each event we need to :
  • Create an Events page in the MemberSpace Google Site (in a standardised format)
  • Create a Calender Event in the Network Events Calendar maintained by facilitators
  • Announce the event on the MemberSpace news (announcements) page
  • Allow delegate self-registration
  • Send attendees a customized email confirmation when they register
  • Send joining instructions emails to all attendees immediately prior to the event
By using Google Apps Script, we have been able to automate all of the above tasks and make event management a lot simpler.

The Solution

To accomplish this automation, we have created an event management spreadsheet template with an accompanying form and script. Whenever an event is organised, the event facilitator copies the event management template and fills in standard data about the event in one of the sheets.



Then all the facilitator has to do is select the appropriate menu items to accomplish the tasks listed above. (This spreadsheet is only seen by the Facilitators. The event attendees only see the event registration form.)


So what’s in the script behind this?

Before I started this project, I had never used Javascript. I used various tutorials on Apps Script documentation site to learn about Apps Script and discovered that a good starting point was the Simple Mail Merge Google Apps Script tutorial. The workflow of managing an event was relatively simple but required integration with various services such as Mail, Calendar, Contacts, Forms and Sites. Below is a description of how we used Apps Script to automate these tasks.

1. Event Registration Email

Whenever an attendee registers for an event, we need to send a customised confirmation email. This script is based on the Simple Mail Merge Google Apps Script tutorial code and we use an onFormSubmit trigger to automatically run the script to email registration confirmation to delegates when they submit a registration form. Mail Services in Apps Script are used to send these emails.

2. Event Page in Sites

The ‘Create Event Page’ script is invoked by the facilitator to create an event page (using Apps Script Sites Services) in the MemberSpace using one of three page templates depending on the event type. Should any event details change, this script can be run again to delete the original page and create a new one with the amended details.

3. Calendar entry in Events Calendar

Once the event page has been created, the organiser creates an entry in the calendar by running the ‘Create Calendar Entry’ script which generates a calendar entry containing a link to the previously created event page in the MemberSpace. This script uses Apps Script Calendar Services.

4. Email confirmation / joining instructions

A week or so before the event takes place, joining instructions are sent to delegates using a menu option from the original spreadsheet. This runs a slightly modified version of the email script used in step 1.

5. Event Announcement in Sites

Finally, the organiser can ‘announce’ the event by running the ‘Announce Event’ script which places an announcement in the MemberSpace News page. (Actually, there are three ‘Special Interest Group’ News pages and one ‘General’ News page which are merged - by a time trigger driven script - into a single announcements stream that can subscribed to using a Site Services script the basis of which can be found here.)

Performing the above tasks manually may seem simple or trivial but it can be time consuming and error prone. By using Apps Script, we have implemented event management functionality that allows us to manage events in a standardised way.

Posted by Phil Ridout, independent consultant

Want to weigh in on this topic? Discuss on Buzz

URL: http://googleappsdeveloper.blogspot.com/2011/04/automate-event-management-using-apps.html

[Gd] Fridaygram

| More

The official Google Code blog: Fridaygram


By Scott Knaster, Google Code Blog Editor

The final launch of Space Shuttle Endeavour is now scheduled for early next week. This will be the next-to-last mission planned for the US Space Shuttle program. As a young nerd, I loved to watch the progress of the space program. Almost as amazing as the missions themselves was the fact that I could see it all live on television, even from hundreds of thousands of miles away.

Endeavour is going to do much better than that. You can go to www.youtube.com/pbsnewshour and submit video questions for the crew of Endeavour. The crew will select some of the questions and answer them live on YouTube. For more details, see the Official Google Blog.

Much closer to home, and completely unrelated, Google Chrome got a pretty slick new feature in the stable release this week. You can now use voice input with Google Translate in Chrome. In many languages, you can even click Listen to hear the translation. This feature uses the HTML speech input API. Now I can practice those languages I never quite mastered on my last vacation.



For more on what you can develop with HTML5 and other open web technologies, see the Chrome Experiments site.

Finally, if you want to know why this Space Shuttle mission includes squids, read this page.
URL: http://googlecode.blogspot.com/2011/04/fridaygram_29.html

[Gd] Chime in on #io2011 and check out After Hours

| More

The official Google Code blog: Chime in on #io2011 and check out After Hours

Merci
Monica
By Merci Niebres and Monica Tran, Google I/O Team

A few weeks ago, we announced I/O Live and invited you to display our HTML5 badge on your blog or website. Starting today, your I/O Live badge links to our new Google Earth mashup that lets you see what developers from all over the world are saying on the #io2011 hashtag.


In other news, the theme for this year’s Google I/O After Hours party is “Infinite Playground.” Starting at 6:30 P.M. on May 10, join us for a celebration of technical and artistic innovation with futuristic robots, transforming vehicles, and games from the visionaries at Gadgetoff, Maker Faire, MIT, Georgia Tech Center, iRobot, Madagascar Institute and others.

What's a party without killer tunes? This year, we are pleased to present a live performance from Jane’s Addiction. The legendary band, including Perry Farrell, Stephen Perkins, and Dave Navarro, will be headlining the party with a 45-minute set of their classics and a sneak peek at their upcoming album, The Great Escape Artist, which will be released in August. The line-up will be completed with San Francisco’s very own DJs Mark Farina and Miguel Migs with music visuals brought to you by Sexyvisuals.

In yesterday's post we revealed I/O schedule details that include which sessions will be livestreamed along with the keynotes. We will also be livestreaming the concert on I/O Live from 7:30 - 9:30 P.M. PDT on May 10. Bookmark www.google.com/io -- and check back on May 10. You won’t want to miss the finale to our countdown.




Merci Niebres is a Marketing Events Manager in Google's San Francisco office, focusing on developer outreach programs and consumer product launches. In her spare time, she obsesses over her collection of cameras and forces her friends and dog to model for her.

In the past four years, Monica Tran has been around the world, working as a Product Marketing Manager in Mountain View, London, and Tokyo. Monica is entirely too busy working on Google I/O to spend time writing her bio right now.
URL: http://googlecode.blogspot.com/2011/04/chime-in-on-io2011-and-check-out-after.html

[Gd] Google I/O session schedule revealed

| More

The official Google Code blog: Google I/O session schedule revealed

By Amy Walgenbach of the Google I/O Team

The complete schedule for I/O is now available, so if you’re attending Google I/O on May 10-11, you can now start planning two days packed with sessions and events. The schedule for I/O BootCamp is also up for your convenience.

The in-depth descriptions of I/O sessions, complete with speakers for each, are available on the Sessions page of the I/O site. With so many great sessions to choose from, we wanted to highlight two special sessions that will take place at the close of Day 1.

Ignite. Fast-paced, fun, and thought-provoking, Ignite captures the best of geek culture in a series of five-minute speed presentations. It's a high-energy session of short talks by people who have an idea—and the guts to get onstage and share it. This year we will learn about the Brain API, the similarities of Disneyland and Burning Man, and a dissection of the Tiger Mom myth.

Google Ventures Meetup. Google Ventures will be holding an experiment in controlled chaos. This event will bring attendees together with members of the Google Ventures core team (investors and experienced startup veterans), and select portfolio companies ranging from small, new teams to later-stage, successful companies. The room will be arranged to enable attendees to speak to panels of "experts" in bite-sized, three-minute 1:1 conversations, otherwise known as VC speed dating. Our goal is to connect both practicing and soon-to-be entrepreneurs with experts who can impart advice, lessons learned, and quick tips.

We’ve also posted our Office Hours schedule. Google engineers will be on hand to answer any questions you have about the products and technologies featured at I/O. We’ll be holding office hours for Accessibility, Android, Apps, App Engine, Chrome, Commerce, Developer Tools/GWT, Geo, Google APIs, Google TV, Google Mobile Ads/AdMob, and YouTube.

Be sure to check @googleio for the latest updates.


Posted by Scott Knaster, Editor
URL: http://googlecode.blogspot.com/2011/04/google-io-session-schedule-revealed.html

[Gd] Merchant Sales Reports on Android Market

| More

Android Developers Blog: Merchant Sales Reports on Android Market

[This post is by Eric Chu, Android Developer Ecosystem. —Dirk Dougherty]

As part of our ongoing efforts to provide better tools to help you manage your business, we are introducing merchant sales reporting on Android Market. Developers now have convenient access to monthly reports that detail the financial performance of their applications directly from the Android Market Developer Console.

Based on Google Checkout financial data, these reports provide per-transaction details including additional information such as device information, currency of sale, and currency conversion rate. Developers will be able to easily download these reports as a CSV (comma-separated values) files to enable further analysis at their convenience.

Starting today, developers can download merchant sales reports for March 2011 from the Developer Console. Reports for months going back to January 2010 will be available in the coming weeks. Moving forward, sales reports for each month will be available by the 10th day of the following month.

We hope you’ll find these new sales reports useful. As always, please don’t hesitate to give us feedback through Market Help Center.

URL: http://android-developers.blogspot.com/2011/04/merchant-sales-reports-on-android.html

[Gd] Who's at Google I/O: Simperium

| More

Google App Engine Blog: Who's at Google I/O: Simperium

This is a guest post by Mike Johnston and Fred Cheng, co-founders, Simperium. This post is part of Who's at Google I/O, a series of guest blog posts written by developers who are appearing in the Developer Sandbox at Google I/O. It's also cross-posted to the Google Code blog which will have similar posts for all sorts of Google developer products.



We originally created Simplenote both as a learning exercise and to address what we thought were shortcomings in the original Notes app for the iPhone (Marker Felt font, no ability to search, etc.) The very first version of Simplenote didn't even have syncing!



We've certainly come a long way since then. The Simplenote backend now synchronizes data across devices, the web, and third-party apps while also handling in-app purchases, sharing, and basic metrics. About a year ago, we were accepted to the Y Combinator startup accelerator with something like 20,000 users. Today, with hundreds of thousands of users, we're currently serving 15 million requests daily and providing access to over 500 gigabytes (!) worth of text notes.






Google App Engine is at the heart of it. We made a decision early on to use App Engine so we wouldn't have to worry about scaling, or deploying more servers, or systems administration of any kind. Being able to instantly deploy new versions of code has allowed us to iterate quickly based on feedback we get from our users, and easily test new features in our web app, like the newly added Markdown support.



We consider our syncing capabilities to be core features of Simplenote. They are, in and of themselves, largely responsible for attracting and retaining many of our users. Our goal is to give other developers access to great syncing, too. The next version of our backend is named after our company, Simperium. As a general-purpose, realtime syncing platform intended for third-party use, Simperium's architecture is much more expansive than the Simplenote backend. Yet App Engine still plays a key role. It powers the Simplenote API that is used by dozens of great third-party apps like Notational Velocity. And it continues to power auxiliary systems, like processing payments with Stripe, while bridging effectively with externally hosted systems, like our solution for storing notes as files in the wonderful Dropbox.



We suspected we might outgrow App Engine, but we haven't. Instead, our use of it has evolved along with our needs. Code we wrote for App Engine a year ago continues to hum along today, providing important functionality even as new systems spring up around it.



In fact, we still come up with entirely new ways to use App Engine as well. Just last week we launched an internal system that uses APIs from Twitter, Amazon Web Services, Assistly, and HipChat to pump important business data into our private chat rooms. This was a breeze to write and deploy using App Engine. Such is the mark of a versatile and trustworthy tool: it's the first thing you reach for in your tool belt.




Come see Simperium in the Developer Sandbox at Google I/O on May 10-11.



Mike Johnston was a senior designer and programmer at Irrational Games where he worked on numerous games and prototypes for PC and Xbox 360. Before that he built security software at Entrust.



Fred Cheng hails from Cantaloupe Systems, a venture-backed startup, where he built their infrastructure for wirelessly tracking tens of thousands of vending machines.



Posted by Scott Knaster, Editor

URL: http://googleappengine.blogspot.com/2011/04/whos-at-google-io-simperium.html

Thursday, April 28, 2011

[Gd] Dev Channel Update

| More

Google Chrome Releases: Dev Channel Update

The Chrome Dev channel has been updated to 12.0.742.12 for all platforms.  This release continues to address UI and performance issues, as well as updates the Sync preferences UI. The full list of changes is available from the SVN revision log. If you find new issues, please let us know by filing a bug. Want to change to another Chrome release channel? Find out how.

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

[Gd] Beta and Stable Channel Update

| More

Google Chrome Releases: Beta and Stable Channel Update

The Beta and Stable channels have been updated to 11.0.696.60 for the Windows platform

The following bug was fixed:
  • REGRESSION: Windows painting issue while switching Chrome 11 window with overlapped app. (Issue 74604).
If you find new issues, please let us know by filing a bug.

Want to change to another Chrome release channel? Find out how.

Karen Grunberg
Google Chrome
URL: http://googlechromereleases.blogspot.com/2011/04/beta-and-stable-channel-update.html

[Gd] Chrome Stable Update

| More

Google Chrome Releases: Chrome Stable Update


The Google Chrome team is happy to announce the arrival of Chrome 11.0.696.57 to the Stable Channel for Windows, Mac, Linux, and Chrome Frame.  Chrome 11 contains some really great improvements including speech input through HTML.

Security fixes and rewards:
Please see the Chromium security page for more detail. Note that the referenced bugs may be kept private until a majority of our users are up to date with the fix.

We’re pleased to associate a record $16,500 of rewards with this patch.

  • [61502] High CVE-2011-1303: Stale pointer in floating object handling. Credit to Scott Hess of the Chromium development community and Martin Barbella.
  • [70538] Low CVE-2011-1304: Pop-up block bypass via plug-ins. Credit to Chamal De Silva.
  • [Linux / Mac only] [70589] Medium CVE-2011-1305: Linked-list race in database handling. Credit to Kostya Serebryany of the Chromium development community.
  • [$500] [71586] Medium CVE-2011-1434: Lack of thread safety in MIME handling. Credit to Aki Helin.
  • [72523] Medium CVE-2011-1435: Bad extension with ‘tabs’ permission can capture local files. Credit to Cole Snodgrass.
  • [Linux only] [72910] Low CVE-2011-1436: Possible browser crash due to bad interaction with X. Credit to miaubiz.
  • [$1000] [73526] High CVE-2011-1437: Integer overflows in float rendering. Credit to miaubiz.
  • [$1000] [74653] High CVE-2011-1438: Same origin policy violation with blobs. Credit to kuzzcc.
  • [Linux only] [74763] High CVE-2011-1439: Prevent interference between renderer processes. Credit to Julien Tinnes of the Google Security Team.
  • [$1000] [75186] High CVE-2011-1440: Use-after-free with <ruby> tag and CSS. Credit to Jose A. Vazquez.
  • [$500] [75347] High CVE-2011-1441: Bad cast with floating select lists. Credit to Michael Griffiths.
  • [$1000] [75801] High CVE-2011-1442: Corrupt node trees with mutation events. Credit to Sergey Glazunov and wushi of team 509.
  • [$1000] [76001] High CVE-2011-1443: Stale pointers in layering code. Credit to Martin Barbella.
  • [$500] [Linux only] [76542] High CVE-2011-1444: Race condition in sandbox launcher. Credit to Dan Rosenberg.
  • [76646] Medium CVE-2011-1445: Out-of-bounds read in SVG. Credit to wushi of team509.
  • [$3000] [76666] [77507] [78031] High CVE-2011-1446: Possible URL bar spoofs with navigation errors and interrupted loads. Credit to kuzzcc.
  • [$1000] [76966] High CVE-2011-1447: Stale pointer in drop-down list handling. Credit to miaubiz.
  • [$1000] [77130] High CVE-2011-1448: Stale pointer in height calculations. Credit to wushi of team509.
  • [$1000] [77346] High CVE-2011-1449: Use-after-free in WebSockets. Credit to Marek Majkowski.
  • [77349] Low CVE-2011-1450: Dangling pointers in file dialogs. Credit to kuzzcc.
  • [$2000] [77463] High CVE-2011-1451: Dangling pointers in DOM id map. Credit to Sergey Glazunov.
  • [$500] [77786] Medium CVE-2011-1452: URL bar spoof with redirect and manual reload. Credit to Jordi Chancel.
  • [$1500] [79199] High CVE-2011-1454: Use-after-free in DOM id handling. Credit to Sergey Glazunov.
  • [79361] Medium CVE-2011-1455: Out-of-bounds read with multipart-encoded PDF. Credit to Eric Roman of the Chromium development community.
  • [79364] High CVE-2011-1456: Stale pointers with PDF forms. Credit to Eric Roman of the Chromium development community.
We would also like to thank miaubiz, kuzzcc, Sławomir Błażek, Drew Yao and Braden Thomas of Apple Product Security and Christian Holler for working with us during the development cycle and helping prevent bugs from ever reaching the stable channel.

More on what's new at the Official Chrome Blog.  You can find full details about the changes that are in Chrome 11 in the SVN revision log. If you find new issues, please let us know by filing a bug. Want to change to another Chrome release channel? Find out how.

Karen Grunberg
Google Chrome

URL: http://googlechromereleases.blogspot.com/2011/04/chrome-stable-update.html

[Gd] Beta Channel Update

| More

Google Chrome Releases: Beta Channel Update

The Beta channel has been updated to 11.0.696.57 for Macintosh, Windows, Linux and Chrome Frame platforms

The following bugs were fixed
  • REGRESSION: left property broken with position:fixed elements in RTL documents. (Issue 80216).
  • REGRESSION: Bottom of window Border is drawn 1 Pixel Higher than it should be (Issue 79640).
  • REGRESSION: Chromium window goes beyond the screen for non-Aero themes (Issue 80391).

You can find full details about the changes that are in this version of Chrome 11 in the SVN revision log.

If you find new issues, please let us know by filing a bug.

Want to change to another Chrome release channel? Find out how.

Karen Grunberg
Google Chrome
URL: http://googlechromereleases.blogspot.com/2011/04/beta-channel-update_9726.html

[Gd] Beta Channel Update

| More

Google Chrome Releases: Beta Channel Update

The Beta channel has been updated to 11.0.696.50 for Macintosh, Windows, Linux and Chrome Frame platforms

The following bugs were fixed
  • Flash does not load until the tab gets activated. (Issue 71591).
  • Going to settings from notification popup crashes Chrome (Issue 78938).
  • Disable speech input for readonly and disabled input fields (Issue 58540).

You can find full details about the changes that are in this version of Chrome 11 in the SVN revision log.

If you find new issues, please let us know by filing a bug.

Want to change to another Chrome release channel? Find out how.

Karen Grunberg
Google Chrome
URL: http://googlechromereleases.blogspot.com/2011/04/beta-channel-update_26.html

[Gd] Simperium’s use of Google App Engine for Simplenote

| More

The official Google Code blog: Simperium’s use of Google App Engine for Simplenote

Mike
Fred
By Mike Johnston and Fred Cheng, co-founders, Simperium

This post is part of Who's at Google I/O, a series of guest blog posts written by developers who are appearing in the Developer Sandbox at Google I/O.


We originally created Simplenote both as a learning exercise and to address what we thought were shortcomings in the original Notes app for the iPhone (Marker Felt font, no ability to search, etc.) The very first version of Simplenote didn't even have syncing!

We've certainly come a long way since then. The Simplenote backend now synchronizes data across devices, the web, and third-party apps while also handling in-app purchases, sharing, and basic metrics. About a year ago, we were accepted to the Y Combinator startup accelerator with something like 20,000 users. Today, with hundreds of thousands of users, we're currently serving 15 million requests daily and providing access to over 500 gigabytes (!) worth of text notes.


Google App Engine is at the heart of it. We made a decision early on to use App Engine so we wouldn't have to worry about scaling, or deploying more servers, or systems administration of any kind. Being able to instantly deploy new versions of code has allowed us to iterate quickly based on feedback we get from our users, and easily test new features in our web app, like the newly added Markdown support.

We consider our syncing capabilities to be core features of Simplenote. They are, in and of themselves, largely responsible for attracting and retaining many of our users. Our goal is to give other developers access to great syncing, too. The next version of our backend is named after our company, Simperium. As a general-purpose, realtime syncing platform intended for third-party use, Simperium's architecture is much more expansive than the Simplenote backend. Yet App Engine still plays a key role. It powers the Simplenote API that is used by dozens of great third-party apps like Notational Velocity. And it continues to power auxiliary systems, like processing payments with Stripe, while bridging effectively with externally hosted systems, like our solution for storing notes as files in the wonderful Dropbox.

We suspected we might outgrow App Engine, but we haven't. Instead, our use of it has evolved along with our needs. Code we wrote for App Engine a year ago continues to hum along today, providing important functionality even as new systems spring up around it.

In fact, we still come up with entirely new ways to use App Engine as well. Just last week we launched an internal system that uses APIs from Twitter, Amazon Web Services, Assistly, and HipChat to pump important business data into our private chat rooms. This was a breeze to write and deploy using App Engine. Such is the mark of a versatile and trustworthy tool: it's the first thing you reach for in your tool belt.


Come see Simperium in the Developer Sandbox at Google I/O on May 10-11.

Mike Johnston was a senior designer and programmer at Irrational Games where he worked on numerous games and prototypes for PC and Xbox 360. Before that he built security software at Entrust.

Fred Cheng hails from Cantaloupe Systems, a venture-backed startup, where he built their infrastructure for wirelessly tracking tens of thousands of vending machines.

Posted by Scott Knaster, Editor
URL: http://googlecode.blogspot.com/2011/04/simperiums-use-of-google-app-engine-for.html

[Gd] ShortForm: mix and share the world's videos

| More

The official Google Code blog: ShortForm: mix and share the world's videos

By Jereme Monteau, Lead Developer at ShortForm

This post is part of Who's at Google I/O, a series of guest blog posts written by developers who are appearing in the Developer Sandbox at Google I/O.


ShortForm is a new entertainment medium where you find continuous channels of the best videos, curated by a growing community of VJs. At ShortForm you can be a viewer, a VJ, or both. Viewers subscribe to channels of interest, lean back, and enjoy a continuous stream of videos.


The developers at ShortForm worked with various YouTube Data APIs in order to deliver both the Viewer and VJ experience.

Standard feeds and user playlists. ShortForm makes it easy and fun for anyone to VJ a channel. We also auto-curate a select set of channels to surface mainstream content that would appeal to most audiences. For example, our YouTube Hits channel includes content from the standard YouTube video feeds such as Top Rated, Most Viewed and Most Popular. ShortForm developed a system for retrieving video entries and their associated metadata, and then ordering them in playlists based on a ranking algorithm.

Favorites and uploads. ShortForm allows VJs to import their YouTube favorites and uploads into their channels quickly and easily by authenticating via YouTube’s OAuth provider. Once a user has connected their ShortForm account to their YouTube account, we are able to allow them to import their favorites and uploads through an authenticated call to the YouTube Data API. In the future we will streamline the process of uploading videos to YouTube by allowing VJs to upload videos to YouTube directly from ShortForm while adding those videos to their ShortForm channel in the same flow.


Player API. Providing a seamless channel viewing experience on ShortForm requires that we integrate tightly with YouTube’s JavaScript API to the ActionScript 3 player. This allows us to properly handle video events to ensure continuous playback. Users have full control over their viewing experience using the next and previous video buttons, which load videos into the YouTube player. We have also begun integrating with the new iframe embed style that is currently in beta and have seen promising results in our initial tests across desktop and mobile platforms.

Android tablet. Tablet computing represents an exciting opportunity for ShortForm to provide a first-class viewing experience in a new package. We have begun testing and looking for places to optimize the viewing experience on tablet devices.

ShortForm widget. Our embeddable widget syntax was inspired by YouTube’s new iframe embed syntax. We believe this is the simplest, most flexible and most powerful way to allow our users to embed their channels anywhere on the web.

We are thrilled to be a part of Google I/O and in order to demonstrate the power of ShortForm, we are putting together a Google I/O Sandbox channel, a continuous channel of product pitches and demos from companies represented in the I/O Developer Sandbox. We invite all Sandbox companies to submit a video of their product pitch or demo. Details can be found at the ShortForm at Google I/O page. We'll use the channel to preview cool companies in the Sandbox before the conference. The channel will also provide media members with a summary of all the technology from all Sandbox companies.

Lastly, we are going to have a little fun and invite all attendees to vote on their favorite pitches and demos. Submit your video on the ShortForm at Google I/O page. We’ll surface a leaderboard showing videos with the top votes, and the winning entry will be highlighted in a press release and will get prime placement on ShortForm’s homepage for one week, reaching hundreds of thousands of people.


Come see ShortForm in the Developer Sandbox at Google I/O on May 10-11.

As a founding member of ShortForm, Jereme has been hacking around with the YouTube APIs for over a year now and has been building software for 15 years. When he’s not coding he’s probably trail running or roasting his own coffee while eagerly anticipating the arrival of his first child in June.

Posted by Scott Knaster, Editor
URL: http://googlecode.blogspot.com/2011/04/shortform-mix-and-share-worlds-videos.html