CINXE.COM

Official Google Cloud Blog: January 2015

<!DOCTYPE html> <html class='v2 list-page' dir='ltr' itemscope='' itemtype='http://schema.org/Blog' lang='en' xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'> <head> <link href='https://www.blogger.com/static/v1/widgets/3566091532-css_bundle_v2.css' rel='stylesheet' type='text/css'/> <title> Official Google Cloud Blog: January 2015 </title> <meta content='width=device-width, height=device-height, minimum-scale=1.0, initial-scale=1.0, user-scalable=0' name='viewport'/> <meta content='IE=Edge' http-equiv='X-UA-Compatible'/> <meta content='Official Google Cloud Blog' property='og:title'/> <meta content='en_US' property='og:locale'/> <meta content='https://cloud.googleblog.com/2015/01/' property='og:url'/> <meta content='Official Google Cloud Blog' property='og:site_name'/> <!-- Twitter Card properties --> <meta content='Official Google Cloud Blog' property='og:title'/> <meta content='summary' name='twitter:card'/> <meta content='@gsuite' name='twitter:creator'/> <link href='https://fonts.googleapis.com/css?family=Roboto:400italic,400,500,500italic,700,700italic' rel='stylesheet' type='text/css'/> <link href='https://fonts.googleapis.com/icon?family=Material+Icons' rel='stylesheet'/> <script src='https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js' type='text/javascript'></script> <!-- End --> <style id='page-skin-1' type='text/css'><!-- /* <Group description="Header Color" selector="header"> <Variable name="header.background.color" description="Header Background" type="color" default="#ffffff"/> </Group> */ .header-outer { border-bottom: 1px solid #e0e0e0; background: #ffffff; } html, .Label h2, #sidebar .rss a, .BlogArchive h2, .FollowByEmail h2.title, .widget .post h2 { font-family: Roboto, sans-serif; } .plusfollowers h2.title, .post h2.title, .widget h2.title { font-family: Roboto, sans-serif; } .widget-item-control { height: 100%; } .widget.Header, #header { position: relative; height: 100%; width: 100%; } } .widget.Header .header-logo1 { float: left; margin-right: 15px; padding-right: 15px; border-right: 1px solid #ddd; } .header-title h2 { color: rgba(0,0,0,.54); display: inline-block; font-size: 40px; font-family: Roboto, sans-serif; font-weight: normal; line-height: 56px; vertical-align: top; margin-left:5px; } .header-inner { background-repeat: no-repeat; background-position: right 0px; } .post-author, .byline-author { font-size: 14px; font-weight: normal; color: #757575; color: rgba(0,0,0,.54); } .post-content .img-border { border: 1px solid rgb(235, 235, 235); padding: 4px; } .header-title a { text-decoration: none !important; } pre { border: 1px solid #bbbbbb; margin-top: 1em 0 0 0; padding: 0.99em; overflow-x: auto; overflow-y: auto; } pre, code { font-size: 9pt; background-color: #fafafa; line-height: 125%; font-family: monospace; } pre, code { color: #060; font: 13px/1.54 "courier new",courier,monospace; } .header-left .header-logo1 { width: 128px !important; } .header-desc { line-height: 20px; margin-top: 8px; } .fb-custom img, .twitter-custom img, .gplus-share img { cursor: pointer; opacity: 0.54; } .fb-custom img:hover, .twitter-custom img:hover, .gplus-share img:hover { opacity: 0.87; } .fb-like { width: 80px; } .post .share { float: right; } #twitter-share{ border: #CCC solid 1px; border-radius: 3px; background-image: -webkit-linear-gradient(top,#ffffff,#dedede); } .twitter-follow { background: url(//4.bp.blogspot.com/-8O7VcmcY32o/VSYkC2vUj7I/AAAAAAAAHeU/7mzo-JFgTgk/s1600/twitter-bird.png) no-repeat left center; padding-left: 18px; font: normal normal normal 11px/18px 'Helvetica Neue',Arial,sans-serif; font-weight: bold; text-shadow: 0 1px 0 rgba(255,255,255,.5); cursor: pointer; margin-bottom: 10px; } .twitter-fb { padding-top: 2px; } .fb-follow-button { background: -webkit-linear-gradient(#4c69ba, #3b55a0); background: -moz-linear-gradient(#4c69ba, #3b55a0); background: linear-gradient(#4c69ba, #3b55a0); border-radius: 2px; height: 18px; padding: 4px 0 0 3px; width: 57px; border: #4c69ba solid 1px; } .fb-follow-button a { text-decoration: none !important; text-shadow: 0 -1px 0 #354c8c; text-align: center; white-space: nowrap; font-size: 11px; color: white; vertical-align: top; } .fb-follow-button a:visited { color: white; } .fb-follow { padding: 0px 5px 3px 0px; width: 14px; vertical-align: bottom; } .gplus-wrapper { margin-top: 3px; display: inline-block; vertical-align: top; } .twitter-custom, .gplus-share { margin-right: 12px; } .fb-follow-button{ margin: 10px auto; } /** CUSTOM CODE **/ --></style> <style id='template-skin-1' type='text/css'><!-- .header-outer { clear: both; } .header-inner { margin: auto; padding: 0px; } .footer-outer { background: #f5f5f5; clear: both; margin: 0; } .footer-inner { margin: auto; padding: 0px; } .footer-inner-2 { /* Account for right hand column elasticity. */ max-width: calc(100% - 248px); } .google-footer-outer { clear: both; } .cols-wrapper, .google-footer-outer, .footer-inner, .header-inner { max-width: 978px; margin-left: auto; margin-right: auto; } .cols-wrapper { margin: auto; clear: both; margin-top: 60px; margin-bottom: 60px; overflow: hidden; } .col-main-wrapper { float: left; width: 100%; } .col-main { margin-right: 278px; max-width: 660px; } .col-right { float: right; width: 248px; margin-left: -278px; } /* Tweaks for layout mode. */ body#layout .google-footer-outer { display: none; } body#layout .header-outer, body#layout .footer-outer { background: none; } body#layout .header-inner { height: initial; } body#layout .cols-wrapper { margin-top: initial; margin-bottom: initial; } --></style> <!-- start all head --> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='blogger' name='generator'/> <link href='https://cloud.googleblog.com/favicon.ico' rel='icon' type='image/x-icon'/> <link href='https://cloud.googleblog.com/2015/01/' rel='canonical'/> <link rel="alternate" type="application/atom+xml" title="Official Google Cloud Blog - Atom" href="https://cloud.googleblog.com/feeds/posts/default" /> <link rel="alternate" type="application/rss+xml" title="Official Google Cloud Blog - RSS" href="https://cloud.googleblog.com/feeds/posts/default?alt=rss" /> <link rel="service.post" type="application/atom+xml" title="Official Google Cloud Blog - Atom" href="https://www.blogger.com/feeds/6567687196385815607/posts/default" /> <!--Can't find substitution for tag [blog.ieCssRetrofitLinks]--> <meta content='https://cloud.googleblog.com/2015/01/' property='og:url'/> <meta content='Official Google Cloud Blog' property='og:title'/> <meta content='Built in the cloud. Engineered for your enterprise.' property='og:description'/> <!-- end all head --> <base target='_self'/> <style> html { font-family: Roboto, sans-serif; -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; } body { padding: 0; /* This ensures that the scroll bar is always present, which is needed */ /* because content render happens after page load; otherwise the header */ /* would "bounce" in-between states. */ min-height: 150%; } h2 { font-size: 16px; } h1, h2, h3, h4, h5 { line-height: 2em; } html, h4, h5, h6 { font-size: 14px; } a, a:visited { color: #4184F3; text-decoration: none; } a:focus, a:hover, a:active { text-decoration: none; } .Header { margin-top: 15px; } .Header h1 { font-size: 32px; font-weight: 300; line-height: 32px; height: 42px; } .header-inner .Header .titlewrapper { padding: 0; margin-top: 30px; } .header-inner .Header .descriptionwrapper { padding: 0; margin: 0; } .cols-wrapper { margin-top: 56px; } .header-outer, .cols-wrapper, .footer-outer, .google-footer-outer { padding: 0 60px; } .header-inner { height: 256px; position: relative; } html, .header-inner a { color: #212121; color: rgba(0,0,0,.87); } .header-inner .google-logo { display: inline-block; background-size: contain; z-index: 1; height: 50px; overflow: hidden; margin-top: 4px; } .header-left { position: absolute; top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%); margin-top: 12px; width: 100%; } .google-logo { margin-left: -4px; } #google-footer { position: relative; font-size: 13px; list-style: none; text-align: right; } #google-footer a { color: #444; } #google-footer ul { margin: 0; padding: 0; height: 144px; line-height: 144px; } #google-footer ul li { display: inline; } #google-footer ul li:before { color: #999; content: "\00b7"; font-weight: bold; margin: 5px; } #google-footer ul li:first-child:before { content: ''; } #google-footer .google-logo-dark { left: 0; margin-top: -16px; position: absolute; top: 50%; } /** Sitemap links. **/ .footer-inner-2 { font-size: 14px; padding-top: 42px; padding-bottom: 74px; } .footer-inner-2 .HTML h2 { color: #212121; color: rgba(0,0,0,.87); font-size: 14px; font-weight: 500; padding-left: 0; margin: 10px 0; } .footer-inner-2 .HTML ul { font-weight: normal; list-style: none; padding-left: 0; } .footer-inner-2 .HTML li { line-height: 24px; padding: 0; } .footer-inner-2 li a { color: rgba(65,132,243,.87); } /** Archive widget. **/ .BlogArchive { font-size: 13px; font-weight: normal; } .BlogArchive .widget-content { display: none; } .BlogArchive h2, .Label h2 { color: #4184F3; text-decoration: none; } .BlogArchive .hierarchy li { display: inline-block; } /* Specificity needed here to override widget CSS defaults. */ .BlogArchive #ArchiveList ul li, .BlogArchive #ArchiveList ul ul li { margin: 0; padding-left: 0; text-indent: 0; } .BlogArchive .intervalToggle { cursor: pointer; } .BlogArchive .expanded .intervalToggle .new-toggle { -ms-transform: rotate(180deg); transform: rotate(180deg); } .BlogArchive .new-toggle { float: right; padding-top: 3px; opacity: 0.87; } #ArchiveList { text-transform: uppercase; } #ArchiveList .expanded > ul:last-child { margin-bottom: 16px; } #ArchiveList .archivedate { width: 100%; } /* Months */ .BlogArchive .items { max-width: 150px; margin-left: -4px; } .BlogArchive .expanded .items { margin-bottom: 10px; overflow: hidden; } .BlogArchive .items > ul { float: left; height: 32px; } .BlogArchive .items a { padding: 0 4px; } .Label { font-size: 13px; font-weight: normal; } .sidebar-icon { display: inline-block; width: 24px; height: 24px; vertical-align: middle; margin-right: 12px; margin-top: -1px } .Label a { margin-right: 4px; } .Label .widget-content { display: none; } .FollowByEmail { font-size: 13px; font-weight: normal; } .FollowByEmail h2 { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAALCAYAAACZIGYHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUBJREFUeNrMkSGLAlEUhb+ZB4JFi8mx2cz+ApvhRUGTcUCrNqNJDYIi+DO0GUwmQXDK2DSIoGgZcSaIjDrzwrK4ssvChj1w0733O+fdp+m6PozH4yQSCfb7Pa7r8pOi0SjJZBLP8zgej4gAIMvlMuPxmADIYrHger1+C6lUKmo+NJ/NZojb7SZDWiwWo1qtks1msW2bw+HwZdkwDHq9HvV6nel0SqvVYrvdIh6Ph3Qch+VyqRYLhQJSSjRNw7IsfN9XgGKxSLfbJZfL0e/3aTabrFYr7vc7IujLcOh8PqunrNdr0uk0pVKJVCpFJBJRgEajweVyod1uMxgM2O12BAGUgRbU8DV2JpOhVquRz+cRQii3+XxOp9NRN3jVR5LPOp1OjEYjlSL8hclkgmmabDabt4d+m+S30vkD/R/IU4ABAPTZgnZdmG/PAAAAAElFTkSuQmCC"); background-repeat: no-repeat; background-position: 0 50%; text-indent: 30px; } .FollowByEmail .widget-content { display: none; } .searchBox input { border: 1px solid #eee; color: #212121; color: rgba(0,0,0,.87); font-size: 14px; padding: 8px 8px 8px 40px; width: 164px; font-family: Roboto, sans-serif; background: url("https://www.gstatic.com/images/icons/material/system/1x/search_grey600_24dp.png") 8px center no-repeat; } .searchBox ::-webkit-input-placeholder { /* WebKit, Blink, Edge */ color: rgba(0,0,0,.54); } .searchBox :-moz-placeholder { /* Mozilla Firefox 4 to 18 */ color: #000; opacity: 0.54; } .searchBox ::-moz-placeholder { /* Mozilla Firefox 19+ */ color: #000; opacity: 0.54; } .searchBox :-ms-input-placeholder { /* Internet Explorer 10-11 */ color: #757575; } .widget-item-control { margin-top: 0px; } .section { margin: 0; padding: 0; } #sidebar-top { border: 1px solid #eee; } #sidebar-top > div { margin: 16px 0; } .widget ul { line-height: 1.6; } /*main post*/ .post { margin-bottom:30px; } #main .post .title { margin: 0; } #main .post .title a { color: #212121; color: rgba(0,0,0,.87); font-weight: normal; font-size: 24px; } #main .post .title a:hover { text-decoration:none; color:#4184F3; } .message, #main .post .post-header { margin: 0; padding: 0; } #main .post .post-header .caption, #main .post .post-header .labels-caption, #main .post .post-footer .caption, #main .post .post-footer .labels-caption { color: #444; font-weight: 500; } #main .tr-caption-container td { text-align: left; } #main .post .tr-caption { color: #757575; color: rgba(0,0,0,.54); display: block; max-width: 560px; padding-bottom: 20px; } #main .post .tr-caption-container { line-height: 24px; margin: -1px 0 0 0 !important; padding: 4px 0; text-align: left; } #main .post .post-header .published{ font-size:11px; font-weight:bold; } .post-header .publishdate { font-size: 17px; font-weight:normal; color: #757575; color: rgba(0,0,0,.54); } #main .post .post-footer{ font-size:12px; padding-bottom: 21px; } .label-footer { margin-bottom: 12px; margin-top: 12px; } .comment-img { margin-right: 16px; opacity: 0.54; vertical-align: middle; } #main .post .post-header .published { margin-bottom: 40px; margin-top: -2px; } .post .post-content { color: #212121; color: rgba(0,0,0,.87); font-size: 17px; margin: 25px 0 36px 0; line-height: 32px; } .post-body .post-content ul, .post-body .post-content ol { margin: 16px 0; padding: 0 48px; } .post-summary { display: none; } /* Another old-style caption. */ .post-content div i, .post-content div + i { font-size: 14px; font-style: normal; color: #757575; color: rgba(0,0,0,.54); display: block; line-height: 24px; margin-bottom: 16px; text-align: left; } /* Another old-style caption (with link) */ .post-content a > i { color: #4184F3 !important; } /* Old-style captions for images. */ .post-content .separator + div:not(.separator) { margin-top: -16px; } /* Capture section headers. */ .post-content br + br + b, .post-content .space + .space + b, .post-content .separator + b { display: inline-block; margin-bottom: 8px; margin-top: 24px; } .post-content li { line-height: 32px; } /* Override all post images/videos to left align. */ .post-content .separator, .post-content > div { text-align: left; } .post-content .separator > a, .post-content .separator > span { margin-left: 0 !important; } .post-content img { max-width: 100%; height: auto; width: auto; } .post-content .tr-caption-container img { margin-bottom: 12px; } .post-content iframe, .post-content embed { max-width: 100%; } .post-content .carousel-container { margin-bottom: 48px; } #main .post-content b { font-weight: 500; } /* These are the main paragraph spacing tweaks. */ #main .post-content br { content: ' '; display: block; padding: 4px; } .post-content .space { display: block; height: 8px; } .post-content iframe + .space, .post-content iframe + br { padding: 0 !important; } #main .post .jump-link { margin-bottom:10px; } .post-content img, .post-content iframe { margin: 30px 0 20px 0; } .post-content > img:first-child, .post-content > iframe:first-child { margin-top: 0; } .col-right .section { padding: 0 16px; } #aside { background:#fff; border:1px solid #eee; border-top: 0; } #aside .widget { margin:0; } #aside .widget h2, #ArchiveList .toggle + a.post-count-link { color: #212121; color: rgba(0,0,0,.87); font-weight: 400 !important; margin: 0; } #ArchiveList .toggle { float: right; } #ArchiveList .toggle .material-icons { padding-top: 4px; } #sidebar .tab { cursor: pointer; } #sidebar .tab .arrow { display: inline-block; float: right; } #sidebar .tab .icon { display: inline-block; vertical-align: top; height: 24px; width: 24px; margin-right: 13px; margin-left: -1px; margin-top: 1px; color: #757575; color: rgba(0,0,0,.54); } #sidebar .widget-content > :first-child { padding-top: 8px; } #sidebar .active .tab .arrow { -ms-transform: rotate(180deg); transform: rotate(180deg); } #sidebar .arrow { color: #757575; color: rgba(0,0,0,.54); } #sidebar .widget h2 { font-size: 14px; line-height: 24px; display: inline-block; } #sidebar .widget .BlogArchive { padding-bottom: 8px; } #sidebar .widget { border-bottom: 1px solid #eee; box-shadow: 0px 1px 0 white; margin-bottom: 0; padding: 14px 0; min-height: 20px; } #sidebar .widget:last-child { border-bottom: none; box-shadow: none; margin-bottom: 0; } #sidebar ul { margin: 0; padding: 0; } #sidebar ul li { list-style:none; padding:0; } #sidebar ul li a { line-height: 32px; } #sidebar .archive { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAYCAYAAADzoH0MAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE1JREFUeNpiNDY23s9AAWBioBCwYBM8c+YMVsUmJibEGYBNMS5DaeMFfDYSZQA2v9I3FrB5AZeriI4FmnrBccCT8mhmGs1MwyAzAQQYAKEWG9zm9QFEAAAAAElFTkSuQmCC"); height: 24px; line-height: 24px; padding-left: 30px; } #sidebar .labels { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUxJREFUeNpiNDY23s9AAMycOfM7UF05kHkZmzwTMkdSUhKrIcXFxZy3bt3qBjIN8RrS09PDsHnzZjCNDr58+cKQlpbGDjSoHcg1w2oIyAUODg5gARCNzUVIBrUCuVYYhjx//pzhwIEDYAEQDeJjA1CDWIAGNQK59jBxRuSABbkAlwHIgIeHh2HWrFn/1NTU2oDcvSgBS4wBSC5iArqoCsj1YGIgEyAZVMoEchqlBjEB/cZAiUHg2AEGznpKDAImxOeM////B4VLKtBvEUCngZ1ILKivr3/u6+ubBzJAGZQ9gC5aQoqLgAY8BhkAZL4BuQQkxgXE34A4BuiiZEIuAhrwEGhAEZD5DpzYoIaA2UAM4kQADUrHZRDUgAIg8wO2XAwzbQXQa5OweQ1owB10AyA6gS7BgX1u3ry5397eHow3bdo0EyjGi00tQIABANPgyAH1q1eaAAAAAElFTkSuQmCC"); height: 20px; line-height: 20px; padding-left: 30px; } #sidebar .rss a { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX5JREFUeNqsVDGSgkAQHL2rIiIikohIc/EBRkbwAIwuwgfwAXiAD9AHSI7kEkECRCb6AIyINDLx7K0aa6kT7uq0q7YYtnZ7umdnt7darXbr9Zpegeu61DNNc0dvwCcH4/GYJpMJnc9nOhwOVJbl/4hAAokMECZJQtvt9k+kH7qufyEYDAakqqqYxFdRFBqNRmTbNg2HQ0rTlK7XayvR0xqBdDqdkuM4dE/0ULhYLOh4PHYrknG5XGi/31MYhuL/nkwonM1mlGUZ1XXdrsiyLGEDhY7juJEZ1u5tIixDGdYhmYw+B7CAzPP5nDabjdgIAgCksMX1832/3drtdqPT6SQWapomiGEFNkDEdpDMMAzK81ys/7XYy+XyoQgq2WoURSIJ2iIIgp/WZCCTvFm2wgeAU31aI3Q2GhIDMeB53qPYPIcm5VrxXIOIOxsDMStjVawAc1VViRgN22lNBiuQN3GR+SY07hpOoStmFQAKXRRFY93bnpG+fONfedi+BRgAbkS8Fxp7QQIAAAAASUVORK5CYII="); } #sidebar .subscription a { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAALCAYAAACZIGYHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUBJREFUeNrMkSGLAlEUhb+ZB4JFi8mx2cz+ApvhRUGTcUCrNqNJDYIi+DO0GUwmQXDK2DSIoGgZcSaIjDrzwrK4ssvChj1w0733O+fdp+m6PozH4yQSCfb7Pa7r8pOi0SjJZBLP8zgej4gAIMvlMuPxmADIYrHger1+C6lUKmo+NJ/NZojb7SZDWiwWo1qtks1msW2bw+HwZdkwDHq9HvV6nel0SqvVYrvdIh6Ph3Qch+VyqRYLhQJSSjRNw7IsfN9XgGKxSLfbJZfL0e/3aTabrFYr7vc7IujLcOh8PqunrNdr0uk0pVKJVCpFJBJRgEajweVyod1uMxgM2O12BAGUgRbU8DV2JpOhVquRz+cRQii3+XxOp9NRN3jVR5LPOp1OjEYjlSL8hclkgmmabDabt4d+m+S30vkD/R/IU4ABAPTZgnZdmG/PAAAAAElFTkSuQmCC"); } #sidebar-bottom { background: #f5f5f5; border-top:1px solid #eee; } #sidebar-bottom .widget { border-bottom: 1px solid #e0e0e0; padding: 15px 0; text-align: center; } #sidebar-bottom > div:last-child { border-bottom: 0; } #sidebar-bottom .text { line-height: 20px; } /* Home, forward, and backward pagination. */ .blog-pager { border-top : 1px #e0e0e0 solid; padding-top: 10px; margin-top: 15px; text-align: right !important; } #blog-pager { margin-botom: 0; margin-top: -14px; padding: 16px 0 0 0; } #blog-pager a { display: inline-block; } .blog-pager i.disabled { opacity: 0.2 !important; } .blog-pager i { color: black; margin-left: 16px; opacity: 0.54; } .blog-pager i:hover, .blog-pager i:active { opacity: 0.87; } #blog-pager-older-link, #blog-pager-newer-link { float: none; } .gplus-profile { background-color: #fafafa; border: 1px solid #eee; overflow: hidden; width: 212px; } .gplus-profile-inner { margin-left: -1px; margin-top: -1px; } /* Sidebar follow buttons. */ .followgooglewrapper { padding: 12px 0 0 0; } .loading { visibility: hidden; } .detail-page .post-footer .cmt_iframe_holder { padding-top: 40px !important; } /** Desktop **/ @media (max-width: 900px) { .col-right { display: none; } .col-main { margin-right: 0; min-width: initial; } .footer-outer { display: none; } .cols-wrapper { min-width: initial; } .google-footer-outer { background-color: #f5f5f5; } } /** Tablet **/ @media (max-width: 712px) { .header-outer, .cols-wrapper, .footer-outer, .google-footer-outer { padding: 0 40px; } } /* An extra breakpoint accommodating for long blog titles. */ @media (max-width: 600px) { .header-left { height: 100%; top: inherit; margin-top: 0; -webkit-transform: initial; transform: initial; } .header-title { margin-top: 18px; } .header-inner .google-logo { height: 40px; margin-top: 3px; } .header-inner .google-logo img { height: 35px; } .header-title h2 { font-size: 32px; line-height: 36px; } .header-desc { bottom: 24px; position: absolute; } } /** Mobile/small desktop window; also landscape. **/ @media (max-width: 480px), (max-height: 480px) { .header-outer, .cols-wrapper, .footer-outer, .google-footer-outer { padding: 0 16px; } .cols-wrapper { margin-top: 0; } .post-header .publishdate, .post .post-content { font-size: 16px; } .post .post-content { line-height: 28px; margin-bottom: 30px; } .post { margin-top: 30px; } .byline-author { display: block; font-size: 12px; line-height: 24px; margin-top: 6px; } #main .post .title a { font-weight: 500; color: #4c4c4c; color: rgba(0,0,0,.70); } #main .post .post-header { padding-bottom: 12px; } #main .post .post-header .published { margin-bottom: -8px; margin-top: 3px; } .post .read-more { display: block; margin-top: 14px; } .post .tr-caption { font-size: 12px; } #main .post .title a { font-size: 20px; line-height: 30px; } .post-content iframe { /* iframe won't keep aspect ratio when scaled down. */ max-height: 240px; } .post-content .separator img, .post-content .tr-caption-container img, .post-content iframe { margin-left: -16px; max-width: inherit; width: calc(100% + 32px); } .post-content table, .post-content td { width: 100%; } #blog-pager { margin: 0; padding: 16px 0; } /** List page tweaks. **/ .list-page .post-original { display: none; } .list-page .post-summary { display: block; } .list-page .comment-container { display: none; } .list-page #blog-pager { padding-top: 0; border: 0; margin-top: -8px; } .list-page .label-footer { display: none; } .list-page #main .post .post-footer { border-bottom: 1px solid #eee; margin: -16px 0 0 0; padding: 0 0 20px 0; } .list-page .post .share { display: none; } /** Detail page tweaks. **/ .detail-page .post-footer .cmt_iframe_holder { padding-top: 32px !important; } .detail-page .label-footer { margin-bottom: 0; } .detail-page #main .post .post-footer { padding-bottom: 0; } .detail-page #comments { display: none; } } [data-about-pullquote], [data-is-preview], [data-about-syndication] { display: none; } </style> <noscript> <style> .loading { visibility: visible }</style> </noscript> <script type='text/javascript'> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-18038-3', 'auto', 'blogger'); ga('blogger.send', 'pageview'); </script> <link href='https://www.blogger.com/dyn-css/authorization.css?targetBlogID=6567687196385815607&amp;zx=e76fb540-b24b-49b0-9255-53fe5dfedfeb' media='none' onload='if(media!=&#39;all&#39;)media=&#39;all&#39;' rel='stylesheet'/><noscript><link href='https://www.blogger.com/dyn-css/authorization.css?targetBlogID=6567687196385815607&amp;zx=e76fb540-b24b-49b0-9255-53fe5dfedfeb' rel='stylesheet'/></noscript> <meta name='google-adsense-platform-account' content='ca-host-pub-1556223355139109'/> <meta name='google-adsense-platform-domain' content='blogspot.com'/> </head> <body> <script type='text/javascript'> //<![CDATA[ var axel = Math.random() + ""; var a = axel * 10000000000000; document.write('<iframe src="https://2542116.fls.doubleclick.net/activityi;src=2542116;type=gblog;cat=googl0;ord=ord=' + a + '?" width="1" height="1" frameborder="0" style="display:none"></iframe>'); //]]> </script> <noscript> <img alt='' height='1' src='https://ad.doubleclick.net/ddm/activity/src=2542116;type=gblog;cat=googl0;ord=1?' width='1'/> </noscript> <!-- Header --> <div class='header-outer'> <div class='header-inner'> <div class='section' id='header'><div class='widget Header' data-version='1' id='Header1'> <div class='header-left'> <div class='header-title'> <a class='google-logo' href='https://cloud.googleblog.com/'> <img height="50" src="//3.bp.blogspot.com/-a3v4BOp6LoU/V-y9lFzsb_I/AAAAAAAATGY/aD_EUNu9X4MHVu3ScQH38S2yvyNAVON9ACK4B/s1600/logo_lockup_cloud_color.png"> </a> <a href='/.'> <h2> Official Blog </h2> </a> </div> <div class='header-desc'> Built in the cloud. Engineered for your enterprise. </div> </div> </div></div> </div> </div> <!-- all content wrapper start --> <div class='cols-wrapper loading'> <div class='col-main-wrapper'> <div class='col-main'> <div class='section' id='main'><div class='widget Blog' data-version='1' id='Blog1'> <div class='post' data-id='7237295379907042915' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://cloud.googleblog.com/2015/01/VMware-to-make-Google-Cloud-Platform-available-to-its-customers.html' itemprop='url' title='VMware to make Google Cloud Platform available to its customers'> VMware to make Google Cloud Platform available to its customers </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Thursday, January 29, 2015 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> <span class="byline-author">Posted by Murali Sitaram, Managing Director, Global Partner Strategy &amp; Alliances, Google for Work</span> <br /> <br /> <i>(Cross-posted on the <a href="http://googlecloudplatform.blogspot.com/2015/01/VMware-to-make-Google-Cloud-Platform-available-to-its-customers.html" target="_blank">Google Cloud Platform Blog</a>)</i> <br /> <br /> Many businesses around the world rely on VMware datacenter virtualization solutions to virtualize their infrastructure and optimize the agility and efficiency of their data centers. Today we&#8217;re excited to announce that we are teaming up with VMware to make select Google Cloud Platform services available to VMware customers via vCloud Air, VMware&#8217;s hybrid cloud platform. We know how valuable flexibility is to a business when determining its total infrastructure solution, and with <a href="http://blogs.vmware.com/tribalknowledge/2015/01/todays-vmware-google-announcement.html" target="_blank">today&#8217;s announcement</a>, enterprise businesses leveraging VMware&#8217;s datacenter virtualization solutions gain the flexibility to easily integrate Google Cloud Platform.<br /> <br /> Businesses can now use Google Cloud Platform tools and services &#8211; including Google BigQuery and Google Cloud Storage &#8211; to increase scale, productivity, and functionality. VMware customers will benefit from the security, scalability, and price performance of Google&#8217;s public cloud, built on the same <a href="//www.google.com/about/datacenters/" target="_blank">infrastructure</a> that allows Google to return billions of search results in milliseconds, serve 6 billion hours of YouTube video per month and provide storage for 425 million <a href="https://www.google.com/work/apps/business/products/gmail/" target="_blank">Gmail</a> users.<br /> <br /> With <a href="https://cloud.google.com/bigquery/" target="_blank">Google BigQuery</a>, <a href="https://cloud.google.com/datastore/" target="_blank">Google Cloud Datastore</a>, <a href="https://cloud.google.com/storage/" target="_blank">Google Cloud Storage</a>, and <a href="https://cloud.google.com/networking/#DNS" target="_blank">Google Cloud DNS</a> directly available via VMware vCloud Air, VMware customers will benefit from a single point of purchase and support for both vCloud Air and Google Cloud Platform:<br /> <br /> <ul> <li>vCloud Air customers will have access to Google Cloud Platform under their existing service contract and existing network interconnect with vCloud Air, and will simply pay for the Google Cloud Platform services they consume.</li> <li>Google Cloud Platform services will be available under the VMware vCloud Air terms of service, and will be fully supported by VMware&#8217;s Global Support and Services (GSS) team.</li> <li>Certain Google Cloud Platform services are also fully covered by VMware&#8217;s Business Associate Agreement (BAA) for US customers who require HIPAA-compliant cloud service.</li> </ul> <br /> Google Cloud Platform services will be available to VMware customers beginning later this year, so we&#8217;ll have more information very soon. In the near future, VMware is also exploring extended support for Google Cloud Platform as part of its vRealize Cloud Management Suite, a management tool for hybrid clouds.<br /> <br /> <a href="http://www.vmware.com/company/news/?sa=D&amp;sntz=1&amp;usg=AFQjCNE6YHN0UZ_j8Xhp-pwwC9MmQEylxg" target="_blank">Today&#8217;s announcement</a> bolsters our joint value proposition to customers and builds on our strong, existing relationship around <a href="http://googleforwork.blogspot.com/2014/02/vmware-to-bring-traditional-windows.html" target="_blank">Chromebooks and VMware View</a> and also around the recently announced <a href="http://googlecloudplatform.blogspot.com/2014/08/containers-vms-kubernetes-and-vmware.html" target="_blank">Kubernetes</a> open-source project. We look forward to welcoming VMware customers to Google Cloud Platform.<br /> <br /></div> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> <span class="byline-author">Posted by Murali Sitaram, Managing Director, Global Partner Strategy &amp; Alliances, Google for Work</span> <br /> <br /> <i>(Cross-posted on the <a href="http://googlecloudplatform.blogspot.com/2015/01/VMware-to-make-Google-Cloud-Platform-available-to-its-customers.html" target="_blank">Google Cloud Platform Blog</a>)</i> <br /> <br /> Many businesses around the world rely on VMware datacenter virtualization solutions to virtualize their infrastructure and optimize the agility and efficiency of their data centers. Today we&#8217;re excited to announce that we are teaming up with VMware to make select Google Cloud Platform services available to VMware customers via vCloud Air, VMware&#8217;s hybrid cloud platform. We know how valuable flexibility is to a business when determining its total infrastructure solution, and with <a href="http://blogs.vmware.com/tribalknowledge/2015/01/todays-vmware-google-announcement.html" target="_blank">today&#8217;s announcement</a>, enterprise businesses leveraging VMware&#8217;s datacenter virtualization solutions gain the flexibility to easily integrate Google Cloud Platform.<br /> <br /> Businesses can now use Google Cloud Platform tools and services &#8211; including Google BigQuery and Google Cloud Storage &#8211; to increase scale, productivity, and functionality. VMware customers will benefit from the security, scalability, and price performance of Google&#8217;s public cloud, built on the same <a href="//www.google.com/about/datacenters/" target="_blank">infrastructure</a> that allows Google to return billions of search results in milliseconds, serve 6 billion hours of YouTube video per month and provide storage for 425 million <a href="https://www.google.com/work/apps/business/products/gmail/" target="_blank">Gmail</a> users.<br /> <br /> With <a href="https://cloud.google.com/bigquery/" target="_blank">Google BigQuery</a>, <a href="https://cloud.google.com/datastore/" target="_blank">Google Cloud Datastore</a>, <a href="https://cloud.google.com/storage/" target="_blank">Google Cloud Storage</a>, and <a href="https://cloud.google.com/networking/#DNS" target="_blank">Google Cloud DNS</a> directly available via VMware vCloud Air, VMware customers will benefit from a single point of purchase and support for both vCloud Air and Google Cloud Platform:<br /> <br /> <ul> <li>vCloud Air customers will have access to Google Cloud Platform under their existing service contract and existing network interconnect with vCloud Air, and will simply pay for the Google Cloud Platform services they consume.</li> <li>Google Cloud Platform services will be available under the VMware vCloud Air terms of service, and will be fully supported by VMware&#8217;s Global Support and Services (GSS) team.</li> <li>Certain Google Cloud Platform services are also fully covered by VMware&#8217;s Business Associate Agreement (BAA) for US customers who require HIPAA-compliant cloud service.</li> </ul> <br /> Google Cloud Platform services will be available to VMware customers beginning later this year, so we&#8217;ll have more information very soon. In the near future, VMware is also exploring extended support for Google Cloud Platform as part of its vRealize Cloud Management Suite, a management tool for hybrid clouds.<br /> <br /> <a href="http://www.vmware.com/company/news/?sa=D&amp;sntz=1&amp;usg=AFQjCNE6YHN0UZ_j8Xhp-pwwC9MmQEylxg" target="_blank">Today&#8217;s announcement</a> bolsters our joint value proposition to customers and builds on our strong, existing relationship around <a href="http://googleforwork.blogspot.com/2014/02/vmware-to-bring-traditional-windows.html" target="_blank">Chromebooks and VMware View</a> and also around the recently announced <a href="http://googlecloudplatform.blogspot.com/2014/08/containers-vms-kubernetes-and-vmware.html" target="_blank">Kubernetes</a> open-source project. We look forward to welcoming VMware customers to Google Cloud Platform.<br /> <br /></div> </noscript> </div> </div> <div class='share'> <span class='gplus-share social-wrapper' data-href='https://plus.google.com/share?url=https://cloud.googleblog.com/2015/01/VMware-to-make-Google-Cloud-Platform-available-to-its-customers.html'> <img alt='Share on Google+' height='24' src='https://www.gstatic.com/images/branding/google_plus/2x/ic_w_post_gplus_black_24dp.png' width='24'/> </span> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Cloud Blog:VMware to make Google Cloud Platform available to its customers&url=https://cloud.googleblog.com/2015/01/VMware-to-make-Google-Cloud-Platform-available-to-its-customers.html&via=gsuite'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://cloud.googleblog.com/2015/01/VMware-to-make-Google-Cloud-Platform-available-to-its-customers.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='comment-container'> <i class='comment-img material-icons'> &#57529; </i> <span class='cmt_count_iframe_holder' data-count='6' data-onclick='' data-post-url='https://cloud.googleblog.com/2015/01/VMware-to-make-Google-Cloud-Platform-available-to-its-customers.html' data-url='https://cloud.googleblog.com/2015/01/VMware-to-make-Google-Cloud-Platform-available-to-its-customers.html' style='color: #4184F3;'></span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://cloud.googleblog.com/2015/01/VMware-to-make-Google-Cloud-Platform-available-to-its-customers.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://cloud.googleblog.com/search/label/customer%20love' rel='tag'> customer love </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Gone%20Google' rel='tag'> Gone Google </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Google%20BigQuery' rel='tag'> Google BigQuery </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Google%20Cloud%20Datastore' rel='tag'> Google Cloud Datastore </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Google%20Cloud%20DNS' rel='tag'> Google Cloud DNS </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Google%20Cloud%20Platform' rel='tag'> Google Cloud Platform </a> , <a class='label' href='https://cloud.googleblog.com/search/label/google%20cloud%20storage' rel='tag'> google cloud storage </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Kubernetes' rel='tag'> Kubernetes </a> </span> </div> </div> </div> <div class='post' data-id='8549793493422635231' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://cloud.googleblog.com/2015/01/mapping-runs-rides-and-fitness-data-using-the-maps-API.html' itemprop='url' title='Strava maps runs, rides and fitness data using the Maps API '> Strava maps runs, rides and fitness data using the Maps API </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Monday, January 26, 2015 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> <span class="byline-author">Posted by Matt Laroche, Android Engineering Lead, Strava</span><br /> <br /> <i><b>Editor's note:</b> Today&#8217;s guest blogger is Matt Laroche, Android Engineering Lead at <a href="http://www.strava.com/" target="_blank">Strava</a>, a social network and community for athletes. See how Strava and other <a href="https://developers.google.com/maps/showcase/" target="_blank">developers</a> are using the <a href="https://developers.google.com/maps/" target="_blank">Google Maps API</a> to bring maps and location content to their users.</i> <br /> <br /> In distance training, runners and cyclists always want to know how far they&#8217;ve gone and track where they&#8217;ve been. At Strava, we provide them with this information and a lot more: we measure, map and analyze the runs and rides of millions of athletes around the world so they can get the most out of their workouts.<br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA_ZZvoeaOoDNybhblyfQdGVAgUQ3MCiTVWYDQwQ-5pSj3v2ULZYVAVQcOVUNrHTbelYaOOkcN5HiG-3ntoeTWDXA1iJ2bQiOKumJysZzEkzyIZRqmJyoqtTFrel-fOUc1QGM03SbBuHY/s1600/STRAVA-+US-RunningActivityDetail.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA_ZZvoeaOoDNybhblyfQdGVAgUQ3MCiTVWYDQwQ-5pSj3v2ULZYVAVQcOVUNrHTbelYaOOkcN5HiG-3ntoeTWDXA1iJ2bQiOKumJysZzEkzyIZRqmJyoqtTFrel-fOUc1QGM03SbBuHY/s1600/STRAVA-+US-RunningActivityDetail.jpg" width="368" /></a></div> <br /> To do this, we use <a href="https://www.google.com/work/mapsearth/products/mapsapi.html" target="_blank">Google Maps</a> to show them exactly where they&#8217;ve run or cycled. We can even help them plan future routes.<br /> <br /> Mapping is a big part of what our members do with Strava. Maps help them relive past workouts, visually share their run or ride with friends, and engage in friendly competition. We started using <a href="https://www.google.com/work/mapsearth/products/mapsapi.html" target="_blank">Google Maps API </a>when we launched five years ago. We tested other mapping providers, but found that Google Maps was the best API for mobile &#8212; it&#8217;s the easiest to use to create new maps, especially when using polylines to draw routes and mark items on a map. It&#8217;s a straightforward, developer-friendly API. <br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinERpArrMvrCGtrdWFY3cbT3OdqZvKyQSu9qbfbqBJk8gPXwuBGQoiBOiqdkyVv49p9Cb_i7vSJHvSbCxzKiur4MHzDyGLcGb8G8p5fuLi2vMNHhaGB_HFYIYqfhxBEMq7v3TMgEWbCOI/s1600/STRAVA-+Routes_And_detailEN.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinERpArrMvrCGtrdWFY3cbT3OdqZvKyQSu9qbfbqBJk8gPXwuBGQoiBOiqdkyVv49p9Cb_i7vSJHvSbCxzKiur4MHzDyGLcGb8G8p5fuLi2vMNHhaGB_HFYIYqfhxBEMq7v3TMgEWbCOI/s1600/STRAVA-+Routes_And_detailEN.jpg" width="368" /></a></div> <br /> <div class="separator" style="clear: both; text-align: center;"> </div> Because maps are key to the Strava experience, we pay close attention to the tools we use and how our members will benefit. Here are three areas we focus on when developing our maps using the Google Maps API:<br /> <br /> <div style="text-align: left;"> <b>Performance</b></div> We compile a huge amount of location data &#8212; including 400 billion GPS data points of the activities our members share from around the world. GPS data can tell us where our members are going in real-time. With the Google Maps API, interaction and display or map tile latency is minimal and rendering was faster than other services we tried, despite the large amounts of data in use. To make the app work even faster, we trimmed down the data points that are delivered back to the user&#8217;s device. <br /> <br /> <div style="text-align: left;"> <b>Control </b></div> Our members spend a lot of time looking at maps on the Strava app and have different needs, although all of them want detailed information. They also want the power to play with different views. With Google Maps, they have a lot of options. They can switch between different map tiles, including normal, satellite and terrain. Terrain view is key for showing them if a particular route will send them uphill, and if so, what elevation changes they can expect. The maps also have an intricate level of detail, such as bike lanes and paths, which gives users vital information for planning their workouts. The interaction is smooth too &#8212; zooming, rotation, and map tilting work in a way our members expect.<br /> <br /> <div style="text-align: left;"> <b>Creativity</b></div> With Google Maps API, we have a lot of room for <a href="http://labs.strava.com/" target="_blank">creativity and experimentation</a>. For example, we created a <a href="http://labs.strava.com/heatmap/#6/-120.90000/38.36000/blue/bike" target="_blank">Heat Map</a> that visualizes the most popular trails and roads based on 160 million rides and runs. Our <a href="http://labs.strava.com/flyby/" target="_blank">Activity Playback</a> project lets users watch their rides and runs and see where they might have passed friends who were on the same path at that time. <br /> <br /> Google Maps lets us plot new ways athletes can visualize their data. We&#8217;re testing <a href="https://www.google.com/maps/d/" target="_blank">Google My Maps</a>, a feature in Google Maps on Android that offers a simple, fast version for users on the go. We can launch new web ideas on Strava Labs, which doesn&#8217;t require us to do full support or commit to integration in the long run. This gives us flexibility to try new things and see what resonates with our users. <br /> <br /> We&#8217;re able to focus on the user experience &#8212; particularly performance, control and creativity &#8212; because Google Maps is developer-friendly. It minimizes grunt work, like re-writing thousands of lines of boilerplate code. The API natively handles features we&#8217;d otherwise have to build &#8212; like identifying which map marker is nearest to a user when she searches for a location. Because of this simplicity, we can focus on making the app more useful and intuitive.</div> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> <span class="byline-author">Posted by Matt Laroche, Android Engineering Lead, Strava</span><br /> <br /> <i><b>Editor's note:</b> Today&#8217;s guest blogger is Matt Laroche, Android Engineering Lead at <a href="http://www.strava.com/" target="_blank">Strava</a>, a social network and community for athletes. See how Strava and other <a href="https://developers.google.com/maps/showcase/" target="_blank">developers</a> are using the <a href="https://developers.google.com/maps/" target="_blank">Google Maps API</a> to bring maps and location content to their users.</i> <br /> <br /> In distance training, runners and cyclists always want to know how far they&#8217;ve gone and track where they&#8217;ve been. At Strava, we provide them with this information and a lot more: we measure, map and analyze the runs and rides of millions of athletes around the world so they can get the most out of their workouts.<br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA_ZZvoeaOoDNybhblyfQdGVAgUQ3MCiTVWYDQwQ-5pSj3v2ULZYVAVQcOVUNrHTbelYaOOkcN5HiG-3ntoeTWDXA1iJ2bQiOKumJysZzEkzyIZRqmJyoqtTFrel-fOUc1QGM03SbBuHY/s1600/STRAVA-+US-RunningActivityDetail.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA_ZZvoeaOoDNybhblyfQdGVAgUQ3MCiTVWYDQwQ-5pSj3v2ULZYVAVQcOVUNrHTbelYaOOkcN5HiG-3ntoeTWDXA1iJ2bQiOKumJysZzEkzyIZRqmJyoqtTFrel-fOUc1QGM03SbBuHY/s1600/STRAVA-+US-RunningActivityDetail.jpg" width="368" /></a></div> <br /> To do this, we use <a href="https://www.google.com/work/mapsearth/products/mapsapi.html" target="_blank">Google Maps</a> to show them exactly where they&#8217;ve run or cycled. We can even help them plan future routes.<br /> <br /> Mapping is a big part of what our members do with Strava. Maps help them relive past workouts, visually share their run or ride with friends, and engage in friendly competition. We started using <a href="https://www.google.com/work/mapsearth/products/mapsapi.html" target="_blank">Google Maps API </a>when we launched five years ago. We tested other mapping providers, but found that Google Maps was the best API for mobile &#8212; it&#8217;s the easiest to use to create new maps, especially when using polylines to draw routes and mark items on a map. It&#8217;s a straightforward, developer-friendly API. <br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinERpArrMvrCGtrdWFY3cbT3OdqZvKyQSu9qbfbqBJk8gPXwuBGQoiBOiqdkyVv49p9Cb_i7vSJHvSbCxzKiur4MHzDyGLcGb8G8p5fuLi2vMNHhaGB_HFYIYqfhxBEMq7v3TMgEWbCOI/s1600/STRAVA-+Routes_And_detailEN.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinERpArrMvrCGtrdWFY3cbT3OdqZvKyQSu9qbfbqBJk8gPXwuBGQoiBOiqdkyVv49p9Cb_i7vSJHvSbCxzKiur4MHzDyGLcGb8G8p5fuLi2vMNHhaGB_HFYIYqfhxBEMq7v3TMgEWbCOI/s1600/STRAVA-+Routes_And_detailEN.jpg" width="368" /></a></div> <br /> <div class="separator" style="clear: both; text-align: center;"> </div> Because maps are key to the Strava experience, we pay close attention to the tools we use and how our members will benefit. Here are three areas we focus on when developing our maps using the Google Maps API:<br /> <br /> <div style="text-align: left;"> <b>Performance</b></div> We compile a huge amount of location data &#8212; including 400 billion GPS data points of the activities our members share from around the world. GPS data can tell us where our members are going in real-time. With the Google Maps API, interaction and display or map tile latency is minimal and rendering was faster than other services we tried, despite the large amounts of data in use. To make the app work even faster, we trimmed down the data points that are delivered back to the user&#8217;s device. <br /> <br /> <div style="text-align: left;"> <b>Control </b></div> Our members spend a lot of time looking at maps on the Strava app and have different needs, although all of them want detailed information. They also want the power to play with different views. With Google Maps, they have a lot of options. They can switch between different map tiles, including normal, satellite and terrain. Terrain view is key for showing them if a particular route will send them uphill, and if so, what elevation changes they can expect. The maps also have an intricate level of detail, such as bike lanes and paths, which gives users vital information for planning their workouts. The interaction is smooth too &#8212; zooming, rotation, and map tilting work in a way our members expect.<br /> <br /> <div style="text-align: left;"> <b>Creativity</b></div> With Google Maps API, we have a lot of room for <a href="http://labs.strava.com/" target="_blank">creativity and experimentation</a>. For example, we created a <a href="http://labs.strava.com/heatmap/#6/-120.90000/38.36000/blue/bike" target="_blank">Heat Map</a> that visualizes the most popular trails and roads based on 160 million rides and runs. Our <a href="http://labs.strava.com/flyby/" target="_blank">Activity Playback</a> project lets users watch their rides and runs and see where they might have passed friends who were on the same path at that time. <br /> <br /> Google Maps lets us plot new ways athletes can visualize their data. We&#8217;re testing <a href="https://www.google.com/maps/d/" target="_blank">Google My Maps</a>, a feature in Google Maps on Android that offers a simple, fast version for users on the go. We can launch new web ideas on Strava Labs, which doesn&#8217;t require us to do full support or commit to integration in the long run. This gives us flexibility to try new things and see what resonates with our users. <br /> <br /> We&#8217;re able to focus on the user experience &#8212; particularly performance, control and creativity &#8212; because Google Maps is developer-friendly. It minimizes grunt work, like re-writing thousands of lines of boilerplate code. The API natively handles features we&#8217;d otherwise have to build &#8212; like identifying which map marker is nearest to a user when she searches for a location. Because of this simplicity, we can focus on making the app more useful and intuitive.</div> </noscript> </div> </div> <div class='share'> <span class='gplus-share social-wrapper' data-href='https://plus.google.com/share?url=https://cloud.googleblog.com/2015/01/mapping-runs-rides-and-fitness-data-using-the-maps-API.html'> <img alt='Share on Google+' height='24' src='https://www.gstatic.com/images/branding/google_plus/2x/ic_w_post_gplus_black_24dp.png' width='24'/> </span> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Cloud Blog:Strava maps runs, rides and fitness data using the Maps API &url=https://cloud.googleblog.com/2015/01/mapping-runs-rides-and-fitness-data-using-the-maps-API.html&via=gsuite'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://cloud.googleblog.com/2015/01/mapping-runs-rides-and-fitness-data-using-the-maps-API.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='comment-container'> <i class='comment-img material-icons'> &#57529; </i> <span class='cmt_count_iframe_holder' data-count='4' data-onclick='' data-post-url='https://cloud.googleblog.com/2015/01/mapping-runs-rides-and-fitness-data-using-the-maps-API.html' data-url='https://cloud.googleblog.com/2015/01/mapping-runs-rides-and-fitness-data-using-the-maps-API.html' style='color: #4184F3;'></span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://cloud.googleblog.com/2015/01/mapping-runs-rides-and-fitness-data-using-the-maps-API.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://cloud.googleblog.com/search/label/customer%20love' rel='tag'> customer love </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Gone%20Google' rel='tag'> Gone Google </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Google%20Maps' rel='tag'> Google Maps </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Google%20Maps%20API' rel='tag'> Google Maps API </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Google%20Maps%20for%20Work' rel='tag'> Google Maps for Work </a> </span> </div> </div> </div> <div class='post' data-id='6276046820893815668' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://cloud.googleblog.com/2015/01/Chicos-chooses-Chromebox-to-create-a-digital-shopping-experience.html' itemprop='url' title='Chico’s chooses Chromebox to create a digital shopping experience'> Chico&#8217;s chooses Chromebox to create a digital shopping experience </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, January 21, 2015 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"><span class="byline-author">Posted by Eric Singleton, CIO, and Alan Mariotti, VP of Technology and Security, Chico's</span><br /> <br /> <i><b>Editor's note:&nbsp;</b>Today&#8217;s post comes from Eric Singleton, CIO, and Alan Mariotti, Vice President of Technology and Security, of&nbsp;<a href="http://www.chicos.com/store/" target="_blank">Chico&#8217;s</a>, a specialty retailer of branded clothing and accessories through its&nbsp;brands: Chico's, White House Black Market, Soma Intimates, and Boston Proper. Chico&#8217;s has 1,500 stores as well as catalogues and e-commerce websites for each of its brands.</i><br /> <i><br /> </i> Imagine running into your favorite clothing store in Chicago during a snowstorm and seeing a colorful digital display of cozy sweaters. Or you&#8217;re shopping in San Francisco for an outfit for a company party and the store&#8217;s display screens show cocktail dresses on sale. At Chico&#8217;s FAS stores, we will be using <a href="https://www.google.com/chrome/business/solutions/for-meetings.html" target="_blank">Chromeboxes</a> to personalize the shopping experience by tailoring our digital signage to the city, the store, and even the specific department.<br /> <br /> We&#8217;ve had our Chico&#8217;s Digital Retail Theater strategy in the works for some time, with plans to bring personalized content up to 5,000 screens at about 1,500 stores. I wanted to control displays down to each individual screen and swap new content as needed, without burdening our IT department or maintaining complex hardware at each store. After reviewing and sketching out a range of approaches for solving this challenging problem, we settled on Chromebox. Alan Mariotti, our VP of Technology and Security, praised the technology for its simplicity, low cost, and scalable performance. The easier a digital signage system is to install and use, the faster we can push out unique and relevant content to screens &#8211; an imperative in retail, where merchandise and promotions always change. <br /> <br /> Chromeboxes as a signage solution met all of our tests for affordability and ease of management. Since they&#8217;re cost-effective, we can afford to outfit more of our stores with more displays. Since they&#8217;re small, they don&#8217;t take up valuable space in stores and they are unobtrusive. With more screens, we have more places where we can tailor content that resonates with each store&#8217;s customers. <br /> <br /> We launched our first 10 Chrome-powered screens at our redesigned White House | Black Market store in Santa Monica, California, with content management software from <a href="http://www.risevision.com/" target="_blank">Rise Vision</a> deployed by <a href="http://www.uniguest.com/en/" target="_blank">Uniguest</a>, both of whom are Google partners. We&#8217;re testing the sales impact of changing merchandise content on the fly, compared to traditional retail channels like catalogues and print advertising. We&#8217;ll also see if shoppers respond to and interact with catalogue content that appears on store screens.<br /> <div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG7bZlRPncMC9sf0XWKbr32MWGVzZ4S5wlBF8w5ZWF5-MfuO51OtwluqWflWcikGSBQDWXdPyd8HTeVfIl2BHf7G57Mpqo6GlP-zAa7yCY4Nff3-jexsGYX1nTRUi1kiY0zcPYnCjgY4c/s1600/WHBM_SantaMonica1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="304" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG7bZlRPncMC9sf0XWKbr32MWGVzZ4S5wlBF8w5ZWF5-MfuO51OtwluqWflWcikGSBQDWXdPyd8HTeVfIl2BHf7G57Mpqo6GlP-zAa7yCY4Nff3-jexsGYX1nTRUi1kiY0zcPYnCjgY4c/s1600/WHBM_SantaMonica1.jpg" width="640" /></a></div>We&#8217;re also looking to Chrome to bring promotions to customers in minutes &#8212; a huge leap ahead from the printing process. The lead time for printed posters can be as long as 10 days due to the lengthy cycle of designing, printing, and delivering to stores. Not only is physical printing at this pace incredibly expensive, but we can&#8217;t react as quickly with print as we can with instant digital if new products and sales hit the stores on short notice. Chromebox for signage will eventually almost eliminate these printing and distribution costs, while shortening the time needed to bring relevant shopping news to our customers.<br /> <br /> The impact of our Digital Retail Theater strategy with Chrome goes far beyond screens with pretty pictures. When customers come to one of our stores, we want to immerse customers in the Chico&#8217;s FAS shopping experience &#8211; sharing with them the perfect jacket for her first day at a new job, the winter coat that transforms her look, or the dream dress that makes her evening magical.</div> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"><span class="byline-author">Posted by Eric Singleton, CIO, and Alan Mariotti, VP of Technology and Security, Chico's</span><br /> <br /> <i><b>Editor's note:&nbsp;</b>Today&#8217;s post comes from Eric Singleton, CIO, and Alan Mariotti, Vice President of Technology and Security, of&nbsp;<a href="http://www.chicos.com/store/" target="_blank">Chico&#8217;s</a>, a specialty retailer of branded clothing and accessories through its&nbsp;brands: Chico's, White House Black Market, Soma Intimates, and Boston Proper. Chico&#8217;s has 1,500 stores as well as catalogues and e-commerce websites for each of its brands.</i><br /> <i><br /> </i> Imagine running into your favorite clothing store in Chicago during a snowstorm and seeing a colorful digital display of cozy sweaters. Or you&#8217;re shopping in San Francisco for an outfit for a company party and the store&#8217;s display screens show cocktail dresses on sale. At Chico&#8217;s FAS stores, we will be using <a href="https://www.google.com/chrome/business/solutions/for-meetings.html" target="_blank">Chromeboxes</a> to personalize the shopping experience by tailoring our digital signage to the city, the store, and even the specific department.<br /> <br /> We&#8217;ve had our Chico&#8217;s Digital Retail Theater strategy in the works for some time, with plans to bring personalized content up to 5,000 screens at about 1,500 stores. I wanted to control displays down to each individual screen and swap new content as needed, without burdening our IT department or maintaining complex hardware at each store. After reviewing and sketching out a range of approaches for solving this challenging problem, we settled on Chromebox. Alan Mariotti, our VP of Technology and Security, praised the technology for its simplicity, low cost, and scalable performance. The easier a digital signage system is to install and use, the faster we can push out unique and relevant content to screens &#8211; an imperative in retail, where merchandise and promotions always change. <br /> <br /> Chromeboxes as a signage solution met all of our tests for affordability and ease of management. Since they&#8217;re cost-effective, we can afford to outfit more of our stores with more displays. Since they&#8217;re small, they don&#8217;t take up valuable space in stores and they are unobtrusive. With more screens, we have more places where we can tailor content that resonates with each store&#8217;s customers. <br /> <br /> We launched our first 10 Chrome-powered screens at our redesigned White House | Black Market store in Santa Monica, California, with content management software from <a href="http://www.risevision.com/" target="_blank">Rise Vision</a> deployed by <a href="http://www.uniguest.com/en/" target="_blank">Uniguest</a>, both of whom are Google partners. We&#8217;re testing the sales impact of changing merchandise content on the fly, compared to traditional retail channels like catalogues and print advertising. We&#8217;ll also see if shoppers respond to and interact with catalogue content that appears on store screens.<br /> <div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG7bZlRPncMC9sf0XWKbr32MWGVzZ4S5wlBF8w5ZWF5-MfuO51OtwluqWflWcikGSBQDWXdPyd8HTeVfIl2BHf7G57Mpqo6GlP-zAa7yCY4Nff3-jexsGYX1nTRUi1kiY0zcPYnCjgY4c/s1600/WHBM_SantaMonica1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="304" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG7bZlRPncMC9sf0XWKbr32MWGVzZ4S5wlBF8w5ZWF5-MfuO51OtwluqWflWcikGSBQDWXdPyd8HTeVfIl2BHf7G57Mpqo6GlP-zAa7yCY4Nff3-jexsGYX1nTRUi1kiY0zcPYnCjgY4c/s1600/WHBM_SantaMonica1.jpg" width="640" /></a></div>We&#8217;re also looking to Chrome to bring promotions to customers in minutes &#8212; a huge leap ahead from the printing process. The lead time for printed posters can be as long as 10 days due to the lengthy cycle of designing, printing, and delivering to stores. Not only is physical printing at this pace incredibly expensive, but we can&#8217;t react as quickly with print as we can with instant digital if new products and sales hit the stores on short notice. Chromebox for signage will eventually almost eliminate these printing and distribution costs, while shortening the time needed to bring relevant shopping news to our customers.<br /> <br /> The impact of our Digital Retail Theater strategy with Chrome goes far beyond screens with pretty pictures. When customers come to one of our stores, we want to immerse customers in the Chico&#8217;s FAS shopping experience &#8211; sharing with them the perfect jacket for her first day at a new job, the winter coat that transforms her look, or the dream dress that makes her evening magical.</div> </noscript> </div> </div> <div class='share'> <span class='gplus-share social-wrapper' data-href='https://plus.google.com/share?url=https://cloud.googleblog.com/2015/01/Chicos-chooses-Chromebox-to-create-a-digital-shopping-experience.html'> <img alt='Share on Google+' height='24' src='https://www.gstatic.com/images/branding/google_plus/2x/ic_w_post_gplus_black_24dp.png' width='24'/> </span> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Cloud Blog:Chico’s chooses Chromebox to create a digital shopping experience&url=https://cloud.googleblog.com/2015/01/Chicos-chooses-Chromebox-to-create-a-digital-shopping-experience.html&via=gsuite'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://cloud.googleblog.com/2015/01/Chicos-chooses-Chromebox-to-create-a-digital-shopping-experience.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='comment-container'> <i class='comment-img material-icons'> &#57529; </i> <span class='cmt_count_iframe_holder' data-count='3' data-onclick='' data-post-url='https://cloud.googleblog.com/2015/01/Chicos-chooses-Chromebox-to-create-a-digital-shopping-experience.html' data-url='https://cloud.googleblog.com/2015/01/Chicos-chooses-Chromebox-to-create-a-digital-shopping-experience.html' style='color: #4184F3;'></span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://cloud.googleblog.com/2015/01/Chicos-chooses-Chromebox-to-create-a-digital-shopping-experience.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://cloud.googleblog.com/search/label/Chrome' rel='tag'> Chrome </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Chrome%20for%20Work' rel='tag'> Chrome for Work </a> , <a class='label' href='https://cloud.googleblog.com/search/label/customer%20love' rel='tag'> customer love </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Gone%20Google' rel='tag'> Gone Google </a> </span> </div> </div> </div> <div class='post' data-id='1083657971516237101' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://cloud.googleblog.com/2015/01/MarineTraffic-tracks-marine-vessels-with-Google-Maps.html' itemprop='url' title='MarineTraffic tracks marine vessels with Google Maps'> MarineTraffic tracks marine vessels with Google Maps </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Tuesday, January 20, 2015 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> <span class="byline-author">Posted by Demitris Memos, Managing Director of MarineTraffic</span> <br /> <br /> <i><b>Editor's note:</b> Today&#8217;s guest blogger is Demitris Memos, Managing Director of <a href="http://www.marinetraffic.com/" target="_blank">MarineTraffic</a>, whose website and app are widely used for tracking ship movements worldwide. See how MarineTraffic and other <a href="https://developers.google.com/maps/showcase/" target="_blank">developers</a> are using the <a href="https://developers.google.com/maps/" target="_blank">Google Maps API</a> to bring maps and location content to their users. </i> <br /> <i><br /></i> Ships play a major role in global commerce, but locating them is not as straightforward as it might seem, even for their owners. That&#8217;s a problem if, for example, you&#8217;re trying to track your cargo, which is on a containership crossing the Atlantic. It&#8217;s even worse if you&#8217;re a tanker spilling oil offshore and the nearest coast guard ship can&#8217;t be found. At MarineTraffic we aim to solve that problem. What began as an experiment in 2007 has become the most popular vessel tracking service in the world. We&#8217;ve seen our website traffic double in the past two years to a peak of 6.2 million monthly active users lately. <br /> <br /> A key component to maritime data is geography. You would think that mapping ships as they traverse the world&#8217;s waterways and oceans would be a no-brainer, but until the introduction of AIS (Automatic Identification System) in shipping and the launch of MarineTraffic, such a capability was not available for the masses. Today, using the Google Maps API we are able to overlay data we get from ships around the globe onto an easy-to-use map with the help of Google&#8217;s intuitive mapping platform.<br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLZ3rTmIRHLRskBuHYgseKC4HmCy8dYKEt72M-JQLOfy9Fwtunq8-_vMcAfiHB1yOv6JwUMUexqLgZpQ2WH_t-pVSjvhsDr_X1yNNR3LGoH3exBBSVV9-klfntWykqaS89Y4WF2BpxN9w/s1600/mt_map_030.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="512" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLZ3rTmIRHLRskBuHYgseKC4HmCy8dYKEt72M-JQLOfy9Fwtunq8-_vMcAfiHB1yOv6JwUMUexqLgZpQ2WH_t-pVSjvhsDr_X1yNNR3LGoH3exBBSVV9-klfntWykqaS89Y4WF2BpxN9w/s1600/mt_map_030.PNG" width="640" /></a></div> <div class="separator" style="clear: both; text-align: center;"> </div> We worked with Google Maps partner <a href="http://www.ancoris.com/" target="_blank">Ancoris</a> to set up the mapping service. Our maps use the Google Maps API to plot shipping movement around the world. The data is acquired by our proprietary, global AIS receivers network. This way, we collect radio frequency signals from transponders aboard vessels and display them on the <a href="https://www.marinetraffic.com/" target="_blank">MarineTraffic website</a> and our <a href="https://www.marinetraffic.com/en/p/mobile" target="_blank">mobile apps</a>. We offer Density Maps on top of the API to show, for example, which routes tankers are taking versus cruise ships.<br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaCIU4JrLRwKzH7QYKBc6JkdK63J8TAvYRzs0eGVNMNOcf__BpOHrqN1swTlGhhOIVWCBP7AuVTv6u-s2g2CZFlByRLf3Mdr2s5Pn5MaglXivmtWdzuItHpsT9V1ziY6lh5-lc8WyuJS0/s1600/mt_map_033.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="412" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaCIU4JrLRwKzH7QYKBc6JkdK63J8TAvYRzs0eGVNMNOcf__BpOHrqN1swTlGhhOIVWCBP7AuVTv6u-s2g2CZFlByRLf3Mdr2s5Pn5MaglXivmtWdzuItHpsT9V1ziY6lh5-lc8WyuJS0/s1600/mt_map_033.PNG" width="640" /></a></div> Geofencing is used to keep track of distances between vessels and record arrivals and departures at ports. A variety of other types of information are available on top of our maps in layers, such as wind speed, temperatures, photos and more besides.<br /> <div class="separator" style="clear: both; text-align: center;"> </div> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoxXILNjOorKlt5f9zafNlezDOmAZNTMH6J3-LNV0o_kcVG9UYFuNO67yudjLkvuzX4pM14dHDMDy7Gdd41K27JRuWFqhHjji49d0rZJvXXWhORU8qsEmKNNMwCmZjtUcjrwnKBUxItQE/s1600/mt_map_035.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="472" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoxXILNjOorKlt5f9zafNlezDOmAZNTMH6J3-LNV0o_kcVG9UYFuNO67yudjLkvuzX4pM14dHDMDy7Gdd41K27JRuWFqhHjji49d0rZJvXXWhORU8qsEmKNNMwCmZjtUcjrwnKBUxItQE/s1600/mt_map_035.PNG" width="640" /></a></div> The good thing about Google is that it makes it easy for developers to port data in through their API and, above all, the high availability of the service, which is always there, no matter how big the spike in traffic is. <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaf9fmoIuJkz7sb3c2UW6GI1boZmeK4gnx0SYX8CbRblgxhAqbTJUmrK6yV8nRZTfEuRJJXrG9D3ISggczZBnNStVGp_U5fpCeT74ZmjkIKvDW0c8WFNNE4C84NXPcy_vOhyV8BEdxBEM/s1600/mt_map_041.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="470" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaf9fmoIuJkz7sb3c2UW6GI1boZmeK4gnx0SYX8CbRblgxhAqbTJUmrK6yV8nRZTfEuRJJXrG9D3ISggczZBnNStVGp_U5fpCeT74ZmjkIKvDW0c8WFNNE4C84NXPcy_vOhyV8BEdxBEM/s1600/mt_map_041.PNG" width="640" /></a></div> Google Maps has proven to be very reliable, thoroughly supporting MarineTraffic as an essential tool for maritime professionals and marine enthusiasts. Using Google Maps, we are able to provide a valuable service to the general public and commercial organisations, filling a need that is highlighted by the rapid growth of our business. Google Maps is helping to put ships on the map! <br /> <br /></div> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> <span class="byline-author">Posted by Demitris Memos, Managing Director of MarineTraffic</span> <br /> <br /> <i><b>Editor's note:</b> Today&#8217;s guest blogger is Demitris Memos, Managing Director of <a href="http://www.marinetraffic.com/" target="_blank">MarineTraffic</a>, whose website and app are widely used for tracking ship movements worldwide. See how MarineTraffic and other <a href="https://developers.google.com/maps/showcase/" target="_blank">developers</a> are using the <a href="https://developers.google.com/maps/" target="_blank">Google Maps API</a> to bring maps and location content to their users. </i> <br /> <i><br /></i> Ships play a major role in global commerce, but locating them is not as straightforward as it might seem, even for their owners. That&#8217;s a problem if, for example, you&#8217;re trying to track your cargo, which is on a containership crossing the Atlantic. It&#8217;s even worse if you&#8217;re a tanker spilling oil offshore and the nearest coast guard ship can&#8217;t be found. At MarineTraffic we aim to solve that problem. What began as an experiment in 2007 has become the most popular vessel tracking service in the world. We&#8217;ve seen our website traffic double in the past two years to a peak of 6.2 million monthly active users lately. <br /> <br /> A key component to maritime data is geography. You would think that mapping ships as they traverse the world&#8217;s waterways and oceans would be a no-brainer, but until the introduction of AIS (Automatic Identification System) in shipping and the launch of MarineTraffic, such a capability was not available for the masses. Today, using the Google Maps API we are able to overlay data we get from ships around the globe onto an easy-to-use map with the help of Google&#8217;s intuitive mapping platform.<br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLZ3rTmIRHLRskBuHYgseKC4HmCy8dYKEt72M-JQLOfy9Fwtunq8-_vMcAfiHB1yOv6JwUMUexqLgZpQ2WH_t-pVSjvhsDr_X1yNNR3LGoH3exBBSVV9-klfntWykqaS89Y4WF2BpxN9w/s1600/mt_map_030.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="512" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLZ3rTmIRHLRskBuHYgseKC4HmCy8dYKEt72M-JQLOfy9Fwtunq8-_vMcAfiHB1yOv6JwUMUexqLgZpQ2WH_t-pVSjvhsDr_X1yNNR3LGoH3exBBSVV9-klfntWykqaS89Y4WF2BpxN9w/s1600/mt_map_030.PNG" width="640" /></a></div> <div class="separator" style="clear: both; text-align: center;"> </div> We worked with Google Maps partner <a href="http://www.ancoris.com/" target="_blank">Ancoris</a> to set up the mapping service. Our maps use the Google Maps API to plot shipping movement around the world. The data is acquired by our proprietary, global AIS receivers network. This way, we collect radio frequency signals from transponders aboard vessels and display them on the <a href="https://www.marinetraffic.com/" target="_blank">MarineTraffic website</a> and our <a href="https://www.marinetraffic.com/en/p/mobile" target="_blank">mobile apps</a>. We offer Density Maps on top of the API to show, for example, which routes tankers are taking versus cruise ships.<br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaCIU4JrLRwKzH7QYKBc6JkdK63J8TAvYRzs0eGVNMNOcf__BpOHrqN1swTlGhhOIVWCBP7AuVTv6u-s2g2CZFlByRLf3Mdr2s5Pn5MaglXivmtWdzuItHpsT9V1ziY6lh5-lc8WyuJS0/s1600/mt_map_033.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="412" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaCIU4JrLRwKzH7QYKBc6JkdK63J8TAvYRzs0eGVNMNOcf__BpOHrqN1swTlGhhOIVWCBP7AuVTv6u-s2g2CZFlByRLf3Mdr2s5Pn5MaglXivmtWdzuItHpsT9V1ziY6lh5-lc8WyuJS0/s1600/mt_map_033.PNG" width="640" /></a></div> Geofencing is used to keep track of distances between vessels and record arrivals and departures at ports. A variety of other types of information are available on top of our maps in layers, such as wind speed, temperatures, photos and more besides.<br /> <div class="separator" style="clear: both; text-align: center;"> </div> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoxXILNjOorKlt5f9zafNlezDOmAZNTMH6J3-LNV0o_kcVG9UYFuNO67yudjLkvuzX4pM14dHDMDy7Gdd41K27JRuWFqhHjji49d0rZJvXXWhORU8qsEmKNNMwCmZjtUcjrwnKBUxItQE/s1600/mt_map_035.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="472" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoxXILNjOorKlt5f9zafNlezDOmAZNTMH6J3-LNV0o_kcVG9UYFuNO67yudjLkvuzX4pM14dHDMDy7Gdd41K27JRuWFqhHjji49d0rZJvXXWhORU8qsEmKNNMwCmZjtUcjrwnKBUxItQE/s1600/mt_map_035.PNG" width="640" /></a></div> The good thing about Google is that it makes it easy for developers to port data in through their API and, above all, the high availability of the service, which is always there, no matter how big the spike in traffic is. <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaf9fmoIuJkz7sb3c2UW6GI1boZmeK4gnx0SYX8CbRblgxhAqbTJUmrK6yV8nRZTfEuRJJXrG9D3ISggczZBnNStVGp_U5fpCeT74ZmjkIKvDW0c8WFNNE4C84NXPcy_vOhyV8BEdxBEM/s1600/mt_map_041.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="470" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaf9fmoIuJkz7sb3c2UW6GI1boZmeK4gnx0SYX8CbRblgxhAqbTJUmrK6yV8nRZTfEuRJJXrG9D3ISggczZBnNStVGp_U5fpCeT74ZmjkIKvDW0c8WFNNE4C84NXPcy_vOhyV8BEdxBEM/s1600/mt_map_041.PNG" width="640" /></a></div> Google Maps has proven to be very reliable, thoroughly supporting MarineTraffic as an essential tool for maritime professionals and marine enthusiasts. Using Google Maps, we are able to provide a valuable service to the general public and commercial organisations, filling a need that is highlighted by the rapid growth of our business. Google Maps is helping to put ships on the map! <br /> <br /></div> </noscript> </div> </div> <div class='share'> <span class='gplus-share social-wrapper' data-href='https://plus.google.com/share?url=https://cloud.googleblog.com/2015/01/MarineTraffic-tracks-marine-vessels-with-Google-Maps.html'> <img alt='Share on Google+' height='24' src='https://www.gstatic.com/images/branding/google_plus/2x/ic_w_post_gplus_black_24dp.png' width='24'/> </span> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Cloud Blog:MarineTraffic tracks marine vessels with Google Maps&url=https://cloud.googleblog.com/2015/01/MarineTraffic-tracks-marine-vessels-with-Google-Maps.html&via=gsuite'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://cloud.googleblog.com/2015/01/MarineTraffic-tracks-marine-vessels-with-Google-Maps.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='comment-container'> <i class='comment-img material-icons'> &#57529; </i> <span class='cmt_count_iframe_holder' data-count='11' data-onclick='' data-post-url='https://cloud.googleblog.com/2015/01/MarineTraffic-tracks-marine-vessels-with-Google-Maps.html' data-url='https://cloud.googleblog.com/2015/01/MarineTraffic-tracks-marine-vessels-with-Google-Maps.html' style='color: #4184F3;'></span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://cloud.googleblog.com/2015/01/MarineTraffic-tracks-marine-vessels-with-Google-Maps.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://cloud.googleblog.com/search/label/customer%20love' rel='tag'> customer love </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Gone%20Google' rel='tag'> Gone Google </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Google%20Maps' rel='tag'> Google Maps </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Google%20Maps%20API' rel='tag'> Google Maps API </a> </span> </div> </div> </div> <div class='post' data-id='7586228327943206004' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://cloud.googleblog.com/2015/01/ambush-security-keep-homes-safe-with.html' itemprop='url' title='Ambush Security keep homes safe with Google Apps '> Ambush Security keep homes safe with Google Apps </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Thursday, January 15, 2015 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> <span class="byline-author">Posted by Graham Russell, Founder and Managing Director of Ambush Security</span> <br /> <br /> <i><b>Editor's note:</b> Today&#8217;s guest blogger is Graham Russell, Founder and Managing Director of Ambush Security, a family owned security business that has protected Southern Queensland, Australia, since 1986. Learn how Google Apps for Work gave their team the flexibility to collaborate and work securely from anywhere.</i> <br /> <br /> Ambush Security is a local family-owned business based in Queensland that has provided electronic security systems to homes and businesses for over 25 years. With a 100 strong team, many of which are out in the field, it&#8217;s important for us to stay connected, wherever we are.<br /> <br /> We needed a simple solution to help us manage the 250+ personal devices used across our team, one that offered easy access to work data from any device and ensured the security of that data. As a company that embraces new technology, the decision to go Google was simple. Security is what we do, and that&#8217;s exactly what <a href="https://www.google.com/work/apps/business/" target="_blank">Google Apps</a> offered us &#8211; a tool that would help us remain trustworthy.<br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhn7UmxRWAN52I7CAKse-DRCRdGwBTdmRwZMa3qnqLjQvLsB4TvShDONBGd9z9bHxH4TLd5O_gYO_5cFbr-jmuEyB54t3otGFg-BuOXx1BoShNrBjHOyQGNP_1sIjCEgBFMugQt7koKhhI/s1600/Ambush.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="425" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhn7UmxRWAN52I7CAKse-DRCRdGwBTdmRwZMa3qnqLjQvLsB4TvShDONBGd9z9bHxH4TLd5O_gYO_5cFbr-jmuEyB54t3otGFg-BuOXx1BoShNrBjHOyQGNP_1sIjCEgBFMugQt7koKhhI/s1600/Ambush.jpg" width="640" /></a></div> We didn&#8217;t realise how much of an impact moving to Google Apps could really make until we considered all of the recent benefits:<br /> <br /> <ul style="text-align: left;"> <li><b>Cost savings</b>: We save $75,000 AUD per year by reducing our hardware equipment purchases. Now all of our employees are free to use their personal devices for work.</li> <li><b>Time savings</b>: Google Apps has enhanced our work productivity and allowed each employee to save an additional 1 &#8211; 2 hours per week, because all of the information they need is right at their fingertips on <a href="https://www.google.com/work/apps/business/products/drive/" target="_blank">Google Drive</a>.</li> <li><b>Secure data</b>: With easy-access to network permissions, our IT Managers can manage the devices and data securely, whatever devices our team chooses &#8211; especially important if a device is accidentally lost or stolen.</li> <li><b>Productivity savings</b>: Our sales team can now easily offer client quotes on site without having to head back to the office. All the information they need is available on Google Drive.</li> <li><b>Mobility</b>: When data can be accessed anywhere and at any time, we find that the team feels more empowered. They have the flexibility of choosing to pack their bags and leave the office early, have dinner with the family, and complete their work from home.</li> </ul> <br /> Since introducing Google Apps to our business, our team is happier and more productive and our business data is secure. Now, we can continue protecting homes, businesses and families across Queensland knowing that every aspect of our business is in safe hands.</div> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> <span class="byline-author">Posted by Graham Russell, Founder and Managing Director of Ambush Security</span> <br /> <br /> <i><b>Editor's note:</b> Today&#8217;s guest blogger is Graham Russell, Founder and Managing Director of Ambush Security, a family owned security business that has protected Southern Queensland, Australia, since 1986. Learn how Google Apps for Work gave their team the flexibility to collaborate and work securely from anywhere.</i> <br /> <br /> Ambush Security is a local family-owned business based in Queensland that has provided electronic security systems to homes and businesses for over 25 years. With a 100 strong team, many of which are out in the field, it&#8217;s important for us to stay connected, wherever we are.<br /> <br /> We needed a simple solution to help us manage the 250+ personal devices used across our team, one that offered easy access to work data from any device and ensured the security of that data. As a company that embraces new technology, the decision to go Google was simple. Security is what we do, and that&#8217;s exactly what <a href="https://www.google.com/work/apps/business/" target="_blank">Google Apps</a> offered us &#8211; a tool that would help us remain trustworthy.<br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhn7UmxRWAN52I7CAKse-DRCRdGwBTdmRwZMa3qnqLjQvLsB4TvShDONBGd9z9bHxH4TLd5O_gYO_5cFbr-jmuEyB54t3otGFg-BuOXx1BoShNrBjHOyQGNP_1sIjCEgBFMugQt7koKhhI/s1600/Ambush.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="425" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhn7UmxRWAN52I7CAKse-DRCRdGwBTdmRwZMa3qnqLjQvLsB4TvShDONBGd9z9bHxH4TLd5O_gYO_5cFbr-jmuEyB54t3otGFg-BuOXx1BoShNrBjHOyQGNP_1sIjCEgBFMugQt7koKhhI/s1600/Ambush.jpg" width="640" /></a></div> We didn&#8217;t realise how much of an impact moving to Google Apps could really make until we considered all of the recent benefits:<br /> <br /> <ul style="text-align: left;"> <li><b>Cost savings</b>: We save $75,000 AUD per year by reducing our hardware equipment purchases. Now all of our employees are free to use their personal devices for work.</li> <li><b>Time savings</b>: Google Apps has enhanced our work productivity and allowed each employee to save an additional 1 &#8211; 2 hours per week, because all of the information they need is right at their fingertips on <a href="https://www.google.com/work/apps/business/products/drive/" target="_blank">Google Drive</a>.</li> <li><b>Secure data</b>: With easy-access to network permissions, our IT Managers can manage the devices and data securely, whatever devices our team chooses &#8211; especially important if a device is accidentally lost or stolen.</li> <li><b>Productivity savings</b>: Our sales team can now easily offer client quotes on site without having to head back to the office. All the information they need is available on Google Drive.</li> <li><b>Mobility</b>: When data can be accessed anywhere and at any time, we find that the team feels more empowered. They have the flexibility of choosing to pack their bags and leave the office early, have dinner with the family, and complete their work from home.</li> </ul> <br /> Since introducing Google Apps to our business, our team is happier and more productive and our business data is secure. Now, we can continue protecting homes, businesses and families across Queensland knowing that every aspect of our business is in safe hands.</div> </noscript> </div> </div> <div class='share'> <span class='gplus-share social-wrapper' data-href='https://plus.google.com/share?url=https://cloud.googleblog.com/2015/01/ambush-security-keep-homes-safe-with.html'> <img alt='Share on Google+' height='24' src='https://www.gstatic.com/images/branding/google_plus/2x/ic_w_post_gplus_black_24dp.png' width='24'/> </span> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Cloud Blog:Ambush Security keep homes safe with Google Apps &url=https://cloud.googleblog.com/2015/01/ambush-security-keep-homes-safe-with.html&via=gsuite'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://cloud.googleblog.com/2015/01/ambush-security-keep-homes-safe-with.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='comment-container'> <i class='comment-img material-icons'> &#57529; </i> <span class='cmt_count_iframe_holder' data-count='3' data-onclick='' data-post-url='https://cloud.googleblog.com/2015/01/ambush-security-keep-homes-safe-with.html' data-url='https://cloud.googleblog.com/2015/01/ambush-security-keep-homes-safe-with.html' style='color: #4184F3;'></span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://cloud.googleblog.com/2015/01/ambush-security-keep-homes-safe-with.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://cloud.googleblog.com/search/label/customer%20love' rel='tag'> customer love </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Gone%20Google' rel='tag'> Gone Google </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Google%20Apps%20for%20Work' rel='tag'> Google Apps for Work </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Google%20Drive%20for%20Work' rel='tag'> Google Drive for Work </a> </span> </div> </div> </div> <div class='post' data-id='9092298192910016432' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://cloud.googleblog.com/2015/01/A-Classroom-mobile-app-and-new-teacher-goodies.html' itemprop='url' title='A Classroom mobile app and new teacher goodies'> A Classroom mobile app and new teacher goodies </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, January 14, 2015 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> <div dir="ltr" style="text-align: left;" trbidi="on"> <span class="byline-author">Posted by Jorge Lugo, Software Engineer, Google for Education Classroom</span> <br /> <br /> <i>(Cross-posted on the <a href="http://googleforeducation.blogspot.com/2015/01/A-Classroom-mobile-app-and-new-teacher-goodies.html" target="_blank">Google for Education Blog</a>)</i> <br /> <br /> While it&#8217;s a new year on the calendar, many teachers and students are just midway through the school year. They&#8217;ve clearly been hard at work, turning in more than 30 million assignments with <a href="https://www.google.com/edu/products/productivity-tools/classroom/" target="_blank">Classroom</a> since it launched six months ago. If those assignments had been on paper instead of Google Docs, they would stretch from New York to Los Angeles when laid end to end. If every assignment had taken just one minute to print out, Classroom saved 57 years that would have otherwise been spent waiting for the printer.<br /> <br /> Today we&#8217;re launching a native Classroom mobile app for both <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.classroom" target="_blank">Android</a> and <a href="https://itunes.apple.com/us/app/google-classroom/id924620788" target="_blank">iOS</a> (also available in <a href="https://play.google.com/edu?utm_medium=blog&amp;utm_campaign=android_app#W1tbImNvbS5nb29nbGUuYW5kcm9pZC5hcHBzLmNsYXNzcm9vbSIsMSwzXV1d" target="_blank">Google Play for Education</a>) to help teachers and students connect from wherever they are, and save even more paper and time. We&#8217;re also launching two new features to help teachers stay organized as they head into the second half of the year: a teacher assignments page and the ability to archive classes.<br /> <br /> <b>With the mobile app, students and teachers can</b>:<br /> <ul> <li><b>Snap a photo</b>: Right from the assignment page in the mobile app, students can snap a photo and attach it to their assignment &#8212; whether it&#8217;s the experiment they just did for a science class, or a drawing they made of their family tree. And if they&#8217;ve forgotten their homework, they can ask someone at home to snap a photo, text it and then turn it in with the app. Of course, if the dog has actually eaten it, Classroom can&#8217;t help you.&nbsp;</li> </ul> <iframe allowfullscreen="" frameborder="0" height="360" src="//www.youtube.com/embed/C2fC7yrj984" width="640"></iframe><br /> <div class="separator" style="clear: both; text-align: center;"> </div> <div class="separator" style="clear: both; text-align: center;"> </div> <ul> <li><b>Share from other apps</b>: Students can also easily attach images, PDFs and web pages from other apps to their assignments. For example, when you&#8217;re in a drawing app, you can create a graphic for an assignment. When you click &#8220;share&#8221; in that app, Classroom will come up as an option, and you can attach the graphic to an assignment.&nbsp;</li> </ul> <iframe allowfullscreen="" frameborder="0" height="360" src="//www.youtube.com/embed/XA3T_osf_FQ" width="640"></iframe><br /> <div class="separator" style="clear: both; text-align: center;"> </div> <ul> <li><b>Offline caching</b>: Even when Internet access isn&#8217;t available, students and teachers can get information about their assignments in the Classroom mobile app. Class streams and assignment information are automatically cached every time you open the app with an Internet connection, so that you can see them when you don&#8217;t have a connection.&nbsp;</li> </ul> <div class="separator" style="clear: both; text-align: center;"> </div> <div class="separator" style="clear: both; text-align: center;"> </div> <br /> For the best experience using the <a href="https://support.google.com/edu/classroom/answer/6118412" target="_blank">Classroom app</a>, make sure you (or your students) also have the <a href="//www.google.com/mobile/drive/" target="_blank">Google Docs, Drive and Slides apps</a>. We&#8217;re looking forward to adding new features to the app on both iOS and Android in the coming months, so that students and teachers can get more done from any device they have.<br /> <br /> <br /> <b>Teacher Assignments Page</b><br /> <br /> We&#8217;ve heard from many teachers that they want one place to keep track of all the work they assign across all of their classes. On Classroom for desktop, we&#8217;re launching a <a href="https://support.google.com/edu/classroom/answer/6150132" target="_blank">teacher assignments page</a>. Teachers will have quick access to any assignment, track which ones they&#8217;ve reviewed and see how many students have completed their assignments.<br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggVLKDaNDq2CdJugeOqUeSSNADdE6Cajdf3TA1a83_l7-3qd0JDBxTrD5MAv6pIQ7o6-o_ZZkBaVYP5QSkJnx2-RAR56SNavlOU7pza2-2HsjM0NtfYY7WU_UfgERdOEXtazqxBMaywy1E/s1600/assignments.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="490" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggVLKDaNDq2CdJugeOqUeSSNADdE6Cajdf3TA1a83_l7-3qd0JDBxTrD5MAv6pIQ7o6-o_ZZkBaVYP5QSkJnx2-RAR56SNavlOU7pza2-2HsjM0NtfYY7WU_UfgERdOEXtazqxBMaywy1E/s1600/assignments.png" width="640" /></a></div> <b>Archive Classes</b><br /> <br /> We also know that classes don&#8217;t go on forever. You don&#8217;t want to have to scroll through old classes to get to the ones you&#8217;re teaching or attending now, but you&#8217;ll likely want access to the valuable information in previous classes and work from them. That&#8217;s why today we&#8217;re launching the ability to <a href="https://support.google.com/edu/classroom/answer/6149813" target="_blank">archive classes</a>. Archiving a class will remove it from the home page and make it read-only &#8212; teachers and class members can still view archived classes, but can&#8217;t make any changes or turn in assignments.<br /> <br /> <a href="http://s1167.photobucket.com/user/cteruya/media/FINAL-ARCHIVE_zpsilqhvosx.gif.html" target="_blank"><img alt=" photo FINAL-ARCHIVE_zpsilqhvosx.gif" border="0" height="338" src="https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_sDPH9Enrg5LTDRpWJiA3CM8WesqiRFc8UCGrekB8-67ksJUso2jZHxSBrMxxwywShMr7Rs7kuUb13g99jiPLfAPTVXTyaPz7kVYx0-FnVgNp8TcR5TZjCTAko38GazvbXcF2YlPTCsVPLoXOd7yP7bpA=s0-d" width="640"></a><br /> We hope the new mobile apps and features for teachers will save you some time and paper this semester. Please keep sharing your feedback with us, and stay tuned for more new Classroom goodies before the school year is over.<br /> <br /></div> <br /></div> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> <div dir="ltr" style="text-align: left;" trbidi="on"> <span class="byline-author">Posted by Jorge Lugo, Software Engineer, Google for Education Classroom</span> <br /> <br /> <i>(Cross-posted on the <a href="http://googleforeducation.blogspot.com/2015/01/A-Classroom-mobile-app-and-new-teacher-goodies.html" target="_blank">Google for Education Blog</a>)</i> <br /> <br /> While it&#8217;s a new year on the calendar, many teachers and students are just midway through the school year. They&#8217;ve clearly been hard at work, turning in more than 30 million assignments with <a href="https://www.google.com/edu/products/productivity-tools/classroom/" target="_blank">Classroom</a> since it launched six months ago. If those assignments had been on paper instead of Google Docs, they would stretch from New York to Los Angeles when laid end to end. If every assignment had taken just one minute to print out, Classroom saved 57 years that would have otherwise been spent waiting for the printer.<br /> <br /> Today we&#8217;re launching a native Classroom mobile app for both <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.classroom" target="_blank">Android</a> and <a href="https://itunes.apple.com/us/app/google-classroom/id924620788" target="_blank">iOS</a> (also available in <a href="https://play.google.com/edu?utm_medium=blog&amp;utm_campaign=android_app#W1tbImNvbS5nb29nbGUuYW5kcm9pZC5hcHBzLmNsYXNzcm9vbSIsMSwzXV1d" target="_blank">Google Play for Education</a>) to help teachers and students connect from wherever they are, and save even more paper and time. We&#8217;re also launching two new features to help teachers stay organized as they head into the second half of the year: a teacher assignments page and the ability to archive classes.<br /> <br /> <b>With the mobile app, students and teachers can</b>:<br /> <ul> <li><b>Snap a photo</b>: Right from the assignment page in the mobile app, students can snap a photo and attach it to their assignment &#8212; whether it&#8217;s the experiment they just did for a science class, or a drawing they made of their family tree. And if they&#8217;ve forgotten their homework, they can ask someone at home to snap a photo, text it and then turn it in with the app. Of course, if the dog has actually eaten it, Classroom can&#8217;t help you.&nbsp;</li> </ul> <iframe allowfullscreen="" frameborder="0" height="360" src="//www.youtube.com/embed/C2fC7yrj984" width="640"></iframe><br /> <div class="separator" style="clear: both; text-align: center;"> </div> <div class="separator" style="clear: both; text-align: center;"> </div> <ul> <li><b>Share from other apps</b>: Students can also easily attach images, PDFs and web pages from other apps to their assignments. For example, when you&#8217;re in a drawing app, you can create a graphic for an assignment. When you click &#8220;share&#8221; in that app, Classroom will come up as an option, and you can attach the graphic to an assignment.&nbsp;</li> </ul> <iframe allowfullscreen="" frameborder="0" height="360" src="//www.youtube.com/embed/XA3T_osf_FQ" width="640"></iframe><br /> <div class="separator" style="clear: both; text-align: center;"> </div> <ul> <li><b>Offline caching</b>: Even when Internet access isn&#8217;t available, students and teachers can get information about their assignments in the Classroom mobile app. Class streams and assignment information are automatically cached every time you open the app with an Internet connection, so that you can see them when you don&#8217;t have a connection.&nbsp;</li> </ul> <div class="separator" style="clear: both; text-align: center;"> </div> <div class="separator" style="clear: both; text-align: center;"> </div> <br /> For the best experience using the <a href="https://support.google.com/edu/classroom/answer/6118412" target="_blank">Classroom app</a>, make sure you (or your students) also have the <a href="//www.google.com/mobile/drive/" target="_blank">Google Docs, Drive and Slides apps</a>. We&#8217;re looking forward to adding new features to the app on both iOS and Android in the coming months, so that students and teachers can get more done from any device they have.<br /> <br /> <br /> <b>Teacher Assignments Page</b><br /> <br /> We&#8217;ve heard from many teachers that they want one place to keep track of all the work they assign across all of their classes. On Classroom for desktop, we&#8217;re launching a <a href="https://support.google.com/edu/classroom/answer/6150132" target="_blank">teacher assignments page</a>. Teachers will have quick access to any assignment, track which ones they&#8217;ve reviewed and see how many students have completed their assignments.<br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggVLKDaNDq2CdJugeOqUeSSNADdE6Cajdf3TA1a83_l7-3qd0JDBxTrD5MAv6pIQ7o6-o_ZZkBaVYP5QSkJnx2-RAR56SNavlOU7pza2-2HsjM0NtfYY7WU_UfgERdOEXtazqxBMaywy1E/s1600/assignments.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="490" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggVLKDaNDq2CdJugeOqUeSSNADdE6Cajdf3TA1a83_l7-3qd0JDBxTrD5MAv6pIQ7o6-o_ZZkBaVYP5QSkJnx2-RAR56SNavlOU7pza2-2HsjM0NtfYY7WU_UfgERdOEXtazqxBMaywy1E/s1600/assignments.png" width="640" /></a></div> <b>Archive Classes</b><br /> <br /> We also know that classes don&#8217;t go on forever. You don&#8217;t want to have to scroll through old classes to get to the ones you&#8217;re teaching or attending now, but you&#8217;ll likely want access to the valuable information in previous classes and work from them. That&#8217;s why today we&#8217;re launching the ability to <a href="https://support.google.com/edu/classroom/answer/6149813" target="_blank">archive classes</a>. Archiving a class will remove it from the home page and make it read-only &#8212; teachers and class members can still view archived classes, but can&#8217;t make any changes or turn in assignments.<br /> <br /> <a href="http://s1167.photobucket.com/user/cteruya/media/FINAL-ARCHIVE_zpsilqhvosx.gif.html" target="_blank"><img alt=" photo FINAL-ARCHIVE_zpsilqhvosx.gif" border="0" height="338" src="https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_sDPH9Enrg5LTDRpWJiA3CM8WesqiRFc8UCGrekB8-67ksJUso2jZHxSBrMxxwywShMr7Rs7kuUb13g99jiPLfAPTVXTyaPz7kVYx0-FnVgNp8TcR5TZjCTAko38GazvbXcF2YlPTCsVPLoXOd7yP7bpA=s0-d" width="640"></a><br /> We hope the new mobile apps and features for teachers will save you some time and paper this semester. Please keep sharing your feedback with us, and stay tuned for more new Classroom goodies before the school year is over.<br /> <br /></div> <br /></div> </noscript> </div> </div> <div class='share'> <span class='gplus-share social-wrapper' data-href='https://plus.google.com/share?url=https://cloud.googleblog.com/2015/01/A-Classroom-mobile-app-and-new-teacher-goodies.html'> <img alt='Share on Google+' height='24' src='https://www.gstatic.com/images/branding/google_plus/2x/ic_w_post_gplus_black_24dp.png' width='24'/> </span> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Cloud Blog:A Classroom mobile app and new teacher goodies&url=https://cloud.googleblog.com/2015/01/A-Classroom-mobile-app-and-new-teacher-goodies.html&via=gsuite'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://cloud.googleblog.com/2015/01/A-Classroom-mobile-app-and-new-teacher-goodies.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='comment-container'> <i class='comment-img material-icons'> &#57529; </i> <span class='cmt_count_iframe_holder' data-count='16' data-onclick='' data-post-url='https://cloud.googleblog.com/2015/01/A-Classroom-mobile-app-and-new-teacher-goodies.html' data-url='https://cloud.googleblog.com/2015/01/A-Classroom-mobile-app-and-new-teacher-goodies.html' style='color: #4184F3;'></span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://cloud.googleblog.com/2015/01/A-Classroom-mobile-app-and-new-teacher-goodies.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://cloud.googleblog.com/search/label/Classroom' rel='tag'> Classroom </a> </span> </div> </div> </div> <div class='post' data-id='4363743739559884354' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://cloud.googleblog.com/2015/01/heat-keeps-homes-warm-and-saves-energy.html' itemprop='url' title='HEAT keeps homes warm and saves energy with Google Maps'> HEAT keeps homes warm and saves energy with Google Maps </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Friday, January 9, 2015 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> <span class="byline-author">Posted by Bilal Karim, Lead Geoweb Analyst, MyHEAT<br /> </span> <br /> <i><b>Editor's note:</b> Today&#8217;s guest blogger is Bilal Karim, Lead Geoweb Analyst for <a href="http://myheat.co/" target="_blank">MyHEAT</a>, a commercial energy mapping product spun off the <a href="http://www.saveheat.co/" target="_blank">HEAT</a> research project at the University of Calgary, Alberta, Canada. See how other forward-thinking organizations are investing in mapping technology and transforming their business: <a href="https://atmosphere.withgoogle.com/live/maps?utm_source=gplus&amp;utm_medium=social&amp;utm_campaign=NA-LCS-2014-ATMO-Live-Phase_2-Social_G%2B-Online&amp;utm_content=organic" target="_blank">Maps are Going Google</a>.</i> <br /> <br /> If you get winter temperatures around -20&#176;F, like we do in Calgary, keeping your house warm while saving energy &#8212; and reducing heating costs &#8212; is a high priority. As a former master&#8217;s degree candidate in the Department of Geography at the University of Calgary, I worked with Dr. Geoffrey J. Hay, who came up with the idea of quantifying and visualizing the waste heat escaping from homes, communities, and cities in an effort to improve urban energy efficiency. If residents could click on a map and see the inefficient areas of their homes, they could take steps to lock heat inside the house, where it belongs. And so the Heat Energy Assessment Technologies (HEAT) project was born.<br /> <br /> Our research team brainstormed how to use detailed airborne thermal imagery to map the energy efficiency of Calgary homes. We developed a number of multi-scale maps and metrics, including &#8220;HEAT Scores&#8221; which we assign to houses and neighborhoods so residents can compare their homes&#8217; energy efficiency to their neighbors&#8217;. To showcase these levels of detail, we implemented the <a href="https://www.google.com/work/mapsearth/products/mapsapi.html" target="_blank">Google Maps API</a>. In particular, the Google Maps API allowed the maps to be user-friendly, included useful customization, and built on user&#8217;s prior knowledge, experience, and familiarity with the Google Maps products.<br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3GMtt3GWfHuv3AFX1WVtWmAb898XcgPfmElbOpJve9AcIlkkH7isWu8-P8pCANzWiJyPfJMc6C_ZkdzSK4kSOKQt3kLRPkcmSsjGa8J11wfAMpCf4X3MddXvEVrXFnii-YsFI-F9dbUg/s1600/HEAT_Info_Tabs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="386" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3GMtt3GWfHuv3AFX1WVtWmAb898XcgPfmElbOpJve9AcIlkkH7isWu8-P8pCANzWiJyPfJMc6C_ZkdzSK4kSOKQt3kLRPkcmSsjGa8J11wfAMpCf4X3MddXvEVrXFnii-YsFI-F9dbUg/s1600/HEAT_Info_Tabs.png" width="640" /></a></div> Here&#8217;s what we did:<br /> <br /> <ul style="text-align: left;"> <li>We deployed custom styling using the Google Maps API to choose our own colors for the base map. The thermal maps already have many hues to indicate heat efficiency, from blue to orange to red, so we picked neutral shades of gray for the base maps to establish a visual balance.</li> </ul> <ul style="text-align: left;"> <li>We integrated code from the <a href="https://code.google.com/p/google-maps-utility-library-v3/" target="_blank">Google Maps Utility Library</a> to display information to homeowners in three tabs. These tabs show residents (a) their home&#8217;s HEAT score, (b) a thermal image of the home showing &#8220;Hot Spots&#8221; where the most heat is escaping, and (c) estimated savings and reductions in greenhouse gases based on heating with different fuel types.</li> </ul> <ul style="text-align: left;"> <li>We also integrated the Google Maps Street View from the Google Maps API. The Street View images show a great amount of detail, linking our colored thermal images for each home, to allow residents to figure out where heat might be escaping &#8211; like through sliding-glass porch doors, windows, or from their roof.</li> </ul> <ul style="text-align: left;"> <li>Since we began this project, we used KML Layers to sub-divide the larger city and community maps into tiles, which helps our application load faster. However, these will soon be replaced by new additions to the Google Maps API such as <a href="http://googlegeodevelopers.blogspot.ca/2014/03/maps-made-easier-geojson-in-the-javascript-maps-api.html" target="_blank">GeoJSON</a> for better performance.</li> </ul> <ul style="text-align: left;"> <li>We also invite HEAT users to upload information about their roofing materials so we could refine their HEAT scores and provide better information back into our energy models. So far, about 2,600 people have volunteered this data.</li> </ul> We&#8217;re currently showing 37,914 houses in 29 different communities, and plan to expand to nearly 300,000+ single-dwelling homes in Calgary. In the meantime, we&#8217;ve launched <a href="http://myheat.co/" target="_blank">MyHEAT</a>, a startup company that will offer commercial products to utilities and municipalities based on our HEAT project. These new products, aimed at utilities and municipalities, will also use the Google Maps API to help people stay warmer every winter.</div> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> <span class="byline-author">Posted by Bilal Karim, Lead Geoweb Analyst, MyHEAT<br /> </span> <br /> <i><b>Editor's note:</b> Today&#8217;s guest blogger is Bilal Karim, Lead Geoweb Analyst for <a href="http://myheat.co/" target="_blank">MyHEAT</a>, a commercial energy mapping product spun off the <a href="http://www.saveheat.co/" target="_blank">HEAT</a> research project at the University of Calgary, Alberta, Canada. See how other forward-thinking organizations are investing in mapping technology and transforming their business: <a href="https://atmosphere.withgoogle.com/live/maps?utm_source=gplus&amp;utm_medium=social&amp;utm_campaign=NA-LCS-2014-ATMO-Live-Phase_2-Social_G%2B-Online&amp;utm_content=organic" target="_blank">Maps are Going Google</a>.</i> <br /> <br /> If you get winter temperatures around -20&#176;F, like we do in Calgary, keeping your house warm while saving energy &#8212; and reducing heating costs &#8212; is a high priority. As a former master&#8217;s degree candidate in the Department of Geography at the University of Calgary, I worked with Dr. Geoffrey J. Hay, who came up with the idea of quantifying and visualizing the waste heat escaping from homes, communities, and cities in an effort to improve urban energy efficiency. If residents could click on a map and see the inefficient areas of their homes, they could take steps to lock heat inside the house, where it belongs. And so the Heat Energy Assessment Technologies (HEAT) project was born.<br /> <br /> Our research team brainstormed how to use detailed airborne thermal imagery to map the energy efficiency of Calgary homes. We developed a number of multi-scale maps and metrics, including &#8220;HEAT Scores&#8221; which we assign to houses and neighborhoods so residents can compare their homes&#8217; energy efficiency to their neighbors&#8217;. To showcase these levels of detail, we implemented the <a href="https://www.google.com/work/mapsearth/products/mapsapi.html" target="_blank">Google Maps API</a>. In particular, the Google Maps API allowed the maps to be user-friendly, included useful customization, and built on user&#8217;s prior knowledge, experience, and familiarity with the Google Maps products.<br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3GMtt3GWfHuv3AFX1WVtWmAb898XcgPfmElbOpJve9AcIlkkH7isWu8-P8pCANzWiJyPfJMc6C_ZkdzSK4kSOKQt3kLRPkcmSsjGa8J11wfAMpCf4X3MddXvEVrXFnii-YsFI-F9dbUg/s1600/HEAT_Info_Tabs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="386" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3GMtt3GWfHuv3AFX1WVtWmAb898XcgPfmElbOpJve9AcIlkkH7isWu8-P8pCANzWiJyPfJMc6C_ZkdzSK4kSOKQt3kLRPkcmSsjGa8J11wfAMpCf4X3MddXvEVrXFnii-YsFI-F9dbUg/s1600/HEAT_Info_Tabs.png" width="640" /></a></div> Here&#8217;s what we did:<br /> <br /> <ul style="text-align: left;"> <li>We deployed custom styling using the Google Maps API to choose our own colors for the base map. The thermal maps already have many hues to indicate heat efficiency, from blue to orange to red, so we picked neutral shades of gray for the base maps to establish a visual balance.</li> </ul> <ul style="text-align: left;"> <li>We integrated code from the <a href="https://code.google.com/p/google-maps-utility-library-v3/" target="_blank">Google Maps Utility Library</a> to display information to homeowners in three tabs. These tabs show residents (a) their home&#8217;s HEAT score, (b) a thermal image of the home showing &#8220;Hot Spots&#8221; where the most heat is escaping, and (c) estimated savings and reductions in greenhouse gases based on heating with different fuel types.</li> </ul> <ul style="text-align: left;"> <li>We also integrated the Google Maps Street View from the Google Maps API. The Street View images show a great amount of detail, linking our colored thermal images for each home, to allow residents to figure out where heat might be escaping &#8211; like through sliding-glass porch doors, windows, or from their roof.</li> </ul> <ul style="text-align: left;"> <li>Since we began this project, we used KML Layers to sub-divide the larger city and community maps into tiles, which helps our application load faster. However, these will soon be replaced by new additions to the Google Maps API such as <a href="http://googlegeodevelopers.blogspot.ca/2014/03/maps-made-easier-geojson-in-the-javascript-maps-api.html" target="_blank">GeoJSON</a> for better performance.</li> </ul> <ul style="text-align: left;"> <li>We also invite HEAT users to upload information about their roofing materials so we could refine their HEAT scores and provide better information back into our energy models. So far, about 2,600 people have volunteered this data.</li> </ul> We&#8217;re currently showing 37,914 houses in 29 different communities, and plan to expand to nearly 300,000+ single-dwelling homes in Calgary. In the meantime, we&#8217;ve launched <a href="http://myheat.co/" target="_blank">MyHEAT</a>, a startup company that will offer commercial products to utilities and municipalities based on our HEAT project. These new products, aimed at utilities and municipalities, will also use the Google Maps API to help people stay warmer every winter.</div> </noscript> </div> </div> <div class='share'> <span class='gplus-share social-wrapper' data-href='https://plus.google.com/share?url=https://cloud.googleblog.com/2015/01/heat-keeps-homes-warm-and-saves-energy.html'> <img alt='Share on Google+' height='24' src='https://www.gstatic.com/images/branding/google_plus/2x/ic_w_post_gplus_black_24dp.png' width='24'/> </span> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Cloud Blog:HEAT keeps homes warm and saves energy with Google Maps&url=https://cloud.googleblog.com/2015/01/heat-keeps-homes-warm-and-saves-energy.html&via=gsuite'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://cloud.googleblog.com/2015/01/heat-keeps-homes-warm-and-saves-energy.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='comment-container'> <i class='comment-img material-icons'> &#57529; </i> <span class='cmt_count_iframe_holder' data-count='2' data-onclick='' data-post-url='https://cloud.googleblog.com/2015/01/heat-keeps-homes-warm-and-saves-energy.html' data-url='https://cloud.googleblog.com/2015/01/heat-keeps-homes-warm-and-saves-energy.html' style='color: #4184F3;'></span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://cloud.googleblog.com/2015/01/heat-keeps-homes-warm-and-saves-energy.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://cloud.googleblog.com/search/label/customer%20love' rel='tag'> customer love </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Energy' rel='tag'> Energy </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Gone%20Google' rel='tag'> Gone Google </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Google%20Maps' rel='tag'> Google Maps </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Google%20Maps%20API' rel='tag'> Google Maps API </a> , <a class='label' href='https://cloud.googleblog.com/search/label/HEAT' rel='tag'> HEAT </a> , <a class='label' href='https://cloud.googleblog.com/search/label/MyHEAT' rel='tag'> MyHEAT </a> , <a class='label' href='https://cloud.googleblog.com/search/label/University%20of%20Calgary' rel='tag'> University of Calgary </a> , <a class='label' href='https://cloud.googleblog.com/search/label/Winter' rel='tag'> Winter </a> </span> </div> </div> </div> <div class='blog-pager' id='blog-pager'> <a class='home-link' href='https://cloud.googleblog.com/'> <i class='material-icons'> &#59530; </i> </a> <span id='blog-pager-newer-link'> <a class='blog-pager-newer-link' href='https://cloud.googleblog.com/search?updated-max=2015-02-26T09:16:00-08:00&max-results=7&reverse-paginate=true' id='Blog1_blog-pager-newer-link' title='Newer Posts'> <i class='material-icons'> &#58820; </i> </a> </span> <span id='blog-pager-older-link'> <a class='blog-pager-older-link' href='https://cloud.googleblog.com/search?updated-max=2015-01-09T06:15:00-08:00&max-results=7' id='Blog1_blog-pager-older-link' title='Older Posts'> <i class='material-icons'> &#58824; </i> </a> </span> </div> <div class='clear'></div> </div></div> </div> </div> <div class='col-right'> <div class='section' id='sidebar-top'><div class='widget HTML' data-version='1' id='HTML8'> <div class='widget-content'> <div class='searchBox'> <input type='text' title='Search This Blog' placeholder='Search blog ...' /> </div> </div> <div class='clear'></div> </div></div> <div id='aside'> <div class='section' id='sidebar'><div class='widget Label' data-version='1' id='Label1'> <div class='tab'> <img class='sidebar-icon' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYpJREFUeNrs2aFuwzAQBmAvKRkMKRjZA4QMDJaWFgyMjuzFRg37DIUlA3uFkoGQSaWzJU+tpri5O9+l/zSfdFJlpe59yTmyVedq1PjfcZMZ70NuQnaF8w8htyE/rABtpviXkLcK88c5HhLkMBfgVan43zfFBNGMjHVGT/s55KP2pAvidbGHd+nzKt1RKSLG3rKF1iPFv6UWiPke8i7kEqGdGsI1O+LYVdqJAjgirwkKYD0ytkJBUNbAMvX8V3q9PhUsYvU1sWD8SO/sQvx2ahxOiNoJCSBCoAHYCEQAC4EKICOQASQEOmAS8RcAFxFN5hiIiugpgC3wk9hQAHH/70EBHXUN7IER5EWMiBgo2+nzOKQv9SCAeEM/OQAkhE/ncccFICB87qzQMia5FsJfOui0zMnmRvipU1ormHQuxGTxUsAcCFLxJQBLBLn4UoAFglW8BkATwS5eC6CBEBWvCShBiIvXBkgQRcVbADiI4uKtABSESvGWgB9EzHt3+tNwyO0qa9SoIYtvAQYAqDJhaWWeMecAAAAASUVORK5CYII='/> <h2> Labels </h2> <i class='material-icons arrow'> &#58821; </i> </div> <div class='widget-content list-label-widget-content'> <ul> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/%23innovationupgrade'> #innovationupgrade </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/%23InspireGirls'> #InspireGirls </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/%23moregoogleapps'> #moregoogleapps </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/%23SysAdminDay'> #SysAdminDay </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/%23tbt'> #tbt </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/%23throwbackthursday'> #throwbackthursday </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/%23top10trust'> #top10trust </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/100%25%20web'> 100% web </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/50states'> 50states </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/ad%20contest'> ad contest </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/add-ons'> add-ons </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/admin'> admin </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Admin%20console'> Admin console </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/admin%20sdk'> admin sdk </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/AirPlay'> AirPlay </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Android'> Android </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Android%20for%20Work'> Android for Work </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Android%20for%20Work%20Live'> Android for Work Live </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Android%20Marshmellow'> Android Marshmellow </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Android%20Nougat'> Android Nougat </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Android%20security'> Android security </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Android%20security%20tips'> Android security tips </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Apps%20Adventures'> Apps Adventures </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/apps%20script'> apps script </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/apptuesday'> apptuesday </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Armed%20Forces%20Day'> Armed Forces Day </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Asia%20Pacific'> Asia Pacific </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Atmosphere%20Live'> Atmosphere Live </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Audi'> Audi </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Audi%20Connect'> Audi Connect </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/audit'> audit </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Australia'> Australia </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/big%20data'> big data </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Big%20Query'> Big Query </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/bigquery'> bigquery </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Boston'> Boston </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/browser'> browser </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Chomebox%20for%20Meetings'> Chomebox for Meetings </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Chrome'> Chrome </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Chrome%20Device%20Management'> Chrome Device Management </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Chrome%20digital%20signage'> Chrome digital signage </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Chrome%20for%20Business'> Chrome for Business </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Chrome%20for%20Work'> Chrome for Work </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Chrome%20Frame'> Chrome Frame </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Chrome%20OS'> Chrome OS </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Chromebit'> Chromebit </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Chromebooks'> Chromebooks </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Chromebooks%20for%20Business'> Chromebooks for Business </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Chromebooks%20for%20Education'> Chromebooks for Education </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Chromebooks%20for%20Work'> Chromebooks for Work </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Chromebox%20for%20digital%20signage'> Chromebox for digital signage </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Chromebox%20for%20meetings'> Chromebox for meetings </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Chromebox%20for%20signage'> Chromebox for signage </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Chromeboxes'> Chromeboxes </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Chromecast'> Chromecast </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/City%2024%2F7'> City 24/7 </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Classroom'> Classroom </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Clearing%20Kosovo'> Clearing Kosovo </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Cloud'> Cloud </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/cloud%20computing'> cloud computing </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/cloud%20computing%20gonegoogle'> cloud computing gonegoogle </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/cloud%20computing%20gonegoogle%20Google%20Apps'> cloud computing gonegoogle Google Apps </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/cloud%20computing%20gonegoogle%20Google%20Apps%20google%20docs%20small%20business%20success%20story'> cloud computing gonegoogle Google Apps google docs small business success story </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/cloud%20computing%20gonegoogle%20Google%20Apps%20google%20docs%20small%20business%20success%20story%20switch'> cloud computing gonegoogle Google Apps google docs small business success story switch </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/cloud%20datastore'> cloud datastore </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/cloud%20platform'> cloud platform </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Cloud%20Platform%20Live'> Cloud Platform Live </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/cloud%20print'> cloud print </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/cloud%20series'> cloud series </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/cloud%20services'> cloud services </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/cloud%20sql'> cloud sql </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/collaboration'> collaboration </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Colorado'> Colorado </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Connectors'> Connectors </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/contacts'> contacts </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Control%20Panel'> Control Panel </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/customer'> customer </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/customer%20love'> customer love </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Customer%20story'> Customer story </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Customer%20support'> Customer support </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Customer%20testimonial'> Customer testimonial </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/data%20centers'> data centers </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/data%20processing%20amendment'> data processing amendment </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/data%20protection'> data protection </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Developer'> Developer </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/developers'> developers </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Digital%20Learning%20Day'> Digital Learning Day </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Docs'> Docs </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/documents'> documents </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/DPA'> DPA </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Drawings'> Drawings </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Drive%20for%20Education'> Drive for Education </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/drive%20sharing'> drive sharing </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Earth'> Earth </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/earth%20and%20maps'> earth and maps </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/EC'> EC </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/education'> education </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Education%20on%20Air'> Education on Air </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/EMC'> EMC </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/EMM'> EMM </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Energy'> Energy </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/enterprise'> enterprise </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/EU'> EU </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/events'> events </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/FedEx'> FedEx </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Fedex.com'> Fedex.com </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Finance'> Finance </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Firebase'> Firebase </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Forms'> Forms </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/franchises'> franchises </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/GAFE'> GAFE </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Gartner'> Gartner </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/GE'> GE </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/geo'> geo </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Global%20Partner%20Summit'> Global Partner Summit </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/gmail'> gmail </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Gone%20Google'> Gone Google </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/gonegoogle'> gonegoogle </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20AdWords'> Google AdWords </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20App%20Engine'> Google App Engine </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Apps'> Google Apps </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Apps%20Blog'> Google Apps Blog </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Apps%20for%20Business'> Google Apps for Business </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Apps%20for%20Education'> Google Apps for Education </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Apps%20for%20Government'> Google Apps for Government </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Apps%20for%20Work'> Google Apps for Work </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Apps%20Marketplace'> Google Apps Marketplace </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Apps%20Reseller'> Google Apps Reseller </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Apps%20Script'> Google Apps Script </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Apps%20Vault'> Google Apps Vault </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20BigQuery'> Google BigQuery </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Calendar'> Google Calendar </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Calendar%20app'> Google Calendar app </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Certified%20Teachers'> Google Certified Teachers </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Chrome'> Google Chrome </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Chromebases'> Google Chromebases </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Classroom'> Google Classroom </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Cloud%20Datastore'> Google Cloud Datastore </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Cloud%20DNS'> Google Cloud DNS </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Cloud%20Platform'> Google Cloud Platform </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/google%20cloud%20storage'> google cloud storage </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Cloud%20Vision%20API'> Google Cloud Vision API </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/google%20commerce%20search'> google commerce search </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Compute%20Engine'> Google Compute Engine </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Doc'> Google Doc </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Docs'> Google Docs </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Domains'> Google Domains </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Draw'> Google Draw </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Drive'> Google Drive </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Drive%20for%20Work'> Google Drive for Work </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Earth'> Google Earth </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Earth%20Engine'> Google Earth Engine </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Earth%20Enterprise'> Google Earth Enterprise </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Earth%20Images'> Google Earth Images </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Earth%20Pro'> Google Earth Pro </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Email%20Security%20and%20Archiving'> Google Email Security and Archiving </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Enterprise'> Google Enterprise </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Enterprise%20Search'> Google Enterprise Search </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Expeditions'> Google Expeditions </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20for%20Education'> Google for Education </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20for%20Education%20Partner%20Program'> Google for Education Partner Program </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20for%20Education%20Training%20Center'> Google for Education Training Center </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20for%20Entrepreneurs'> Google for Entrepreneurs </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20for%20Work'> Google for Work </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20for%20Work%20and%20Google%20for%20Education%20Partner%20Program'> Google for Work and Google for Education Partner Program </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20for%20Work%20partner%20program'> Google for Work partner program </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Forms'> Google Forms </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Green'> Google Green </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/google%20groups'> google groups </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Hangout'> Google Hangout </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Hangouts'> Google Hangouts </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20I%2FO'> Google I/O </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Keep'> Google Keep </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Maps'> Google Maps </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Maps%20API'> Google Maps API </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Maps%20APIs'> Google Maps APIs </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Maps%20Coordinate'> Google Maps Coordinate </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Maps%20Engine'> Google Maps Engine </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Maps%20Engine%20Pro'> Google Maps Engine Pro </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Maps%20Engine%20public%20data%20program'> Google Maps Engine public data program </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Maps%20for%20Business'> Google Maps for Business </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Maps%20for%20Work'> Google Maps for Work </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Maps%20Gallery'> Google Maps Gallery </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Maps%20Tracks%20API'> Google Maps Tracks API </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Message%20Continuity'> Google Message Continuity </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/google%20message%20security'> google message security </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Mobile%20Device%20Management'> Google Mobile Device Management </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20My%20Maps'> Google My Maps </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20My%20Maps%20Pro'> Google My Maps Pro </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Places%20API'> Google Places API </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Play'> Google Play </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/google%20play%20for%20education'> google play for education </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Prediction%20API'> Google Prediction API </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Research%20tool'> Google Research tool </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Science%20Fair'> Google Science Fair </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Search%20Appliance'> Google Search Appliance </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Security%20Key'> Google Security Key </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Sheets'> Google Sheets </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Site%20Search'> Google Site Search </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/google%20sites'> google sites </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Slides%20API'> Google Slides API </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Smart%20Lock'> Google Smart Lock </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20spreadsheets'> Google spreadsheets </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Springboard'> Google Springboard </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/google%20storage'> google storage </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Storage%20for%20Developers'> Google Storage for Developers </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Translate'> Google Translate </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Vault'> Google Vault </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Video'> Google Video </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%20Wave'> Google Wave </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/google%2B'> google+ </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%2B%20api'> Google+ api </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Google%2B%20Communities'> Google+ Communities </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/googlenew'> googlenew </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/government'> government </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/GSA'> GSA </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/GSA%207.0'> GSA 7.0 </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/GSA%20for%20Commerce'> GSA for Commerce </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/guest%20post'> guest post </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/HALO%20Trust'> HALO Trust </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Hangout%20on%20Air'> Hangout on Air </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Hangouts%20on%20Air'> Hangouts on Air </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/HEAT'> HEAT </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/hints%20and%20tips'> hints and tips </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/HIPAA'> HIPAA </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Inbox'> Inbox </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Inbox%20by%20Gmail'> Inbox by Gmail </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/innovation'> innovation </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/international%20trade'> international trade </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Internet%20Explorer'> Internet Explorer </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/intranet'> intranet </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/io2011'> io2011 </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/iOS'> iOS </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/iPad'> iPad </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/IT'> IT </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/K-12'> K-12 </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Kubernetes'> Kubernetes </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/large%20business'> large business </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/MAM'> MAM </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/manufacturing'> manufacturing </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Mapping%20a%20better%20world'> Mapping a better world </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/marketplace'> marketplace </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/marketplace%20highlights'> marketplace highlights </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/mashups'> mashups </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/MCCs'> MCCs </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/MDM'> MDM </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/medium%20business'> medium business </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/migration'> migration </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/mobile'> mobile </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/mobile%20management'> mobile management </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/model%20contract%20clauses'> model contract clauses </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/moms'> moms </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Mother%27s%20Day'> Mother&#39;s Day </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/mpstaffpick'> mpstaffpick </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/MyHEAT'> MyHEAT </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/NAVMAN'> NAVMAN </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/new%20features'> new features </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/news'> news </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Niagara%20International%20Transportation%20Technology%20Coalition'> Niagara International Transportation Technology Coalition </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/non-profit'> non-profit </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/noteworthy'> noteworthy </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/offline'> offline </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/OpenID%20Connect'> OpenID Connect </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Parters'> Parters </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/partner'> partner </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Partner%20Showcase'> Partner Showcase </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/partners'> partners </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Place%20Summaries'> Place Summaries </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Postini'> Postini </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/privacy'> privacy </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/product%20ideas'> product ideas </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/productivity'> productivity </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Quickoffice'> Quickoffice </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Receptionist%27s%20Day'> Receptionist&#39;s Day </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/reports'> reports </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Reseller'> Reseller </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/retail'> retail </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/RSA'> RSA </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Safer%20Internet%20Day'> Safer Internet Day </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/SBW2013'> SBW2013 </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/SBW2014'> SBW2014 </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/sbweek'> sbweek </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/SCCs'> SCCs </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Search'> Search </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Security'> Security </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Security%20Key'> Security Key </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/small%20business'> small business </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Small%20Business%20Week'> Small Business Week </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Small%20businesses'> Small businesses </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/SMB'> SMB </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/spam%20and%20security%20trends'> spam and security trends </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Startups'> Startups </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/success%20story'> success story </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/support'> support </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/switch'> switch </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/System%20Admin'> System Admin </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/T%20Dispatch'> T Dispatch </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Teamwork%202015'> Teamwork 2015 </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Thanksgiving'> Thanksgiving </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Transport%20and%20Logistics'> Transport and Logistics </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Trust'> Trust </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/UK'> UK </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/university'> university </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/University%20of%20Calgary'> University of Calgary </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Updates'> Updates </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/utilities'> utilities </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Veteran%20Owned%20Businesses'> Veteran Owned Businesses </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Veterans%20Day'> Veterans Day </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Veterans%20Day%202013'> Veterans Day 2013 </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Veterans%20Day%202014'> Veterans Day 2014 </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/viewpoint'> viewpoint </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/VNX'> VNX </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/wallet'> wallet </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/webinar'> webinar </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/webmaster'> webmaster </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Winter'> Winter </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/women%20in%20tech'> women in tech </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Women%27s%20History%20Month'> Women&#39;s History Month </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/Work%20Resolutions'> Work Resolutions </a> </li> <li> <a dir='ltr' href='https://cloud.googleblog.com/search/label/World%20Bank'> World Bank </a> </li> </ul> <div class='clear'></div> </div> </div><div class='widget BlogArchive' data-version='1' id='BlogArchive1'> <div class='tab'> <i class='material-icons icon'> &#58055; </i> <h2> Archive </h2> <i class='material-icons arrow'> &#58821; </i> </div> <div class='widget-content'> <div id='ArchiveList'> <div id='BlogArchive1_ArchiveList'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='https://cloud.googleblog.com/2016/'> 2016 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2016/10/'> October </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2016/09/'> September </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2016/08/'> August </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2016/07/'> July </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2016/06/'> June </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2016/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2016/04/'> April </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2016/03/'> March </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2016/02/'> February </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2016/01/'> January </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate expanded'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy toggle-open'> <i class='material-icons'> &#58823; </i> &#160; </span> </a> <a class='post-count-link' href='https://cloud.googleblog.com/2015/'> 2015 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2015/12/'> December </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2015/11/'> November </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2015/10/'> October </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2015/09/'> September </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2015/08/'> August </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2015/07/'> July </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2015/06/'> June </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2015/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2015/04/'> April </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2015/03/'> March </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2015/02/'> February </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate expanded'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2015/01/'> January </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='https://cloud.googleblog.com/2014/'> 2014 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2014/12/'> December </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2014/11/'> November </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2014/10/'> October </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2014/09/'> September </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2014/08/'> August </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2014/07/'> July </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2014/06/'> June </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2014/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2014/04/'> April </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2014/03/'> March </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2014/02/'> February </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2014/01/'> January </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='https://cloud.googleblog.com/2013/'> 2013 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2013/12/'> December </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2013/11/'> November </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2013/10/'> October </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2013/09/'> September </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2013/08/'> August </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2013/07/'> July </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2013/06/'> June </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2013/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2013/04/'> April </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2013/03/'> March </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2013/02/'> February </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2013/01/'> January </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='https://cloud.googleblog.com/2012/'> 2012 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2012/12/'> December </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2012/11/'> November </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2012/10/'> October </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2012/09/'> September </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2012/08/'> August </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2012/07/'> July </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2012/06/'> June </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2012/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2012/04/'> April </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2012/03/'> March </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2012/02/'> February </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2012/01/'> January </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='https://cloud.googleblog.com/2011/'> 2011 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2011/12/'> December </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2011/11/'> November </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2011/10/'> October </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2011/09/'> September </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2011/08/'> August </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2011/07/'> July </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2011/06/'> June </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2011/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2011/04/'> April </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2011/03/'> March </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2011/02/'> February </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2011/01/'> January </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='https://cloud.googleblog.com/2010/'> 2010 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2010/12/'> December </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2010/11/'> November </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2010/10/'> October </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2010/09/'> September </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2010/08/'> August </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2010/07/'> July </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2010/06/'> June </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2010/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2010/04/'> April </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2010/03/'> March </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2010/02/'> February </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2010/01/'> January </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='https://cloud.googleblog.com/2009/'> 2009 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2009/12/'> December </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2009/11/'> November </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2009/10/'> October </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2009/09/'> September </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2009/08/'> August </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2009/07/'> July </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2009/06/'> June </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2009/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2009/04/'> April </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2009/03/'> March </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2009/02/'> February </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2009/01/'> January </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='https://cloud.googleblog.com/2008/'> 2008 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2008/12/'> December </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2008/11/'> November </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2008/10/'> October </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2008/09/'> September </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2008/08/'> August </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2008/07/'> July </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2008/06/'> June </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2008/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2008/04/'> April </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2008/03/'> March </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2008/02/'> February </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2008/01/'> January </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='https://cloud.googleblog.com/2007/'> 2007 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2007/12/'> December </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2007/11/'> November </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2007/10/'> October </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2007/09/'> September </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2007/08/'> August </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2007/07/'> July </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2007/06/'> June </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2007/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2007/04/'> April </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2007/03/'> March </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2007/02/'> February </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2007/01/'> January </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='https://cloud.googleblog.com/2006/'> 2006 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2006/12/'> December </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2006/11/'> November </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2006/10/'> October </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2006/09/'> September </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2006/08/'> August </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2006/07/'> July </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2006/06/'> June </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2006/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2006/04/'> April </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2006/03/'> March </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2006/02/'> February </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://cloud.googleblog.com/2006/01/'> January </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> </div> </div> <div class='clear'></div> </div> </div><div class='widget HTML' data-version='1' id='HTML6'> <div class='widget-content'> <a href="http://cloud.blogspot.com/atom.xml"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAihJREFUeNrsWa9Pw0AU7viRMDFRBAkzJDMIBIhJJhCzk7NILIqMv4AEhdz+BCY3OYssAlGBoAJREpZwAlHEBO8lr8nSvNeVbu1dyX3JlzTrXfa+u/e9d7c5joWFhYVO1Fa8PwH2gK6m+BRwAvSlAdsrgr8E1jUuMH73GTAEzrkBWymTewZlihhLmgDXIAFuHgGVQOUF7OSYM1p6PgTuA1vAZlUEvAnPdapcMY0VICECekQ0XRfYrqoHsAGNgXfAoMomRiFDEhOZkkL3S88hMaB2LwXp0bj+ps2edpToZpjfoIDQtBeU+xjoDzP2G/gCPKZ5f8WsCAFJoJgOCcFdWSTeL9YQMSvTA1h9BkI5jaiXhLpSCL/8mVZY0UpyJ9ZdOkniu1dmJ96BpzQu9w6s28gcOq9j6pwLdR8/36NK5CQKwJSMrb2MhhSglBpt4UjsrdsnNu0B3J0HCozbCc4TjyY2srEgos/4RQljCzNxl4ireQD8FOq+T+W0mTB2g7njhlR+Sy2jsXFvU658U8YTbeaGpdIu7mWkEAq5ZtIjIhFZdtfX7QHckSvB2B6zC3VdAkZk0kAQwaXTk/CzTXK3wjIExCs6ZJpTnE4uY1KV+KzFzA3KTiFPENHJkOPcsfpLhwe4btoSuvUqAR+6TOxlCE6ZfKUsJLgsqGW8OpqAGx2X+sLxrwUog+JUeQRMDBIwyXOcnlPtPnL0/UsT/8LnOxYWFhZG4leAAQAAQHEaYuzHbAAAAABJRU5ErkJggg==" class="sidebar-icon" /> <h2>Feed</h2> </a> </div> <div class='clear'></div> </div></div> <div class='section' id='sidebar-bottom'><div class='widget HTML' data-version='1' id='HTML5'> <div class='widget-content'> <div class="followgooglewrapper"> <a href="http://plus.google.com/+googlecloud" rel="publisher" style="text-decoration:none;display:inline-block;color:#333;text-align:center; font:13px/16px arial,sans-serif;white-space:nowrap;"> <span style="display:inline-block;font-weight:bold;vertical-align:top;margin-right:5px; margin-top:0px;">Google</span><span style="display:inline-block;vertical-align:top;margin-right:13px; margin-top:0px;">on</span> <img src="//ssl.gstatic.com/images/icons/gplus-16.png" alt="Google+" style="border:0;width:16px;height:16px;"/></a> </div> <div class='followgooglewrapper'> <script src="https://apis.google.com/js/plusone.js"></script> <div class="g-ytsubscribe" data-channel="GoogleApps" data-layout="full"></div> </div> <!--Twitter--> <div class="share followgooglewrapper"> <button data-href="https://twitter.com/gsuite" onclick='sharingPopup(this);' id='twitter-share'><span class="twitter-follow">Follow @gsuite</span></button> <script> function sharingPopup (button) { var url = button.getAttribute("data-href"); window.open( url,'popUpWindow','height=500,width=500,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes'); } </script> </div> </div> <div class='clear'></div> </div><div class='widget HTML' data-version='1' id='HTML1'> <h2 class='title'> Useful Links </h2> <div class='widget-content'> <a href="https://gsuite.google.com/together/">G Suite</a><br /><a href="https://apps.google.com/products/gmail/?utm_medium=et&utm_source=appsblog&utm_campaign=en&utm_content=gmail">Gmail</a><br /><a href="https://apps.google.com/products/hangouts/?utm_medium=et&utm_source=appsblog&utm_campaign=en&utm_content=hangouts">Hangouts</a><br /><a href="https://apps.google.com/products/calendar/?utm_medium=et&utm_source=appsblog&utm_campaign=en&utm_content=calendar">Calendar</a><br /><a href="https://apps.google.com/products/googleplus/?utm_medium=et&utm_source=appsblog&utm_campaign=en&utm_content=gplus">Google+</a><br /><a href="https://apps.google.com/products/drive/?utm_medium=et&utm_source=appsblog&utm_campaign=en&utm_content=drive">Google Drive</a><br /><a href="https://www.google.com/work/mapsearth/">Google Maps</a><br /><a href="https://cloud.google.com/">Google Cloud Platform</a> </div> <div class='clear'></div> </div></div> </div> </div> <div style='clear:both;'></div> </div> <!-- Footer --> <div class='footer-outer loading'> <div class='footer-inner'> <div class='footer-inner-2'> <div style='width:33%;float:left;'> <div class='section' id='footer-1'><div class='widget HTML' data-version='1' id='HTML2'> <h2 class='title'> Company-wide </h2> <div class='widget-content'> <ul> <li> <a href="//googleblog.blogspot.com/" title="Official Google">Official Google Blog</a> </li> <li> <a href="//googlepublicpolicy.blogspot.com/" title="Public Policy">Public Policy Blog</a> </li> <li> <a href="//googleforstudents.blogspot.com/" title="Student">Student Blog</a> </li> </ul> </div> <div class='clear'></div> </div></div> </div> <div style='width:33%;float:left;'> <div class='section' id='footer-2'><div class='widget HTML' data-version='1' id='HTML3'> <h2 class='title'> Products </h2> <div class='widget-content'> <ul> <li> <a href="//officialandroid.blogspot.com/" title="Android">Android Blog</a> </li> <li> <a href="//chrome.blogspot.com/" title="Chrome">Chrome Blog</a> </li> <li> <a href="//google-latlong.blogspot.com/" title="Lat Long">Lat Long Blog</a> </li> </ul> </div> <div class='clear'></div> </div></div> </div> <div style='width:33%;float:left;'> <div class='section' id='footer-3'><div class='widget HTML' data-version='1' id='HTML4'> <h2 class='title'> Developers </h2> <div class='widget-content'> <ul> <li> <a href="//googledevelopers.blogspot.com/" title="Developers">Developers Blog</a> </li> <li> <a href="//googleadsdeveloper.blogspot.com/" title="Ads Developer">Ads Developer Blog</a> </li> <li> <a href="//android-developers.blogspot.com/" title="Android">Android Developers Blog</a> </li> </ul> </div> <div class='clear'></div> </div></div> </div> <div style='clear:both;'></div> </div> </div> </div> <div class='google-footer-outer loading'> <div id='google-footer'> <a href='//www.google.com/'> <img class='google-logo-dark' height='36' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALgAAABICAYAAABFoT/eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACLVJREFUeNrsXd+L20YQ3vOprdLqiMXFXE2qB7dcwEcTSB7ykIc+9A/PQx/yEMq1TWhNuYIpJriNr7XpmZ5IxFEvmW2EKs3Ornb1w50PxIFP0kiz387OzM6uhGAwGAxGP3Ho+f7x7ri1O7LdccPqZjSNA4dEHsLfaHcEFedJom93x9Xu2OyOFTcBo6sED3fHZHeMEELrkAHJF0B8Rr+gDFsZ5n0luLTQ95AXs4W06D/tjpR50xtM4CjD0y48YGB4rnyZxNOzyA7zBHr+nLnDaJLg0mo/ALekCasg3Z4XbM0ZdTEgnDPeHY8bIne+Qz2GvwyGNwsuyT218KWvIIBMcwGpLiipcolecjMxfBDchNyS1EvxLiOSIecp31q6IJ/C3yrIrMqMm4jhg+AxkdwbIO3aUO4KjqqMjCT3uaazMBhWBJfuxH3CtRfiXf66DhSRZWbmlMnNaILgZxrXJQO/eO3wORZwvwm4JUxuhheCjzVBYAbW1ces45YDSoZrFNOEE835M8FT6oyeEnws8Fz3QnBxFKPHBMem4GU+m6fPGb0leCTwWcM5B36MPgeZI01gudyDdw3hPeXfo8L/rmCUWnuMMdqUL2WqWeRbhf+twfVsO7YagZGNC79fw7OthEVtkiJ4jJzTd3KPwf3CRqhhiTu23AP5sl0/0xiwISQXpNwLIJK87mHF+U8ddzzdmgKlGzlPYjyxGJQouIhNT4k9AqWEFkqfguIvagTWbcq3KW1WE3xS3m8NtA9WS451xofwjKT5kkDoK/b6mDk5FfXr1lWDL4BofZEv2/SRsK/EHGlGdBdu8QNRb8HMCFwt7Yy3DDI/QP7fx5z3VLhdlJEIs4rKNuXXJXdxZPdB7kfCzWqwCO4V1LHgLjInX3tQ1KzCR52Cz+vDj1dydeRuS74rcvs2Pi6fT5H8OaaUQPQPYcWwRSGXyhhscn5dpAnEFMkuEZetbfkTAnlSuH4DxisE+aMGeJAQ3lFl7C4LJE6QWCaCd583ORQ1jYAwjFctal7nOs2ZZvicwvlZx+RHGrcoAwKUVX8uwcc/9TT65INeDOr5shL9LDRB6QTeIy3zwfdh3WOi6axLCEhSjXU7F3h6LqggUtvyJxpynwu8tDkD98fXApOxRj8zoZ9MnGveYVIVZKaGrkBXCY65BCYNN9NkjpKOyQ81Q79JgdxS+Jn3SDTEXRI7SWzaiSTB32oI3nU3BvMfM0urhOVYgwKhuiAfc4tM07wXwm1ZRoQYSl2NUwiu01fEAHVcpixd745FvVz4dzUUc0o8rwoLy8ZSwU6CyFx1RP5II9+1bFPEFs9HWbNLiimDXE+vCm7u1CS47cofzD3aEhVY57mxRo5zlqdt+RFC1JUH2S7bcVXg4liTMakaBZZVxiTICRoivcn1sEUBlk24JmaC6kxUbYmWoqvyfck2xZGGnDFYa9MMzkYQ1ijkCX6qidybrgePiQ0QIQqoi6qRLeqQfIoRsEHaQJLBdHOnLGetSdm/IPcymJuS1PAnbQPH0MOw/39C1vL11DiLOqIsbDI8QcHvGiLnySi2qUXBicaqUSxN5LEB0g7Jt3ENXJLPJ5S1tnaZBoWbpRqrmjRE7qHmpSmNHdQcYrEUadoh+TbBnc9ri7iycI1kzPeNcLDIvbiqXpez9Tmdq6zGREPuzECBoxrPMiI2WtvyNwhJba2wy3JZ6ky5dD1lSvmZS3e4SPA1wcf1VTFHKX+cGwZzdUYcqpvUtvwrD/InDttVlyZeAKlNN5MKbAiurHhKIPlUuJvlTCCiDjSKSCsUmCFWbGLZwCESfK07JB8LvMYWVtw0D00JEHV8Mq2HkqPbE0oHLvvK2g0o8ETg+4cfwTlZDT9JDoWygu4uQQE/ivIvtcnfPkaCqhiupz7jWOAzqL/vjtcdkv9G4MVMt+EaylfuImiPAXEUjRF3pjjaHiPPZ6If9TGGAO4ZY0am6jOCb+DQ+ZCqLkIpOIPrdNfIjnFPY6nyFut7TS/fanrziOBOKMupKw94WaLMtuVnSFt9CPrWWdJE6PeltCX432DEBoh+5Dv8RRhdis8YAv9uyq4/JAwtlEApgBe9Cw9xDD3tdk4Jn0MDfiHwPHcRPxBePCMER3GuIx7kGlv9fkZ4V9lolx2Uv4X7hEj7qJ3LDoAMGbTRMRibu4L2xQ8bgt8AyU+Q+x7nYrvDnH4iuO5LxKsYwPVbkPMvKF9Zky9wXzRfVWizi62r9X5VHf55h+WHhDjGBZ4WRhyTr6z5SlCoLMxLSpBZFsQ9F80uQFbF/6aFWi+Ev51vzzsuX+msyzuQXXjUz8zEBy+zpq9yweXAoxJW4JbYrDS6gYDqGHxPl+TKeiBfxj9/EBIElPYeOA4y8/qRQfknjvSzgRgtq0Pw/M1eQeMdOSb2Bnrhr6Led+1vcp2x7oTFHMnedFW+Ivlty062BUt74oHgSj+vHepnhunn0JJAMtBZgDI/qmGtMujRv8DDpo47zBJ8UtPOuAR/7rKn8t9AJ0tBdmBAmJ/Fu71yxp4I3qh+DhyRqbi5Y1ShVPlSb8X7bRNcfgZFl+WRGYo7uecrWq1r8X5bhmzP5OdlDwsGRm1suSxkg5rYm7ConyGQ3Zl+DgSD8V/kPwrWBMG9YcBtyShBnTLdTiHgttw7qAW7cqh/ZnmPKr/6ignOaKsdyxbsToT5UkPsW00bJjijDXficcX/JsLs6w2BwGtherdckH3w/kNXRPVI0OqJQoHX42/66IMfMj/2huRjxIidgKV/W0JS+bsstDoTeAHcrI8E5zTh/sDkqxL5rZup55/3USlswfcHf4IrQplVDgW9XFlOqnwr6pVPMMEZTuC60EttvdzbLbaZ4PsFVa3nohhO+vW+yn/ZB2fUhpysmQrzBcTSai9EszuZMcEZ1lCFVrp9zGXhm69iLyY4oxFIa178lPe12I/P2DAYDAaDwWAwGAwGg8FgMBgMBoPBYDD2Cf8IMADDRGoQTe+E9AAAAABJRU5ErkJggg==' style='margin-top: -16px;' width='92'/> </a> <ul> <li> <a href='//www.google.com/'> Google </a> </li> <li> <a href='//www.google.com/policies/privacy/'> Privacy </a> </li> <li> <a href='//www.google.com/policies/terms/'> Terms </a> </li> </ul> </div> </div> <script type='text/javascript'> //<![CDATA[ // Social sharing popups. var postEl = document.getElementsByClassName('social-wrapper'); var postCount = postEl.length; for(i=0; i<postCount;i++){ postEl[i].addEventListener("click", function(event){ var postUrl = this.getAttribute("data-href"); window.open( postUrl,'popUpWindow','height=500,width=500,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes'); });} //]]> </script> <script type='text/javascript'> //<![CDATA[ var BreakpointHandler = function() { this.initted = false; this.isHomePage = false; this.isMobile = false; }; BreakpointHandler.prototype.finalizeSummary = function(summaryHtml, lastNode) { // Use $.trim for IE8 compatibility summaryHtml = $.trim(summaryHtml).replace(/(<br>|\s)+$/,''); if (lastNode.nodeType == 3) { var lastChar = summaryHtml.slice(-1); if (!lastChar.match(/[.”"?]/)) { if (!lastChar.match(/[A-Za-z]/)) { summaryHtml = summaryHtml.slice(0, -1); } summaryHtml += ' ...'; } } else if (lastNode.nodeType == 1 && (lastNode.nodeName == 'I' || lastNode.nodeName == 'A')) { summaryHtml += ' ...'; } return summaryHtml; }; BreakpointHandler.prototype.generateSummaryFromContent = function(content, numWords) { var seenWords = 0; var summaryHtml = ''; for (var i=0; i < content.childNodes.length; i++) { var node = content.childNodes[i]; var nodeText; if (node.nodeType == 1) { if (node.hasAttribute('data-about-pullquote')) { continue; } nodeText = node.textContent; if (nodeText === undefined) { // innerText for IE8 nodeText = node.innerText; } if (node.nodeName == 'DIV' || node.nodeName == 'B') { // Don't end early if we haven't seen enough words. if (seenWords < 10) { continue; } if (i > 0) { summaryHtml = this.finalizeSummary(summaryHtml, content.childNodes[i-1]); } break; } summaryHtml += node.outerHTML; } else if (node.nodeType == 3) { nodeText = node.nodeValue; summaryHtml += nodeText + ' '; } var words = nodeText.match(/\S+\s*/g); if (!words) { continue; } var remain = numWords - seenWords; if (words.length >= remain) { summaryHtml = this.finalizeSummary(summaryHtml, node); break; } seenWords += words.length; } return summaryHtml; }; BreakpointHandler.prototype.detect = function() { var match, pl = /\+/g, search = /([^&=]+)=?([^&]*)/g, decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); }, query = window.location.search.substring(1); var urlParams = {}; while (match = search.exec(query)) urlParams[decode(match[1])] = decode(match[2]); this.isListPage = $('html').hasClass('list-page'); this.isMobile = urlParams['m'] === '1'; this.isHomePage = window.location.pathname == '/'; }; BreakpointHandler.prototype.initContent = function() { var self = this; $('.post').each(function(index) { var body = $(this).children('.post-body')[0]; var content = $(body).children('.post-content')[0]; $(content).addClass('post-original'); var data = $(content).children('script').html(); data = self.rewriteForSSL(data); // If exists, extract specified editor's preview. var match = data.match(/([\s\S]+?)<div data-is-preview.+?>([\s\S]+)<\/div>/m); if (match) { data = match[1]; } // Prevent big images from loading when they aren't needed. // This must be done as a pre-injection step, since image loading can't be // canceled once embedded into the DOM. if (self.isListPage && self.isMobile) { data = data.replace(/<(img|iframe) .+?>/g, ''); } // Insert template to be rendered as nodes. content.innerHTML = data; if (self.isListPage) { var summary = document.createElement('div'); $(summary).addClass('post-content'); $(summary).addClass('post-summary'); body.insertBefore(summary, content); if (match) { // Use provided summary. summary.innerHTML = match[2]; } else { // Generate a summary. // Summary generation relies on DOM, so it must occur after content is // inserted into the page. summary.innerHTML = self.generateSummaryFromContent(content, 30); } // Add read more link to summary. var titleAnchor = $(this).find('.title a')[0]; var link = titleAnchor.cloneNode(true); link.innerHTML = 'Read More'; $(link).addClass('read-more'); summary.appendChild(link); } }); // Firefox does not allow for proper styling of BR. if (navigator.userAgent.indexOf('Firefox') > -1) { $('.post-content br').replaceWith('<span class="space"></span>'); } $('.loading').removeClass('loading'); }; BreakpointHandler.prototype.process = function() { if (!this.initted) { var makeInsecureImageRegex = function(hosts) { var whitelist = hosts.join('|').replace(/\./g,'\\.'); // Normal image tags, plus input images (yes, this is possible!) return new RegExp('(<(img|input)[^>]+?src=("|\'))http:\/\/(' + whitelist +')', 'g'); }; this.sslImageRegex = makeInsecureImageRegex(BreakpointHandler.KNOWN_HTTPS_HOSTS); this.sslImageCurrentDomainRegex = makeInsecureImageRegex([window.location.hostname]); this.detect(); this.initContent(); this.initted = true; } }; BreakpointHandler.KNOWN_HTTPS_HOSTS = [ "www.google.org", "www.google.com", "services.google.com", "blogger.com", "draft.blogger.com", "www.blogger.com", "photos1.blogger.com", "photos2.blogger.com", "photos3.blogger.com", "blogblog.com", "img1.blogblog.com", "img2.blogblog.com", "www.blogblog.com", "www1.blogblog.com", "www2.blogblog.com", "0.bp.blogspot.com", "1.bp.blogspot.com", "2.bp.blogspot.com", "3.bp.blogspot.com", "4.bp.blogspot.com", "lh3.googleusercontent.com", "lh4.googleusercontent.com", "lh5.googleusercontent.com", "lh6.googleusercontent.com", "themes.googleusercontent.com", ]; BreakpointHandler.prototype.rewriteForSSL = function(html) { // Handle HTTP -> HTTPS source replacement of images, movies, and other embedded content. return html.replace(this.sslImageRegex, '$1https://$4') .replace(this.sslImageCurrentDomainRegex, '$1//$4') .replace(/(<(embed|iframe)[^>]+?src=("|'))http:\/\/([^"']*?(youtube|picasaweb\.google)\.com)/g, '$1https://$4') // Slideshow SWF takes a image host, so we need to rewrite that parameter. .replace(/(<embed[^>]+?feed=http(?=[^s]))/g, '$1s'); }; $(document).ready(function() { var handler = new BreakpointHandler(); handler.process(); // Top-level navigation. $(".BlogArchive .tab").click(function(ev) { ev.preventDefault(); $(this).parent().toggleClass('active'); $(this).siblings().slideToggle(300); }); $(".Label .tab").click(function(ev) { ev.preventDefault(); $(this).parent().toggleClass('active'); $(this).siblings().slideToggle(300); }); // Blog archive year expansion. $('.BlogArchive .intervalToggle').click(function(ev) { ev.preventDefault(); if ($(this).parent().hasClass('collapsed')) { $(this).parent().removeClass('collapsed'); $(this).parent().addClass('expanded'); } else { $(this).parent().removeClass('expanded'); $(this).parent().addClass('collapsed'); } }); // Reverse order of months. $('.BlogArchive .intervalToggle + div').each(function(_, items) { var year = $(this); year.children().each(function(_, month) { year.prepend(month); }); }); // Set anchors to open in new tab. $('.post-content img').parent().each(function(_, node) { if (node.nodeName == 'A') { $(this).attr('target', '_blank'); } }); // Process search requests. $('.searchBox input').on("keypress", function(ev) { if (ev.which == 13) { window.location.href = 'https://www.google.com/search?q=site%3A' + window.location.hostname + '%20' + encodeURIComponent ($(this).val()); } }); }); //]]> </script> <script type="text/javascript" src="https://www.blogger.com/static/v1/widgets/984859869-widgets.js"></script> <script type='text/javascript'> window['__wavt'] = 'AOuZoY4UBKH1fit0i5qEFXpFP8ueo8Ls7w:1732367567248';_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d6567687196385815607','//cloud.googleblog.com/2015/01/','6567687196385815607'); _WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '6567687196385815607', 'title': 'Official Google Cloud Blog', 'url': 'https://cloud.googleblog.com/2015/01/', 'canonicalUrl': 'https://cloud.googleblog.com/2015/01/', 'homepageUrl': 'https://cloud.googleblog.com/', 'searchUrl': 'https://cloud.googleblog.com/search', 'canonicalHomepageUrl': 'https://cloud.googleblog.com/', 'blogspotFaviconUrl': 'https://cloud.googleblog.com/favicon.ico', 'bloggerUrl': 'https://www.blogger.com', 'hasCustomDomain': true, 'httpsEnabled': true, 'enabledCommentProfileImages': true, 'gPlusViewType': 'FILTERED_POSTMOD', 'adultContent': false, 'analyticsAccountNumber': 'UA-18038-3', 'encoding': 'UTF-8', 'locale': 'en', 'localeUnderscoreDelimited': 'en', 'languageDirection': 'ltr', 'isPrivate': false, 'isMobile': false, 'isMobileRequest': false, 'mobileClass': '', 'isPrivateBlog': false, 'isDynamicViewsAvailable': true, 'feedLinks': '\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Official Google Cloud Blog - Atom\x22 href\x3d\x22https://cloud.googleblog.com/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22Official Google Cloud Blog - RSS\x22 href\x3d\x22https://cloud.googleblog.com/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Official Google Cloud Blog - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/6567687196385815607/posts/default\x22 /\x3e\n', 'meTag': '', 'adsenseHostId': 'ca-host-pub-1556223355139109', 'adsenseHasAds': false, 'adsenseAutoAds': false, 'boqCommentIframeForm': true, 'loginRedirectParam': '', 'view': '', 'dynamicViewsCommentsSrc': '//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//www.blogblog.com/dynamicviews/d78375fb222d99b3', 'plusOneApiSrc': 'https://apis.google.com/js/platform.js', 'disableGComments': true, 'interstitialAccepted': false, 'sharing': {'platforms': [{'name': 'Get link', 'key': 'link', 'shareMessage': 'Get link', 'target': ''}, {'name': 'Facebook', 'key': 'facebook', 'shareMessage': 'Share to Facebook', 'target': 'facebook'}, {'name': 'BlogThis!', 'key': 'blogThis', 'shareMessage': 'BlogThis!', 'target': 'blog'}, {'name': 'X', 'key': 'twitter', 'shareMessage': 'Share to X', 'target': 'twitter'}, {'name': 'Pinterest', 'key': 'pinterest', 'shareMessage': 'Share to Pinterest', 'target': 'pinterest'}, {'name': 'Email', 'key': 'email', 'shareMessage': 'Email', 'target': 'email'}], 'disableGooglePlus': true, 'googlePlusShareButtonWidth': 0, 'googlePlusBootstrap': '\x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27en\x27};\x3c/script\x3e'}, 'hasCustomJumpLinkMessage': false, 'jumpLinkMessage': 'Read more', 'pageType': 'archive', 'pageName': 'January 2015', 'pageTitle': 'Official Google Cloud Blog: January 2015'}}, {'name': 'features', 'data': {}}, {'name': 'messages', 'data': {'edit': 'Edit', 'linkCopiedToClipboard': 'Link copied to clipboard!', 'ok': 'Ok', 'postLink': 'Post Link'}}, {'name': 'template', 'data': {'name': 'custom', 'localizedName': 'Custom', 'isResponsive': false, 'isAlternateRendering': false, 'isCustom': true}}, {'name': 'view', 'data': {'classic': {'name': 'classic', 'url': '?view\x3dclassic'}, 'flipcard': {'name': 'flipcard', 'url': '?view\x3dflipcard'}, 'magazine': {'name': 'magazine', 'url': '?view\x3dmagazine'}, 'mosaic': {'name': 'mosaic', 'url': '?view\x3dmosaic'}, 'sidebar': {'name': 'sidebar', 'url': '?view\x3dsidebar'}, 'snapshot': {'name': 'snapshot', 'url': '?view\x3dsnapshot'}, 'timeslide': {'name': 'timeslide', 'url': '?view\x3dtimeslide'}, 'isMobile': false, 'title': 'Official Google Cloud Blog', 'description': 'Built in the cloud. Engineered for your enterprise.', 'url': 'https://cloud.googleblog.com/2015/01/', 'type': 'feed', 'isSingleItem': false, 'isMultipleItems': true, 'isError': false, 'isPage': false, 'isPost': false, 'isHomepage': false, 'isArchive': true, 'isLabelSearch': false, 'archive': {'year': 2015, 'month': 1, 'rangeMessage': 'Showing posts from January, 2015'}}}]); _WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', 'header', document.getElementById('Header1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'main', document.getElementById('Blog1'), {'cmtInteractionsEnabled': false}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML8', 'sidebar-top', document.getElementById('HTML8'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_LabelView', new _WidgetInfo('Label1', 'sidebar', document.getElementById('Label1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogArchiveView', new _WidgetInfo('BlogArchive1', 'sidebar', document.getElementById('BlogArchive1'), {'languageDirection': 'ltr', 'loadingMessage': 'Loading\x26hellip;'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML6', 'sidebar', document.getElementById('HTML6'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML5', 'sidebar-bottom', document.getElementById('HTML5'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML1', 'sidebar-bottom', document.getElementById('HTML1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML2', 'footer-1', document.getElementById('HTML2'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML3', 'footer-2', document.getElementById('HTML3'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML4', 'footer-3', document.getElementById('HTML4'), {}, 'displayModeFull')); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10