Skip to content

Software Development Blogs: Programming, Software Testing, Agile Project Management

Methods & Tools

Subscribe to Methods & Tools
if you are not afraid to read more than one page to be a smarter software developer, software tester or project manager!

Google Code Blog
Syndicate content
News and insights on Google platforms, tools and eventsewoodhttp://www.blogger.com/profile/12341551220176883769noreply@blogger.comBlogger1395125
Updated: 23 hours 6 min ago

No map is an island: Introducing a connected JavaScript Maps API experience

Wed, 10/29/2014 - 17:52
Cross-posted from the Google Geo Developers blog

Our digital lives are increasingly connected. We research on our laptops, look up directions on our phones and even navigate with our watches. And by creating maps unique to each user and offering features such as saved places, Google Maps has been making it easier to continue these tasks as we move from device to device.

However, although maps embedded from Google Maps are now built uniquely for every Google user, most of the now two million active sites and apps using the Maps APIs are still islands. When I look for a place to eat on Zagat, I can’t see how far away it is from work. When I look at a travel map in the New York Times, I can’t save those places in order to navigate to them later.

Today we’re taking a step towards connecting these two million sites and apps by introducing a signed-in JavaScript Maps API experience and a feature called attributed save. To help illustrate, we’ve partnered with the New York Times to bring this experience to their 36 hours travel column.

A connected JavaScript Maps API

When you add &signed_in=true to the Google Maps JavaScript API source url, your end users will have the option to sign into the map with their Google account. When they do so, your users will receive a map built for them, in the context of your app. Their saved places — including home and work addresses (if set by the end user) as well as other relevant places — will appear automatically on their map, providing a layer of context that anchors your content and makes it stand out even more.

Attributed save

Once users are signed into the Google Maps in your app, we can together create an integrated experience between your map content and Google Maps. With attributed save, signed-in users can save places from your app to be accessed later, with attribution and linkbacks, on Google Maps for the web, Android and iOS.

What’s more, you can also enable deep links into your mobile applications. For instance, users can save a place from your desktop app (such as Zagat.com), open up the place on Google Maps on their Android device, and deep link directly into your Android app.

Enabling attributed save is easy — just specify your app name, a link and a place search string or place ID when creating a marker and info window. Or use our SaveWidget to enable attributed save in your own custom info window.

In addition, we’re also launching attributed save across all embedded maps today. Attribution and linkback parameter will be inferred automatically from the domain and referrer of the host site, so if you’re using our embedded maps, you don’t need to do anything! If you’re using the Google Maps Embed API, you may customize the source and link back parameters yourself.

One final point: we’ve stated in the past that the JavaScript Maps API is cookieless if loaded from maps.googleapis.com. As of today, to enable the signed in maps experience on sites across the web, the signed-in version of the JavaScript Maps API now does rely on cookies to detect the end user’s signed-in state. Please review our documentation for further details.

That’s all for now. Go try it out. And remember, no map is an island, entire of itself...

Posted by Ken Hoetmer, Product Manager, Google Maps APIs
Categories: Programming

Google Fit SDK available now

Tue, 10/28/2014 - 18:13

After previewing it earlier this summer, today the Google Fit APIs are fully available on Android, Android Wear and the web so that you can build and publish apps for users on Google Play. Head to developers.google.com/fit to learn more.

The Google Fit platform gives the user one place to keep all their fitness activities. With the user’s permission, any developer can store or read the user’s data from Google Fit and use it to build powerful and useful fitness experiences for their users.

For users, we’re also launching the Google Fit app on Google Play for smartphones, tablets, Wear, and on the web at google.com/fit. The Google Fit app provides users with effortless, all-day activity tracking, as well as displaying key fitness data that our partners have stored in the platform. This app will also provide an opportunity for users to discover apps that help them track their fitness goals using Google Fit.

To get a quick introduction to the Fit APIs, check out the Dev Byte videos below.


A number of partners from around the fitness industry have been hard at work preparing their apps for Google Fit. In the coming weeks, our previously-announced launch partners, Nike+ Running, Withings HealthMate, Runkeeper, Runtastic, and Noom Coach, will launch their Google Fit integrations. We’re also happy to announce 6 new Google Fit partners: Strava, MapMyRun, LynxFit, LifeSum, FatSecret, and Azumio. These new partners are also preparing great experiences that will launch soon.

Please join the Google Fit Developer Community to share ideas and get inspired. We can’t wait to see what you come up with!

Posted by Angana Ghosh, Product Manager, Google Fit

Categories: Programming

Recap of the 2014 Google Cloud Platform Roadshows

Thu, 10/23/2014 - 17:00
We just wrapped up the Google Cloud Platform Roadshows, a series of developer events in 35 cities worldwide, where we reached nearly 4,500 developers spanning the globe, from Texas to Tel Aviv to Tokyo.

Now that the series is finished, we wanted to thank everyone for coming and share with you the slides and live recording of the talks from our New York City event:


The Roadshow team sends huge thanks to everyone who attended and looks forward to seeing you next year. We'd love to hear from you in the meantime:


Posted by Tom Van Waardhuizen, Program Manager
Categories: Programming

Welcome Firebase to the Google Cloud Platform Team

Tue, 10/21/2014 - 18:31
Today we extend a warm welcome to Firebase, who is joining the Google Cloud Platform team. Firebase makes it very easy for developers to build mobile and web apps that store and sync data in realtime.

Mobile is one of the fastest-growing categories of app development, but it’s also still too hard for most developers. With Firebase, developers are able to easily sync data across web and mobile apps without having to manage connections or write complex sync logic. Firebase makes it easy to build applications that work offline and has full-featured libraries for all major web and mobile platforms, including Android and iOS.

By combining Firebase with Google Cloud Platform, we’ll be able to build the best end-to-end platform for mobile application development. If you’re already a Firebase developer, you’ll start seeing improvements right away and if you’re a Google Cloud Platform customer, you’ll find it even easier to create great mobile and web apps. The entire Firebase team is joining Google and, under the leadership of Firebase co-founders James Tamplin and Andrew Lee, will be working hard to bring you great new features. Not only will the products you already love continue to get better, but you’ll also gain access to the full power of Google Cloud Platform.

At Google Cloud Platform Live on November 4, we’ll be demonstrating new Firebase features and integrations with Cloud Platform. You can join us there in person or you can register to stream online for free.

If you are looking for more info check out the Firebase blog. We can’t wait to see what applications you build!

Greg DeMichillie, Director of Product Management
Categories: Programming

Updated Material Design Guidelines and Resources

Fri, 10/17/2014 - 18:00

When we first published the Material Design guidelines back in June, we set out to create a living document that would grow with feedback from the community. In that time, we’ve seen some great work from the community in augmenting the guidelines with things like Sketch templates, icon downloads and screens upon screens of inspiring visual and motion design ideas. We’ve also received a lot of feedback around what resources we can provide to make using Material Design in your projects easier.

So today, in addition to publishing the final Android 5.0 SDK for developers, we’re publishing our first significant update to the Material Design guidelines, with additional resources including:

  • Updated sticker sheets in PSD, AI and Sketch formats
  • A new icon library ZIP download
  • Updated color swatch downloads
  • Updated whiteframe downloads, including better baseline grid text alignment and other miscellaneous fixes

The sticker sheets have been updated to reflect the latest refinements to the components and integrated into a single, comprehensive sticker sheet that should be easier to use. An aggregated sticker sheet is also newly available for Adobe Photoshop and Sketch—two hugely popular requests. In the sticker sheet, you can find various elements that make up layouts, including light and dark symbols for the status bar, app bar, bottom toolbar, cards, dropdowns, search fields, dividers, navigation drawers, dialogs, the floating action button, and other components. The sticker sheets now also include explanatory text for elements.

Note that the images in the Components section of the guidelines haven't yet been updated (that’s coming soon!), so you can consider the sticker sheets to be the most up-to-date version of the components.

Also, the new system icons sticker sheet contains icons commonly used in Android across different apps, such as icons used for media playback, communication, content editing, connectivity, and so on.

Stay tuned for more enhancements as we incorporate more of your feedback—remember to share your suggestions on Google+! We’re excited to continue evolving this living document with you!

For more on Material Design, check out these videos and the new getting started guide for Android developers.

Posted by Roman Nurik, Design Advocate
Categories: Programming

Componentize the web, with Polycasts!

Fri, 10/03/2014 - 18:58
Today at Google, we’re excited to announce the launch of Polycasts, a new video series to get developers up and running with Polymer and Web Components.

Web Components usher in a new era of web development, allowing developers to create encapsulated, interoperable elements that extend HTML itself. Built atop these new standards, Polymer makes it easier and faster to build Web Components, while also adding polyfill support so they work across all modern browsers.

Because Polymer and Web Components are such big changes for the platform, there’s a lot to learn, and it can be easy to get lost in the complexity. For that reason, we created Polycasts.

Polycasts are designed to be bite sized, and to teach one concept at a time. Along the way we plan to highlight best practices for not only working with Polymer, but also using the DevTools to make sure your code is performant.

We’ll be releasing new videos often over the coming weeks, initially focusing on core elements and layout. These episodes will also be embedded throughout the Polymer site, helping to augment the existing documentation. Because there’s so much to cover in the Polymer universe, we want to hear from you! What would you like to see? Feel free to shoot a tweet to @rob_dodson, if you have an idea for a show, and be sure to subscribe to our YouTube channel so you’re notified when new episodes are released.

Posted by Rob Dodson, Developer Advocate
Categories: Programming

Promises in the Google APIs JavaScript Client Library

Thu, 10/02/2014 - 21:28
The JavaScript Client Library for Google APIs is now Promises/A+-conformant. Requests made using gapi.client.request, gapi.client.newBatch, and from generated API methods like gapi.client.plus.people.search are also promises. You can pass in response and error handlers through their then methods.

Requests can be made using the then syntax provided by Promises:
gapi.client.load(‘plus’, ‘v1’).then(function () { 
gapi.client.plus.people.search({query: ‘John’}).then(function(res) {
console.log(res.result.items);
}, function(err) {
console.error(err.result);
});
})
All fulfilled responses and rejected application errors passed to the handlers will have these fields:
{
result: *, // JSON-parsed body or boolean false if not JSON-parseable
body: string,
headers: (Object.),
status: (?number),
statusText: (?string)
}
The promises can also be chained, making your code more readable:
gapi.client.youtube.playlistItems.list({
playlistId: 'PLOU2XLYxmsIIwGK7v7jg3gQvIAWJzdat_',
part: 'snippet'
}).then(function(res) {
return res.result.items.map(function(item) {
return item.snippet.resourceId.videoId;
});
}).then(function(videoIds) {
return gapi.client.youtube.videos.list({
id: videoIds.join(','),
part: 'snippet,contentDetails'
});
}).then(function(res) {
res.result.items.forEach(function(item) {
console.log(item);
});
}, function(err) {
console.error(error.result);
});
Using promises makes it easy to handle results of API requests and offer elegant error propagation.

To learn more about promises in the library and about converting from callbacks to promises, visit Using Promises and check out our latest API reference.

Posted by Jane Park, Software Engineer
Categories: Programming

Sudoku, Linear Optimization, and the Ten Cent Diet

Tue, 09/30/2014 - 17:12
Originally posted on the Google Research blog. Cross posted on the Google Apps Developers blog

In 1945, future Nobel laureate George Stigler wrote an essay in the Journal of Farm Economics titled The Cost of Subsistence about a seemingly simple problem: how could a soldier be fed for as little money as possible?

The “Stigler Diet” became a classic problem in the then-new field of linear optimization, which is used today in many areas of science and engineering. Any time you have a set of linear constraints such as “at least 50 square meters of solar panels” or “the amount of paint should equal the amount of primer” along with a linear goal (e.g., “minimize cost” or “maximize customers served”), that’s a linear optimization problem.

At Google, our engineers work on plenty of optimization problems. One example is our YouTube video stabilization system, which uses linear optimization to eliminate the shakiness of handheld cameras. A more lighthearted example is in the Google Docs Sudoku add-on, which instantaneously generates and solves Sudoku puzzles inside a Google Sheet, using the SCIP mixed integer programming solver to compute the solution.
Today we’re proud to announce two new ways for everyone to solve linear optimization problems. First, you can now solve linear optimization problems in Google Sheets with the Linear Optimization add-on written by Google Software Engineer Mihai Amarandei-Stavila. The add-on uses Google Apps Script to send optimization problems to Google servers. The solutions are displayed inside the spreadsheet. For developers who want to create their own applications on top of Google Apps, we also provide an API to let you call our linear solver directly.
Second, we’re open-sourcing the linear solver underlying the add-on: Glop (the Google Linear Optimization Package), created by Bruno de Backer with other members of the Google Optimization team. It’s available as part of the or-tools suite and we provide a few examples to get you started. On that page, you’ll find the Glop solution to the Stigler diet problem. (A Google Sheets file that uses Glop and the Linear Optimization add-on to solve the Stigler diet problem is available here. You’ll need to install the add-on first.)

Stigler posed his problem as follows: given nine nutrients (calories, protein, Vitamin C, and so on) and 77 candidate foods, find the foods that could sustain soldiers at minimum cost.

The Simplex algorithm for linear optimization was two years away from being invented, so Stigler had to do his best, arriving at a diet that cost $39.93 per year (in 1939 dollars), or just over ten cents per day. Even that wasn’t the cheapest diet. In 1947, Jack Laderman used Simplex, nine calculator-wielding clerks, and 120 person-days to arrive at the optimal solution.

Glop’s Simplex implementation solves the problem in 300 milliseconds. Unfortunately, Stigler didn’t include taste as a constraint, and so the poor hypothetical soldiers will eat nothing but the following, ever:

  • Enriched wheat flour
  • Liver
  • Cabbage
  • Spinach
  • Navy beans

Is it possible to create an appealing dish out of these five ingredients? Google Chef Anthony Marco took it as a challenge, and we’re calling the result Foie Linéaire à la Stigler:
This optimal meal consists of seared calf liver dredged in flour, atop a navy bean purée with marinated cabbage and a spinach pesto.

Chef Marco reported that the most difficult constraint was making the dish tasty without butter or cream. That said, I had the opportunity to taste our linear optimization solution, and it was delicious.

Posted by Jon Orwant, Engineering Manager
Categories: Programming

Tell us about your experience building on Google, and raise money for educational organizations!

Thu, 09/25/2014 - 22:16
Here at Google, we always put the user first, and for the Developer Platform team, our developers are our users. We want to create the best development platform and provide the support you need to build world-changing apps, but we need to hear from you, our users, on a regular basis so we can see what’s working and what needs to change.

That's why we're launching our developer survey -- we want to hear about how you are using our APIs and platforms, and what your experience is using our developer products and services. We'll use your responses to identify how we can support you better in your development efforts.
Photo Credit: Google I/O 2014

The survey should only take 10 to 15 minutes of your time, and in addition to helping us improve our products, you can also help raise money to educate children around the globe. For every developer who completes the survey, we will donate $10 USD (up to a maximum amount of $20,000USD total) to your choice of one of these six education-focused organizations: Khan Academy, World Fund, Donors Choose, Girl Rising, Raspberry Pi, and Agastya.

The survey is live now and will be live until 11:59PM Pacific Time on October 15, 2014. We are excited to hear what you have to tell us!

Posted by Neel Kshetramade, Program Manager, Developer Platform
Categories: Programming

New Google Apps Activity API

Wed, 09/24/2014 - 18:21
Back in January, Google Drive launched an activity stream that shows you what actions have been taken on files and folders in your Drive. For example, if someone makes edits on a file you’ve shared with them, you’ll see a notification in your activity stream.
Today, we’re introducing the new Google Apps Activity API designed to give developers programmatic access to this activity stream. This standard Google API will allow apps and extensions to access the activity history for individual Drive files as well as descendents of a folder through a RESTful interface.
The Google Apps Activity API will allow developers to build new tools to help users keep better track of what’s happening to specific files and folders they care about. For example, you might use this new API to help teachers see which students in their class are editing a file or, come tax season, you might want to create a quick script to audit the sharing of items in your financial information folder.
Check out the documentation at https://developers.google.com/google-apps/activity/. We can't wait to see what you build!
Posted by Justin Hicks, Software Engineer, Technical Lead for Google Apps Activity API
Categories: Programming

New features in Admin SDK: Custom user attributes, and opening up access to all domain users

Tue, 09/23/2014 - 19:21
By Muzammil Esmail, Product Manager, Google for Work
The Admin SDK provides a comprehensive directory experience for Google for Work customers to help them meet specific business needs around data storage for customers. Here are some important updates to this SDK.
Custom attributes in the user’s profileNow available is a new feature in the Directory API which allows you to add custom attributes for your users. For instance, you could store the projects your users work on, their desk number, job level, hiring date — whatever makes sense for your business.
Once the custom attributes for your domain have been defined, they behave just like regular fields in the user profile. You can get and set them for your users and also perform searches on custom fields (e.g. “all employees that work on the shinyNewApp in Hyderabad”).
Custom attributes can be of different data types; they can be single- or multi-valued. You can configure whether they are “public” i.e. visible to everyone on the domain, or “private” i.e. visible only to admins and the users themselves.
Read access to all domain usersHistorically, only admins have been able to access the data in the Admin SDK. Beginning today, any user (not just admins) will now be able to call the Directory API to read the profile of any user on the domain (of course, we will respect ACLing settings and profile sharing settings).
We hope that you will be able to use this new feature to build business applications (e.g. corporate yellow pages, expense approval, vacation management, workflow applications, etc.) that can be used by all your users.
Please feel free to go through our documentation to go learn more about the Admin SDK, and specifically the Directory API. Happy hacking!
Categories: Programming

Get your app in the Google index - and be ready for the future of Search

Fri, 09/19/2014 - 19:15
Last October we worked with a small number of developers to launch App Indexing, the ability for Google to index apps just like websites. In June, we opened App Indexing to all Android developers, giving you the ability to add app deep links to search results, helping users find your content and re-engage with your app after they’ve installed it.

Today, we’d like to highlight two videos to help you set up App Indexing. Check them out below. You’re only a few steps away from driving re-engagement and unlocking new avenues of discovery for your app.

1998 all over again

In 1998, Google set out to index the web and make content easily accessible and discoverable.

Today mobile app adoption is growing rapidly. Similar to the early days of the internet, it can be frustrating for users to search through their device to find what they need, since the content within apps typically exists in silos. By implementing App Indexing, you can re-engage your users from search results.

Consider the scenario of users looking for details about a great place for some Spanish food. Users might already have a great mobile app for restaurant details installed, but they typically still rely on a search engine to pull up information about local places to eat. Wouldn’t it be great if they could jump straight into your app from those search results? App Indexing is all about connecting users with the best content, whether it’s in-app or on the web. You can add it to your app very quickly -- simply add deep linking to your app, and then verify your website with Google. To enable re-engagement with your users, you can generate query autocompletions in the Google app using the App Indexing API.

Learn More

To learn more about App Indexing, and how you can use the API for your apps, check out this DevByte from Lawrence Chang, Senior Product Manager for App Indexing at Google.
For an in-depth look at App Indexing, demonstrating the technology, and the opportunities available with it, watch this session from Google I/O 2014: “The Future of Apps and Search.”
We’re at the beginning of a new wave of how people find and interact with content, and it often starts with search. Is your app in the index? If not, follow the steps in this post, and get ready for the future of Apps and Search!

Posted by Laurence Moroney

Laurence is a Developer Advocate at Google, working on Google Play services for Android. When not having fun with this, he's also a best-selling author of several Young Adult novels and dozens of books on computer programming.
Categories: Programming

gcloud-node - a Google Cloud Platform Client Library for Node.js

Wed, 09/17/2014 - 21:18
This post originally appeared on the Google Cloud Platform blog 

Today we are announcing a new category of client libraries that has been built specifically for Google Cloud Platform. The very first library, gcloud-node, is idiomatic and intuitive for Node.js developers. With today’s release, you can begin integrating Cloud Datastore and Cloud Storage into your Node.js applications, with more Cloud Platform APIs and programming languages planned. The easiest way to get started is by installing the gcloud package using npm:
$ npm install gcloud
With gcloud installed, your Node.js code is simpler to write, easier to read, and cleaner to integrate with your existing Node.js codebase. Take a look at the code required to retrieve entities from Datastore:
var gcloud = require('gcloud');

var dataset = new gcloud.datastore.Dataset({
projectId: 'my-project',
keyFilename: '/path/to/keyfile.json' // Details at
//https://github.com/googlecloudplatform/gcloud-node#README
});

dataset.get(dataset.key('Product', 123), function(err, entity) {
console.log(err, entity);
});
gcloud is open-sourced on Github; check out the code, file issues and contribute a PR - contributors are welcome. Got questions? Post them on StackOverflow with the [gcloud-node] tag. Learn more about the Client Library for Node.js at http://googlecloudplatform.github.io/gcloud-node/ and try gcloud-node today.

Posted by JJ Geewax, Software Engineer

Node.js is a trademark of Joyent, Inc. and npm is a trademark of npm, Inc.
Categories: Programming

Allowing end users to install your app from Google Apps Marketplace

Wed, 09/17/2014 - 17:32
by Chris Han, Product Manager Google Apps Marketplace
The Google Apps Marketplace brings together hundreds of third-party applications that integrate and enhance Google Apps for Work. Previously, only administrators were able to install these applications directly for people at work. Now, any Google Apps user can install these applications by logging into Google Apps, clicking the app launcher icon , clicking More, and then clicking More from Apps Marketplace. By default, any Google Apps user can install apps from the Google Apps Marketplace—excluding K-12 EDU domains that are defaulted off. For more information, please see our Help Center
If you have an app in the Google Apps Marketplace utilizing oAuth 2.0, you can follow the simple steps below to enable individual end users to install your app. If you’re not yet using oAuth 2.0, instructions to migrate are here.
1. Navigate to your Google Developer Console.

2. Select your Google Apps Marketplace project.3. Click APIs under the APIs & auth section.4. Click the gear icon next to Google Apps Marketplace SDK.5. Check Allow Individual Install.
6. Click Save changes.
Categories: Programming

An important announcement for iOS developers using the GooglePlus SDK

Tue, 09/16/2014 - 21:10
Last week, Apple updated their app submission policy requiring that resource bundles not include binaries. In order for your apps to meet these new requirements, you must either replace your existing Google+ iOS SDK with the updated 1.7.1 Google+ iOS SDK that has the files removed or remove the following files from the GooglePlus bundle:

  • GooglePlus.bundle/GPPSignIn3PResources
  • GooglePlus.bundle/GPPCommonSharedResources.bundle/GPPCommonSharedResources
  • GooglePlus.bundle/GPPShareboxSharedResources.bundle/GPPShareboxSharedResources 

Please update your app immediately, or your app will be rejected by Apple. Because the files were only used for versioning, the change will have no impact on your app's functionality.

Posted by Mohamed Zoweil, Software Engineer, Google
Categories: Programming

Docker images for Dart now available

Tue, 09/16/2014 - 16:25
By Søren Gjesse, Software Engineer on Dart

Developers increasingly want to use the same language and business logic on the client and the server to reduce risk and complexity. To help developers easily build and deploy end-to-end Dart apps, we are happy to announce ready-to-use Docker images for Dart. This expands our Docker usage further beyond the recently announced Docker support in Google App Engine. There are now three Dart-related images on hub.docker.com for you to use: dart, dart-runtime and dart-hello, which uses the same naming scheme as the corresponding Node, Python and Go images already offered.

The image google/dart adds the Dart SDK to google/debian Debian wheezy image. Running Dart in a container is now as simple as this:

  $ docker run -i -t google/dart /usr/bin/dart --version

The image google/dart-runtime inherits from google/dart, and provides a convenient way to run a Dart server application using a one line Dockerfile. To inherit from google/dart-runtime, your server application requires the following layout:

  • has a the pubspec.yaml and pubspec.lock files listing its dependencies.
  • has a file bin/server.dart as the entrypoint script.
  • listens on port 8080

With this layout and a Dockerfile with the following content:

FROM google/dart-runtime

You can run your app in a container as simple as this:

  $ docker build -t my-app .
  $ docker run -d -p 8080:8080 my-app

The last image google/dart-hello is a sample Dart server application, that inherits from dart/runtime. Here is an example of how to run the sample:

  $ docker run -d -p 8080:8080 google/dart-hello

Depending on your local Docker installation the address of the server differs. If you are using boot2docker with the default configuration you can talk to the Dart server in the docker container on http://192.168.59.103:8080:

  $ curl http://192.168.59.103:8080/version

You can choose specific version tags, such as 1.6.0 (recommended), or choose the ‘latest’ tag for the latest stable version. Here is an example of running Dart 1.6 with Docker:

  $ docker run -i -t google/dart:1.6.0 /usr/bin/dart --version

If you haven't already, go and install boot2docker and start building you Dart server application using Docker images. Pushing these images to you server will simplify deployment and ensure you are running the same code on your server as you have been testing locally.

Posted by Mano Marks, Google Developer Platform Team
Categories: Programming

Announcing $100,000 for Startups on Google Cloud Platform

Fri, 09/12/2014 - 16:12
This post originally appeared on the Google Cloud Platform blog 
by Julie Pearl, Director, Developer Relations

Today at the Google for Entrepreneurs Global Partner Summit, Urs Hölzle, Senior Vice President, Technical Infrastructure & Google Fellow announced Google Cloud Platform for Startups. This new program will help eligible early-stage startups take advantage of the cloud and get resources to quickly launch and scale their idea by receiving $100,000 in Cloud Platform credit, 24/7 support, and access to our technical solutions team.

This offer is available to startups around the world through top incubators, accelerators and investors. We are currently working with over 50 global partners to provide this offer to startups who have less than $5 million dollars in funding and have less than $500,000 in annual revenue. In addition, we will continue to add more partners over time.

This offer supports our core Google Cloud Platform philosophy: we want developers to focus on code; not worry about managing infrastructure. Starting today, startups can take advantage of this offer and begin using the same infrastructure platform we use at Google.

Thousands of startups have built successful applications on Google Cloud Platform and those applications have grown to serve tens of millions of users. It has been amazing to watch Snapchat send over 700 million photos and videos a day and Khan Academy teach millions of students. Another example, Headspace, is helping millions of people keep their minds healthier and happier using Cloud Platform for Startups. We look forward to helping the next generation of startups launch great products.

For more information on Google Cloud Platform for Startups, visit http://cloud.google.com/startups.

Posted by Katie Miller, Google Developer Platform Team
Categories: Programming

Optimizing for Bandwidth on Apache and Nginx

Thu, 09/04/2014 - 16:27
This post originally appeared on Webmaster Central
by Jeff Kaufman, Make the Web Fast


Webmaster level: advancedEveryone wants to use less bandwidth: hosts want lower bills, mobile users want to stay under their limits, and no one wants to wait for unnecessary bytes. The web is full of opportunities to save bandwidth: pages served without gzip, stylesheets and JavaScript served unminified, and unoptimized images, just to name a few.So why isn't the web already optimized for bandwidth? If these savings are good for everyone then why haven't they been fixed yet? Mostly it's just been too much hassle. Web designers are encouraged to "save for web" when exporting their artwork, but they don't always remember.  JavaScript programmers don't like working with minified code because it makes debugging harder. You can set up a custom pipeline that makes sure each of these optimizations is applied to your site every time as part of your development or deployment process, but that's a lot of work.

An easy solution for web users is to use an optimizing proxy, like Chrome's. When users opt into this service their HTTP traffic goes via Google's proxy, which optimizes their page loads and cuts bandwidth usage by 50%.  While this is great for these users, it's limited to people using Chrome who turn the feature on and it can't optimize HTTPS traffic.

With Optimize for Bandwidth, the PageSpeed team is bringing this same technology to webmasters so that everyone can benefit: users of other browsers, secure sites, desktop users, and site owners who want to bring down their outbound traffic bills. Just install the PageSpeed module on your Apache or Nginx server [1], turn on Optimize for Bandwidth in your configuration, and PageSpeed will do the rest.

If you later decide you're interested in PageSpeed's more advanced optimizations, from cache extension and inlining to the more aggressive image lazyloading and defer JavaScript, it's just a matter of enabling them in your PageSpeed configuration.

Learn more about installing PageSpeed or enabling Optimize for Bandwidth.
[1] If you're using a different web server, consider running PageSpeed on an Apache or Nginx proxy.  And it's all open source, with porting efforts underway for IIS, ATS, and others.

Posted by Mano Marks, Google Developer Platform Team
Categories: Programming

Runtastic on Android Wear

Tue, 09/02/2014 - 16:00

By Austin Robison, Product Manager, Android Wear




Fitness apps make  great additions to Android Wear. Let’s take a look at one of our favorites, Runtastic. Runtastic is a fitness app that lets you track your walks, runs, bike rides and more. With Runtastic on Android Wear, you'll see your time, distance, and calories burned at a glance on your wrist. You can also start, stop and pause your activity by touch. Tuck your phone away in a pocket or backpack and do everything on your watch.

It's challenging to build user experiences that really come alive on Android Wear because it's such a new type of device. Runtastic does a great job of showing the right information and providing just the right controls on the screen on your wrist. Let's dig into some of the Android Wear platform features that Runtastic uses to make such a great user experience.Voice ActionsAndroid Wear enables developers to launch their activities with voice. Runtastic responds to “Ok Google, start running” by beginning to track a session and displaying a card with your total time. This means you can start exercising without needing to pull your phone out of a pocket or arm strap. Android Wear is all about bringing you useful information just when you need it and enabling users to quickly and easily take action.

runtastic_01.png

Responding to platform voice intents on Wear is as simple as declaring a standard intent filter to start an activity.  For example, to launch your activity for the “start running” voice action, add the following to your activity’s entry in your AndroidManifest.xml:

<intent-filter>    <action android:name="vnd.google.fitness.TRACK"/>    <category android:name="android.intent.category.DEFAULT"/>    <data android:mimeType="vnd.google.fitness.activity/running"/></intent-filter>

Custom CardsOnce a user has started a run, Runtastic inserts a card in the stream as an ongoing notification to ensure it is ranked near the top of the stream during the activity. This card uses the setDisplayIntent() function to display custom UI. It provides quick, glanceable information, showing your activity time. Cool!

When the user swipes to the right of the card to expose its actions, we see some quick and easy to understand options; following the Android Wear style guidelines means that Runtastic has a familiar UI and feels like a natural extension of the watch. There are actions for pausing, stopping, and an action to see more details on the run.  This action launches a full screen Activity where Runtastic draws a completely custom layout.



You’ll notice this data updates live; Runtastic makes use of the Wearable Data Layer API in Google Play Services to synchronize data between the phone and the watch. It's an easy to use API for syncing data between your devices.

Background ServicesWhen a user finishes their run, Runtastic presents them with a special summary card that appears only on the watch. In this case, the notification is generated directly on the watch by a Service. This Service uses the Data Layer to receive information about the completed activity from the phone to the watch, including an image of a map of the user’s run generated through the Google Maps API.

To show that information, the app uses Android Wear’s NotificationManager, which functions just like the NotificationManager on a phone or tablet, except that instead of creating notifications in the pull-down shade, they appear in the stream.



Runtastic's implementation on Android Wear is a perfect example of how to take advantage of wearables to make something truly useful for users. For more information on these and other great platform features, please see the developer documentation.

For more inspiring Android Wear user experiences, check out this collection on the Play Store!

Posted by Mano Marks, Google Developer Platform Team
Categories: Programming

The Web Search API is Retiring

Fri, 08/29/2014 - 13:00
Posted by Dan Ciruli, Product Manager


On November 1, 2010, we announced the deprecation of the Web Search API. As per our policy at the time, we supported the API for a three year period (and beyond), but as all things come to an end, so has its deprecation window.

We are now announcing the turndown of the Web Search API. You may wish to look at our Custom Search API (note: it has a free quota of 100 queries per day).
The service will cease operations on September 29th, 2014.
Categories: Programming