Friday, November 30, 2012

[Gd] OpenSocial Foundation becomes OW2 Consortium Associate Member, announces availability of OpenSocial 2.5 specification

| More

OpenSocial API Blog: OpenSocial Foundation becomes OW2 Consortium Associate Member, announces availability of OpenSocial 2.5 specification

Paris, France – November 30, 2012 – OpenSocial Foundation announced today on becoming an OW2 associate member. This formal relationship brings two market-leading open foundations together, bringing the message of social cloud middleware to a larger worldwide market. OpenSocial Foundation is a Platinum sponsor and exhibitor at this year’s OW2Con, with foundation president Mark Weitzel keynoting today on how open standards and open source are driving social business.

“The OpenSocial Foundation continues its commitment to reaching out across the industry to build a robust social business ecosystem. We are excited to work closer with OW2 and it’s consortium members to further advance standard based social middleware.” said Mark Weitzel, President of the OpenSocial Foundation

"We were excited to have OpenSocial as a Platinum sponsor of OW2 Con this year." said Cedric Thomas, CEO of the OW2 Consortum. "With the growth of cloud computing and SaaS delivered social business applications there is a great deal of synergy between OpenSocial and OW2. It only seemed natural to find ways to align our efforts more closely together. We look to move away from legacy portal systems and towards social systems of engagement, we look forward to working with the OpenSocial and Apache Rave communities to define and build the next generation open, standards based, social platform."

Announcement of OpenSocial 2.5 specification.

In addition, the OpenSocial Foundation also announces today the general availability of version 2.5 of the OpenSocial specification. This release adds in new features that were previously in incubation, such as the Common Container, which formalizes the APIs for application lifecycle and management, as well as adds new capabilities such as the ability to introspect the services with an OpenSocial platform through a metadata API.

“OpenSocial provides the leading and most mature standards based component model for SaaS delivered social business applications.”, said Mark Weitzel, President of the OpenSocial Foundation.
“Version 2.5 continues to set the benchmark for community driven innovation and fosters interoperability, choice, consistency, innovation, and quality between social platforms and 3rd party applications.”

For a more complete list of the changes, see the full release notes at, and you can download the full specification at

About OW2
Founded in January 2007, OW2 is an independent industry community dedicated to developing open source code infrastructure and to fostering a vibrant community and business ecosystem. The OW2 Consortium hosts some one hundred technology Projects, including ASM,Bonita, eXo Platorm, Funambol, JOnAS, Joram, Orbeon Forms, PEtALS, SpagoBI and XWiki. More information at:

About OpenSocial
The OpenSocial Foundation, an industry recognized standards body, dedicated to advancing the social web through community innovation and open source. Established in 2008, the Foundation provides the leading and most mature standards based component model for SaaS delivered social business applications. Widely supported by a majority of leading consumer and enterprise social platforms, such as IBM, Jive, and SugarCRM, the OpenSocial specification fosters the development of a growing set of socially-aware off-the-shelf applications. Through open source projects such as Apache Rave and Shindig, it provides a well-defined way for 3rd party applications to richly interact with users directly in their activity stream. For more information, visit

[Gd] Fridaygram: #freeandopen Internet, new form of matter, lava flowing

| More

Google Developers Blog: Fridaygram: #freeandopen Internet, new form of matter, lava flowing

Author Photo
By Scott Knaster, Google Developers Blog Editor

This week we launched a campaign to keep the Internet #freeandopen, ahead of a meeting of government agencies next week that could increase censorship and regulation of the Internet. We believe that Internet policies should be discussed and decided by the people who use it, not just governments. You can go to the site to learn more and find out what you can do. You can also watch Google Developers Live next Tue., Wed., and Thu. for live Hangouts on this topic. Your opinion matters!

Speaking of matter, researchers are eyeing data from the Large Hadron Collider for evidence of a new form of matter that has been theorized to exist but never seen. The new matter is a kind of gluon called color-glass condensate. Scientists noted that some wacky particles unexpectedly showed quantum entanglement when they traveled in the same direction after collisions. A new state of matter is a possible explanation.

Finally, take a look at this video of erupting lava from the Kilauea Volcano flowing into the ocean. You can also see a webcam view of the caldera, including some brave people watching from a safe distance. Maybe they’ll wave!

Each Friday on this blog we depart from the usual developer topics and present fun and interesting stuff that’s not necessarily related to writing code. Sometimes we even veer into an important topic, like the #freeandopen program mentioned in this post.

Posted by Ashleigh Rentz, Editor Emerita

[Gd] Stable Update for Chrome OS

| More

Chrome Releases: Stable Update for Chrome OS

The Stable channel has been updated to 23.0.1271.94 (Platform version: 2913.224.0) for all Chrome OS Devices. This build contains a number of new features, bug fixes and security improvements. Machines will be receiving updates over the next several days.

Release Highlights:

  • Updated default apps
  • Window Manager Enhancements
  • UI improvements for notifications through the new message area
  • UI improvements to the out of box experience
  • UI improvements to the sign-in screen
  • Device reset from start screen and settings (click here for more details)
  • Enable key apps offline by default
  • Cloud-based wallpaper management  

Security fixes and rewards:

  • [$3500] [145525] Medium CVE-2012-5129: heap buffer overflow in GPU process with WebGL. Credit to miaubiz.

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.

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.

Ben Henry & Josafat Garcia
Google Chrome

Thursday, November 29, 2012

[Gd] Managing tasks and reminders through Google Apps Script

| More

Google Apps Developer Blog: Managing tasks and reminders through Google Apps Script

Editor’s Note: Guest author Romain Vialard works at Revevol, an international service provider dedicated to Google Apps and other Cloud solutions. -- Arun Nagarajan

There are many tools available to help you manage a task list and Google Apps comes with its own simple Tasks app. But sometimes it is more convenient and collaborative to simply manage your task list in a shared spreadsheet. This spreadsheet can be a simple personal task list or a project-management interface that requires team-wide coordination.

Google Spreadsheets come with a set of notification rules that might come in handy. For example, you can be notified each time someone adds a new task to the list or each time the status of a task is updated. Furthermore, it is very easy add to add basic reminders through Apps Script with just a few lines of code:

function remindMe() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var data = sheet.getDataRange().getValues();
for(var i = 1; i < data.length; i++){
if(data[i][2] > new Date()){

The simple remindMe function performs a standard JavaScript-based date comparison on every row and sends an email for tasks that are due. You can then schedule the remindMe function via a programmable trigger based on the settings.

This script is already available in the Script Gallery today. Try it out for yourself!

Once you have installed the script, you get a new menu option in the spreadsheet that opens a simple user interface to set the options you want. As a developer, you can extend this interface further to provide more options and capabilities.

Romain Vialard   profile | YouTube

Romain Vialard is a Google Apps Change Management consultant at Revevol. Romain writes scripts to automate everyday tasks, add functionality and facilitate rapid adoption of cutting edge web infrastructures. As a Google Apps Script Top Contributor, he has also built many of the top scripts in the Apps Script Gallery, including the very popular Gmail Meter.


[Gd] Beta Channel Update

| More

Chrome Releases: Beta Channel Update

The Beta channel has been updated to 24.0.1312.27  for Windows, Mac, Linux, and Chrome Frame.  This build contains following updates:

  • Fixed random Chinese/Japanese characters that are missing in documents printed via the system print dialog on Windows XP SP3. [Issue: 128506]
  • Fixed memory leak in  GPU accelerated canvas. [Issue: 160411]
  • Fixed console.log which doesn’t output jQuery objects properly. [Issue: 162570]
  • Fixed stability issues like 161854, 154483, 154462, 153376.

Full details about what changes are in this build are available in the SVN revision log. Interested in switching release channels? Find out how. If you find a new issue, please let us know by filing a bug.

Dharani Govindan
Google Chrome

[Gd] Stable Channel Update

| More

Chrome Releases: Stable Channel Update

The Stable channel has been updated to 23.0.1271.95 for Windows, Mac, Linux, and ChromeFrame platforms.

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.

  • [161564] High CVE-2012-5138: Incorrect file path handling. Credit to Google Chrome Security Team (Jüri Aedla).
  • [$7331] [162835] High CVE-2012-5137: Use-after-free in media source handling. Credit to Pinkie Pie.

Congratulations to Pinkie Pie for completing challenge: 64-bit exploit.

Many of the above bugs were detected using AddressSanitizer.

Full details about what changes are in this release are available in the SVN revision log.  Interested in hopping on the stable channel?  Find out how.  If you find a new issue, please let us know by filing a bug.

Karen Grunberg
Google Chrome

[Gd] Google Cloud Storage - more value for performance

| More

Google Developers Blog: Google Cloud Storage - more value for performance

Author Photo By Dave Barth, Product Manager

Cross-posted with the Official Google Enterprise Blog

Earlier this week, we announced a collection of improvements across Google Cloud Platform including 36 new Compute Engine instances, Durable Reduced Availability (DRA) storage, Object Versioning, and European datacenter support. We also announced that we are reducing the price of standard Google Cloud Storage by over 20%.

We are committed to delivering the best value in the marketplace to businesses and developers looking to operate in the cloud. That’s why today we are reducing the price of Google Cloud Storage by an additional 10%, resulting in a total price reduction of over 30%. This price reduction applies to all Cloud Storage regions and the new DRA Storage.

Find out more about the new Cloud Storage pricing and sign up now to get started.

Dave Barth is a Product Manager on the Google Cloud Storage team, based in Seattle. He is idealistic about the capacity of technology to change the world.

Posted by Raj Sarkar

Wednesday, November 28, 2012

[Gd] Dev Channel Update for Chrome OS

| More

Chrome Releases: Dev Channel Update for Chrome OS

The Dev channel has been updated to 25.0.1324.1 (Platform versions 3196.4.0) for Samsung Chromebooks. This build contains a number of stability fixes.

Release highlights:
  • Firmware updated to 2965.114

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...’ in the Chome menu (3 horizontal bars in the upper right corner of the browser).

Danielle Drew
Google Chrome

[Gd] Dev Channel Update

| More

Chrome Releases: Dev Channel Update

The Dev channel has been updated to 25.0.1337.0 for Windows, Mac, and Chrome Frame.  A full list of changes in this build is available in the SVN revision log. Interested in switching release channels? Find out how. If you find a new issue, please let us know by filing a bug.

Jason Kersey
Google Chrome

[Gd] Chrome for Android Update

| More

Chrome Releases: Chrome for Android Update

The stable channel of Chrome for Android has been updated to 18.0.1025469 for ARM devices and to 18.0.1026322 for x86 devices. The new update includes fixes for some frequently occurring stability issues.  Both updates are now available for download on Google Play and in the Google Play Store on your mobile devices. Known issues are available on the Chrome support site.

If you find a new issue, please let us know by filing a bug.  More information on Chrome for Android is available on the Chrome site.

Vinod Ramachandran
Google Chrome

[Gd] Announcing Google Drive Site Publishing

| More

Google Apps Developer Blog: Announcing Google Drive Site Publishing

Would you like to programmatically publish some web content? Or let your users do so in the context of your Drive app?

This is possible now with Google Drive. Your app can now insert static web assets in a publicly shared folder, and then serve those files directly to users via file names in a relative path. Google Drive site publishing supports JavaScript, so it's even possible to run a JavaScript Drive app directly from Drive.

Publishing from Drive is a simple, two-step dance: create a public folder and use a link to the root folder — the webViewLink — to publish its contents. You can refer the Drive SDK documentation for full detail on how to work with public folders and content links, but basically the requirements are:

  • The folder containing site assets must be public. Assets added to public folders must also be public on the web.
  • Link to the files contained in the folder using the webViewLink (included in the folder’s JSON representation).

It’s important to emphasize the added simplicity provided by a webViewLink: using this link as a starting point, you can extend the path to any web asset in any subfolder without worrying about retrieving the exact file ID. What used to look like 0B2Gk2F2ImIBiaUkwY3JNX1JMaTg is now a recognizably cute path such as images/kittens.jpg. For the root path to the folder, we’ll display a list of files in the folder, or, if you have an index.html file in your folder we’ll load that as expected.

To see Google Drive site publishing in action, check out this example site served from Google Drive at

The ability to publish files this way opens lots of possibilities for Drive app developers. Writing a blogging tool, creating a process to publish updates to shared docs, outputting images in a folder in a gallery page — any Drive use case that involves presenting a file in a browser can benefit from site publishing. We look forward to seeing what you create, and we’re happy to answer your questions on Stack Overflow.

Eric Gilmore

Eric is a technical writer working with the Developer Relations group. Previously dedicated to Google Apps APIs, he is now busy writing about all aspects of the Google Drive SDK.


[Gd] Launching WordPress into the Google cloud

| More

Google Developers Blog: Launching WordPress into the Google cloud

Author PhotoBy Artem Livshits, CEO of OblakSoft

This guest post was written by Artem Livshits, CEO of OblakSoft, which makes the ClouSE MySQL storage engine for cloud development. In this post, Artem describes his experience using Google Cloud Storage to store and serve a WordPress blog.

WordPress is popular blogging software used by over 60 million people. If you have a WordPress blog, you want to ensure that your server load is manageable and that your load times are fast. You also want your data to be protected in case your server fails. With that in mind, we at OblakSoft created the Cloud Storage Engine for MySQL (ClouSE). It stores all your WordPress data on Google Cloud Storage, taking the load off your server to improve reliability and speed, and to reduce hosting costs.

We’ve been very impressed with the performance of Google Cloud Storage. Because it’s built on Google’s infrastructure, storage objects are cached within Google’s global network and distributed globally without the need for a Content Distribution Network (CDN). This ensures content is delivered with the best possible performance.

Here is a high-level architectural diagram of a WordPress-powered website that uses Google Cloud Storage to store and serve content:

The website’s content management is done through WordPress, which uses a MySQL server to store the website’s data. It uses the WP2Cloud WordPress plugin we created to upload pictures (and other media files) to Google Cloud Storage. ClouSE makes the web server stateless by storing all data in Google Cloud Storage using the Google Cloud Storage API. Web pages (lightweight HTML) are served by WordPress, while media files are served by Google Cloud Storage directly.

WordPress is one example of a MySQL-based application that can take full advantage of Google Cloud Storage to:
  • Keep the data highly available and highly durable.
  • Serve media files in a highly scalable fashion.
  • Distribute media files across the globe for fast access.
This solution works with any hosting provider, so our users can keep their current hosting arrangement, and move their data to Google Cloud Storage using WP2Cloud and ClouSE. Users who are limited preview customers of Google Compute Engine can get started immediately using a fully configured WordPress image that we created.

We’re very excited about the potential of the Google Cloud Platform to power dynamic web server applications. Launch your own WordPress site in the cloud today - it’s easy and there’s minimal setup. We found it easy to make ClouSe work with Google Cloud Storage, and you can see how you can integrate Google Cloud Storage into your app as well.

Artem Livshits is the Founder, CEO and software architect at OblakSoft, a company focusing on technologies that simplify adoption of cloud computing. Previously Artem led the development of several server products from inception to maturity during his 12 years at Microsoft, including the source control system managing most of the Microsoft code base.

Posted by Scott Knaster, Editor

[Gd] Chrome for iOS Update

| More

Chrome Releases: Chrome for iOS Update

Chrome for iPhone and iPad has been updated to Chrome 23 / 23.0.1271.91. This build brings in a number of new features and fixes to user-reported issues including:
  • Ability to open PDFs in other apps
  • Support for saving your boarding passes and tickets with Passbook
  • An option to automatically detect text encoding
  • Stability and security improvements
You can get the update via the App Store, or from the update prompt inside of Chrome. Known issues are available on the Chrome support site. If you find a new issue, please let us know by filing a bug.

Michele Aiello
Google Chrome

Tuesday, November 27, 2012

[Gd] Testacular - Spectacular Test Runner for JavaScript

| More

Google Testing Blog: Testacular - Spectacular Test Runner for JavaScript

By Vojta Jína

“Testacular has changed my life. Now I test-drive everything.”
-- Matias Cudich, YouTube on TV team lead

At Google we believe in testing. On the AngularJS team, it’s even worse - we are super crazy about testing. Every feature of the framework is designed with testability in mind.

We found that we were struggling with existing tools, so we decided to write our own test runner. We wanted a test runner that would meet all of our needs for both quick development and continuous integration -- a truly spectacular test runner. We've called it Testacular.

Let's walk through some mental tests for what we believe makes for an ideal test runner...

it(‘should be fast’)
In order to be productive and creative you need instant feedback. Testacular watches the files in your application. Whenever you change any of them, it immediately executes the specified tests and reports the results. You never have to leave your text editor.

This enables a new way of developing. Instead of moving back and forth between the editor and the browser, you can simply stay in the editor and experiment. You instantly see the results at the command line whenever your changes are saved.

Besides that, our experience says that if test execution is slow, people don’t write tests. Testacular eliminates many barriers that keep folks from writing tests. When developers get instant feedback from their tests, the tests become an asset rather than annoyance.

it(‘should use real browsers’)
JavaScript itself is pretty consistent between different browsers, so one could potentially test browser code in non-browser environments like Node.js. Unfortunately, that’s not the case with the DOM APIs. AngularJS does a lot of DOM manipulation, and we need to be sure that it works across browsers. Executing tests on real browsers is a must.

And because Testacular communicates with browsers through a common protocols (eg. HTTP or WebSocket), you can test not only on desktop browsers but also on other devices such as mobile phones and tablets. For instance, the YouTube team uses Testacular to run continuous integration builds on PlayStation 3.

Another advantage of using real browsers is that you can use any of the tools that the browser provides. For example, you can jump into a debugger and step through your test.

it(‘should be reliable/stable’)
To be honest, most of these ideas were already implemented in JsTD almost three years ago. I think these are truly great ideas. Unfortunately, the implementation was flaky. It’s very easy to get JsTD into an inconsistent state, so you end up restarting it pretty much all day.

Testacular solves that. It can run for days, without restarting. That’s because every test run is executed in a fresh iframe. It reconnects browsers that have lost their connection to the server. And yep, it can gracefully recover from other issues, like syntax errors in the code under test.

We'd like to invite you to take Testacular for a spin. You can learn a bit more in this screencast. Please let us know what you think!

The project is open sourced and developed on GitHub.


[Gd] Supporting the growing Google Drive developer community: Google Drive Workshops

| More

Google Apps Developer Blog: Supporting the growing Google Drive developer community: Google Drive Workshops

Since the public unveiling of the Google Drive SDK in April, companies like Lucidchart or HelloFax have built powerful, slick, useful Google Drive apps, and many more companies are launching compelling integrations every day. During this time, our developer community — especially on Stack Overflow — has grown substantially.

To help support our growing developer community and all the interest in integrating with Google Drive, we’re starting a series of Google Drive developer workshops. For the inaugural event, we are hosting several companies — including Shutterfly, Fedex, Autodesk, Twisted Wave, 1DollarScan and Manilla — to participate in a two-day workshop this week at the Googleplex in Mountain View, California.

During this workshop, Google engineers will be on hand to assist attendees with various parts of their Google Drive integration: things like design and implementation of features, authorization flow, and Android integration. Companies have shown that the Google Drive SDK allows for deep integration in just a couple days and we really hope that attendees of this workshop will enjoy a similar experience. Tune back in later this week to find out more about what we learned and accomplished in our workshop.

If you are interested in attending similar Google Drive workshops near you or if you want to contact the Google Drive team about a potential integration with your product, let us know.

Nicolas Garnier Google+ | Twitter

Nicolas Garnier joined Google’s Developer Relations in 2008 and lives in Zurich. He is a Developer Advocate for Google Drive and Google Apps. Nicolas is also the lead engineer for the OAuth 2.0 Playground.


[Gd] Beta Channel Update

| More

Chrome Releases: Beta Channel Update

The Beta channel has been updated to 24.0.1312.25  for Windows, Mac, Linux, and Chrome Frame.  This build contains following updates:

  • [Windows 8]: Fixed delete all pinned-to-taskbar shortcuts owned by the uninstalled Chrome. [Issue: 158632]
  • [Windows 8]: Fixed pin / unpin status if the user cancels an action or pins / unpins from start screen. [Issue: 144332]
  • Fixed garbled header and footer text in print preview. [Issue: 152893]
  • Fixed extension action badges with long text. [Issue: 160069]
  • Disable find if constrained window is shown. [Issue: 156969]
  • Enable fullscreen for apps windows. [Issue: 161246]
  • Fixed broken profile with system-wide installation and UserDataDir & DiskCacheDir policy. [Issue: 161336]
  • Fixed stability crashes like 158747, 159437, 149139, 160914, 160401.

Full details about what changes are in this build are available in the SVN revision log. Interested in switching release channels? Find out how. If you find a new issue, please let us know by filing a bug.

Dharani Govindan
Google Chrome

[Gd] Beta Update for Chrome OS

| More

Chrome Releases: Beta Update for Chrome OS

The Beta channel has been updated to 23.0.1271.94 (Platform version 2913.224.0) for all Chrome OS devices. This build contains a number of stability fixes.

Release highlights:
  • Pepper Flash updated to release ARM
  • Network stability changes

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...’ in the Chome menu (3 horizontal bars in the upper right corner of the browser).

Josafat Garcia and Ben Henry
Google Chrome

[Gd] Using open-source libraries in Apps Script

| More

Google Apps Developer Blog: Using open-source libraries in Apps Script

JavaScript has long been the de facto choice for client-side web development, but lately it's been catching on server-side as well. While we like to think that Apps Script has contributed to the trend, projects such as Mozilla's Rhino and Node.js have also done a great deal to popularize the concept. As a result, developers have created a wealth of new open-source JavaScript libraries, and in this post we'll talk about how you can leverage them in your Apps Script projects.

One library I wanted to use in my scripts was Underscore, which describes itself as "a utility-belt library for JavaScript." It provides a wealth of helper functions that make coding in JavaScript cleaner and more enjoyable. Take, for example, the simple situation where you want to log each value in a range.

// Using plain JavaScript.
for (var i = 0; i < values.length; i++) {
for (var j = 0; j < values[i].length; j++) {

Although writing for loops like this is a common pattern, it's a fair amount of typing and you need to keep track of counter variables that serve little purpose. Underscore provides an each() method that makes the process much simpler.

// Using Underscore.
_.each(values, function(row) {
_.each(row, function(cell) {

Passing anonymous functions as parameters takes a little getting used to, but if you've worked with jQuery, the pattern feels familiar.

Underscore also has some great extensions, and Underscore.string provides some useful string manipulation features. My favorite is the ability to use sprintf() notation in JavaScript, which can simplify the process of building complex strings.

// Using plain JavaScript.
var message = "Hello, " + firstName + " " + lastName + ". Your wait time is " + wait + " minutes.";

// Using Underscore.string.
var message = _.sprintf("Hello, %s %s. Your wait time is %d minutes.", firstName, lastName, wait);

Integrating with Apps Script
The simplest way to include the Underscore library in a project would be to paste its source code directly into your script, but this would lead to a lot of duplication if you end up using it in multiple projects. Earlier this year, we released a feature in Apps Script called libraries that allows you to share scripts and include them in other projects. Packaging a JavaScript library like Underscore as an Apps Script library is possible, but requires some helper functions to work correctly.

When Underscore loads, it creates a global variable named "_" that you use to access its functionality. Apps Script specifically prevents the global scope of a library from interfering with the global scope of the script that includes it, so I built a helper function into the library to pass the variable around.

// In the library.
function load() {
return _;

In my script that includes the library, I simply make a call to that function and use the result to set up my own "_" variable.

// In the script that includes the library.
var _ = Underscore.load();

To try my copy of the Underscore library in your own project, use the project key "MGwgKN2Th03tJ5OdmlzB8KPxhMjh3Sh48" and the code snippet above. You can browse the full source code here.

Using it with the HtmlService
Using the code above, I could easily include the library in my server-side Apps Script code, but I also wanted to use these functions client-side in my web app served by the HtmlService. To accomplish this, I created a copy of the Underscore source code, wrapped it in <script> tags, and stored them in Html files (instead of Script files). These snippet files could then be included in my web app's HtmlTemplates using the helper function below.

// In the library.
var FILES = ['Underscore.js', 'Underscore.string.js', 'Init.js'];
function include(output) {
for (var i = 0; i < FILES.length; i++) {
var file = FILES[i];

This function was called in the web app's HtmlTemplate using the simple code below.

<!-- In the web app that includes the library. -->
<? Underscore.include(output) ?>

Other libraries
Integrating with Underscore was fairly easy, but trying the same approach with other open-source libraries may be a bit more complicated. Some libraries won't run correctly in the Apps Script environment if they rely on certain capabilities within the browser or Node.js runtime. Additionally, to be served by the HtmlService, the code must pass the Caja engine's strict validation, which many popular libraries don't meet. In some cases, you may be able to manually patch the library to work around these issue, but this usually requires a deep understanding of how the library works.

We hope you're inspired to use Underscore and other open-source libraries in your own work. If you find a library that works great with Apps Script, share it with me on Google+ and I'll help get the word out.

Eric Koleda profile

Eric is a Developer Programs Engineer based in NYC on the Google Apps Script team. He's previously worked with the AdWords API and enterprise content management software.


Monday, November 26, 2012

[Gd] Google Cloud Platform: new features, lower prices, extending European datacenters

| More

Google Developers Blog: Google Cloud Platform: new features, lower prices, extending European datacenters

Author Photo
By Jessie Jiang, Product Management Director

(Cross-posted on the Official Google Enterprise Blog.)

We're constantly making updates to our Google Cloud Platform products—Google App Engine, Cloud Storage, Big Query, Compute Engine and others—based on user feedback and to improve the overall experience. For example, two weeks ago we introduced a major update to Google Cloud SQL providing faster performance, larger databases (100GB), an EU zone, and a no-cost trial. But, we know there is more to do. Today, we’re continuing to improve the platform with new storage and compute capabilities, significantly lower prices, and more European Datacenter support.

Lower storage prices and new Durable Reduced Availability (DRA) Storage
To give you more flexibility in your storage options and prices, we’re reducing the price of standard Google Cloud Storage by over 20% and introducing a limited preview of Durable Reduced Availability (DRA) storage. DRA storage provides a lower price storage option by enabling you to trade off some data availability while still offering the durability your storage demands.

And, to automatically keep a history of old versions of your data, we’re introducing Object Versioning. You can also use it to help protect against deleting or overwriting your data by mistake or due to an application error.

More European Datacenter support
We are continuing to roll out our European Datacenter support. Now, customers using Google App Engine, Google Cloud Storage, Google Cloud SQL and (soon) Google Compute Engine can deploy their applications, data and virtual machines to European Datacenters. This helps bring your solutions even closer to your customers for faster performance and enables international redundancy.

36 New Compute Engine instance types and overall reduced prices
Earlier this year we introduced a Limited Preview of Google Compute Engine with four standard instance types. Today, we are announcing 36 additional instance types and are reducing the price of our original 4 standard instances by about 5% for those currently in our preview. In the coming weeks, the following will be available:

  • High Memory Instance - High performance instances tailored for applications that demand large amounts of memory.
  • High CPU Instance - Reduced cost option when applications don’t require as much memory.
  • Diskless Configurations - Lower cost options for applications that do not require ephemeral disk and can exclusively utilize persistent disk.

We are also introducing Persistent Disk Snapshotting which makes it simple to instantly create a backup of your disk, move it around Google datacenters, and use the snapshot to start up a new VM.

We want to thank you, the community of developers and businesses who are pushing the platform into new areas and building innovative applications. We look forward to seeing where you take it next. Find out more about the new Cloud Storage pricing and Compute Engine instances. Sign up now and get started today.

Jessie Jiang is the Product Management Director, Google Cloud Platform. She is passionate about building the best platform for developers and businesses in the cloud.

Posted by Scott Knaster, Editor

[Gd] Designing for Tablets? We’re Here to Help!

| More

Android Developers Blog: Designing for Tablets? We’re Here to Help!

Posted by Roman Nurik, who often writes about Android design-related topics on Google+

So you’ve got a great Android phone app on Google Play, your users love it, and you’re kicking back and watching the download numbers soar. Congrats! But like any enterprising developer, you may be thinking, “how do I take my app’s success even further?” The answer: an equally awesome experience on tablets. Users love their tablet apps! For example, found that the larger screen real estate allowed tablet users to engage with their budget data 7x more than on phones. And TinyCo found that on average, paying users spent 35% more on tablets than on handsets. So now is the right time to think about how your app translates onto these larger screen devices that are designed to meet users’ more generic, everyday computing needs.

In this post, we’ll recap some of the resources available for crafting a great tablet experience for your users. These resources are useful for everyone in the app development pipeline—from product managers, to designers, to developers, and QA engineers.

Android Design Guidelines

No conversation about Android app design or development should go very far without first consulting the Android Design guidelines. While most of the sections are relevant to all Android devices, certain sections stand out as particularly relevant to design on tablets.

The Devices and Displays page introduces the concept of density-independence. For example, although the Nexus 4, Nexus 7, and Motorola XOOM all have a similar pixel resolution (1280x768, 1280x800, and 1280x800 respectively), they have vastly different screens. Instead of thinking in pixels, think in dips (density-independent pixels)—that way, it’s much easier to conceptualize the difference between Nexus 4 (640x384 dp), Nexus 7 (960x600dp), and Nexus 10 or the Motorola XOOM (1280x800 dp).

Following the 48dp rhythm discussed in Metrics and Grids helps take some of the guesswork out of sizing elements, especially for tablets. When in doubt, use multiples of 48dp (or 16dp for a finer grid) for sizing elements horizontally and vertically. For example, when showing sparse content on larger screens, consider using generous side margins of 96dp or 144dp. Or when deciding how wide your master pane should be in a master/detail layout for 10” tablets, see how your master content looks and feels with a width of 240dp or 288dp.

The Multi-pane Layouts guide discusses use cases and examples for combining related views into a single screen to simultaneously improve app navigation and make optimal use of the available screen real estate. It also discusses strategies for laying out content across both portrait and landscape, all while maintaining functional parity across orientations. Since users enjoy using tablets in both portrait and landscape orientations, it’s even more important to react properly to orientation changes than with phones.

Lastly, the Downloadable Stencils offer designers a great starting point for high-fidelity mockups, complete with reference device outlines, correctly sized action bars, and more.

Android Training for Developers

The Training section of the developer site offers task-oriented technical training material, complete with flow diagrams, code snippets, sample projects and more. Several of these ‘classes’ are geared toward helping developers understand how to scale your apps across any screen size.

The Designing Effective Navigation class—aimed more at the initial design phase of the app creation process—offers a methodology for effectively planning and grouping screens on tablets, and even shows example wireframes for a simple news reader application following this methodology.

The classes Building a Dynamic UI with Fragments and Designing for Multiple Screens demonstrate how to use fragments in conjunction with Android’s resources framework. They show how to easily choose between tablet and handset layouts at runtime while maximizing code reuse and minimizing your application size using resource aliases. They also demonstrate techniques for adapting UI flows based on the current layout.

Lastly, while not precisely a training class, the Supporting Tablets and Handsets document offers even more information about some of these key best practices. And if you’re the type of developer that would prefer to skip the text and jump right into the code, you can even add a Master/Detail flow, complete with handset and tablet support, to your app with just a few clicks using the Android Developer Tools for Eclipse.

Android Design in Action Highlights

Each week, a few of us on the developer relations team get together on the Android Design in Action live show to discuss Android design best practices, as well as provide original ‘redesign’ mockups to help demonstrate our vision of how Android apps should look and feel.

A recent episode focused on the topic of responsive design, or designing flexible apps that can adapt to whatever screen size or form factor they’re run on:

In the episode, we celebrated successful examples of responsive design on Android, ranging from creating calendar events in Google Calendar, to browsing wallpapers and stories in Pattrn and Pocket, to playing video in TED, and finally to managing your conference schedule in the open-source Google I/O 2012 app.

We also regularly feature tablet design concepts on the show (some are shown below), so we highly recommend tuning in each week for design ideas.


For even more tablet app inspiration, check out a few of these apps: Expedia Hotels & Flights, Pulse News, SeriesGuide, Tasks and Timer.

The Tablet Quality Checklist

Over in the “Distribute” section of, the recently published Tablet App Quality checklist is a great way to check if your app is tablet-ready along a variety of technical dimensions. You should make sure that everyone involved in your mobile products is aware of  the standards defined in this checklist, as it is one of the ways in which the Google Play team selects apps to feature in the Staff Picks for Tablets collection.

So What are You Waiting For?

2013 is almost here, and it’s looking to be another exciting year for Android tablets. Make sure your app is positioned to succeed in the evolving device landscape by following some of the best practices and examples discussed here and on the rest of

If you have specific questions about your app, let us know on Google+ (+Android Developers) or Twitter (@AndroidDev)!