# Go and the Google Cloud Platform
12 Jun 2013
Summary: In 2011 we announced the [Go runtime for App Engine](https://developers.google.com/appengine/docs/go/overview). Since then, we have continued to improve the Go App Engine experience, and generally improved Go support for the Google Cloud Platform. For instance, the [google-api-go-client](http://code.google.com/p/google-api-go-client) provides a Go interface to a range of Google's public APis, including Compute Engine, Cloud Storage, BigQuery, Drive, and many more.

Andrew Gerrand

## Introduction

In 2011 we announced the [Go runtime for App Engine](https://developers.google.com/appengine/docs/go/overview).
Since then, we have continued to improve the Go App Engine experience,
and generally improved Go support for the Google Cloud Platform.
For instance, the [google-api-go-client](http://code.google.com/p/google-api-go-client) provides
a Go interface to a range of Google's public APis,
including Compute Engine, Cloud Storage, BigQuery,
Drive, and many more.

Learn more by watching these talks from Google I/O this year:

## High Performance Apps with Go on App Engine

_The Go runtime for App Engine is a high performance engine for_
_running web applications. It produces fast responses,_
_starts instances in a fraction of a second, makes the most use_
_of instance hours, and allows your app to do serious processing_
_at full machine speed._
_Come along to hear how to fully exploit the power of Go on App_
_Engine and make your web applications the best they can be._

.iframe //www.youtube.com/embed/fc25ihfXhbg 309 549

## All the Ships in the World

Visualizing Data with Google Cloud and Maps

_Tens of thousands of ships report their position at least once_
_every 5 minutes, 24 hours a day._
_Visualizing that quantity of data and serving it out to large_
_numbers of people takes lots of power both in the browser and on the server._
_This session will explore the use of Maps,_
_App Engine, Go, Compute Engine, BigQuery, Cloud Storage,_
_and WebGL to do massive data visualization._

.iframe //www.youtube.com/embed/MT7cd4M9vzs 309 549
