CINXE.COM
Google for Developers Blog - News about Web, Mobile, AI and Cloud
<!DOCTYPE html> <html class="v2" dir="ltr" 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><script type="text/javascript" src="https://web-static.archive.org/_static/js/bundle-playback.js?v=7YQSqjSh" charset="utf-8"></script> <script type="text/javascript" src="https://web-static.archive.org/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="https://web-static.archive.org/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("http://web.archive.org/web"); __wm.wombat("https://developers.googleblog.com/search/label/Google%20Developer%20Groups?max-results=12","20230528023843","http://web.archive.org/","web","https://web-static.archive.org/_static/", "1685241523"); </script> <link rel="stylesheet" type="text/css" href="https://web-static.archive.org/_static/css/banner-styles.css?v=p7PEIJWi" /> <link rel="stylesheet" type="text/css" href="https://web-static.archive.org/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <link href="http://web.archive.org/web/20230528023843cs_/https://www.blogger.com/static/v1/widgets/3566091532-css_bundle_v2.css" rel="stylesheet" type="text/css"/> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&='+l:'';j.async=true;j.src= 'http://web.archive.org/web/20230528023843/https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-WVTLDSL');</script> <!-- End Google Tag Manager --> <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/> <meta content="blogger" name="generator"/> <link href="http://web.archive.org/web/20230528023843im_/https://developers.googleblog.com/favicon.ico" rel="icon" type="image/x-icon"/> <link href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/search/label/Google%20Developer%20Groups?max-results=12" rel="canonical"/> <link rel="alternate" type="application/atom+xml" title="Google for Developers Blog - News about Web, Mobile, AI and Cloud - Atom" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/feeds/posts/default"/> <link rel="alternate" type="application/rss+xml" title="Google for Developers Blog - News about Web, Mobile, AI and Cloud - RSS" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/feeds/posts/default?alt=rss"/> <link rel="service.post" type="application/atom+xml" title="Google for Developers Blog - News about Web, Mobile, AI and Cloud - Atom" href="https://www.blogger.com/feeds/596098824972435195/posts/default"/> <!--Can't find substitution for tag [blog.ieCssRetrofitLinks]--> <meta content="News and insights on Google platforms, tools, and events." name="description"/> <meta content="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/search/label/Google%20Developer%20Groups?max-results=12" property="og:url"/> <meta content="Google for Developers Blog - News about Web, Mobile, AI and Cloud" property="og:title"/> <meta content="News and insights on Google platforms, tools, and events." property="og:description"/> <meta charset="UTF-8"/> <meta content="IE=edge" http-equiv="X-UA-Compatible"/> <meta content="width=device-width, initial-scale=1" name="viewport"/> <meta content="http://web.archive.org/web/20230528023843im_/https://www.gstatic.com/dgc_blog/images/meta.png" property="og:image"/> <meta content="https://www.gstatic.com/dgc_blog/images/meta.png" property="twitter:image"/> <meta content="summary_large_image" name="twitter:card"/> <meta content="Google for Developers Blog - News about Web, Mobile, AI and Cloud: Google Developer Groups" property="twitter:title"/> <meta content="http://web.archive.org/web/20230528023843im_/https://www.gstatic.com/dgc_blog/images/meta.png" property="og:image"/> <title>Google for Developers Blog - News about Web, Mobile, AI and Cloud</title> <style id="page-skin-1" type="text/css"><!-- /* MINIFIED CSS STYLES*/ body{font-family:Roboto,sans-serif;font-weight:400;font-size:16px;line-height:28px;-webkit-font-smoothing:antialiased;color:#202124}h1{font-family:Google Sans Display,sans-serif;font-size:44px;font-weight:500;line-height:61.6px}h2{font-size:30px;line-height:40px}h2,h3{font-family:Google Sans Display,sans-serif;font-weight:600}h3{font-size:24px;line-height:32px}h4{font-family:Google Sans Display,sans-serif;font-size:20px;font-weight:500;line-height:26px}h5{font-size:16px;line-height:24px}h5,h6{font-family:Google Sans Display,sans-serif;font-weight:600}h6{font-size:14px;line-height:22px}.display{font-family:Google Sans Display,sans-serif;font-size:48px;font-weight:600;line-height:67.2px}.hidden-text{height:1px;overflow:hidden;pointer-events:none;position:absolute;top:-10px;width:1px}img,video{border:0;height:auto;max-width:100%}body{position:relative;min-height:100vh}body.no-scroll{overflow:hidden}a{color:#4184f3;text-decoration:none}a:focus,a:focus-visible{outline-offset:-2px}.content-wrap{padding-top:100px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}@media only screen and (max-width:839px){.content-wrap{padding-top:32px}}.full-width{width:100%}.icon-link{border-radius:50%;height:42px;width:42px;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-transition:background-color .2s linear;transition:background-color .2s linear;background:transparent;border:none}.icon-link:hover{background-color:hsla(213,7%,76%,.2)}.icon-link:focus{background-color:hsla(213,7%,76%,.26)}.icon-link:active{background-color:hsla(213,7%,76%,.32)}.dgc-container{margin:40px auto;padding:0 40px;position:relative;width:auto;max-width:1420px}@media only screen and (max-width:767px){.dgc-container{margin:24px auto;padding:0 20px}}.dgc-container--large{margin:40px auto;padding:0 40px;position:relative;width:auto}@media only screen and (max-width:767px){.dgc-container--large{margin:24px auto;padding:0 20px}}@media only screen and (min-width:1280px){.dgc-container--large{width:1200px}}.dgc-container--medium{margin:40px auto;padding:0 40px;position:relative;width:auto}@media only screen and (max-width:767px){.dgc-container--medium{margin:24px auto;padding:0 20px}}@media only screen and (min-width:1280px){.dgc-container--medium{width:844px}}@media only screen and (max-width:767px){.dgc-container--medium{padding:0 48px}}.dgc-container--narrow{margin:40px auto;padding:0 40px;position:relative;width:auto;max-width:730px}@media only screen and (max-width:767px){.dgc-container--narrow{margin:24px auto;padding:0 20px}}.dgc-container--flex-horizontal{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.section,body{margin:0}.dgc-card{padding:24px 0;position:relative;background:#fff;border:1px solid #dadce0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:8px;margin:24px 0;padding:24px;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:opacity .2s linear,-webkit-box-shadow .2s linear;transition:opacity .2s linear,-webkit-box-shadow .2s linear;transition:box-shadow .2s linear,opacity .2s linear;transition:box-shadow .2s linear,opacity .2s linear,-webkit-box-shadow .2s linear}@media only screen and (max-width:850px){.dgc-card{max-height:unset;max-width:600px;margin:24px auto}}.dgc-card:focus-within,.dgc-card:hover{-webkit-box-shadow:0 0 36px rgba(0,0,0,.1);box-shadow:0 0 36px rgba(0,0,0,.1);cursor:pointer}.dgc-card__href{height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:2}.dgc-card__image-wrapper{overflow:hidden;position:relative;width:auto;height:200px;-webkit-flex-basis:40%;-ms-flex-preferred-size:40%;flex-basis:40%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}@media only screen and (max-width:850px){.dgc-card__image-wrapper{max-height:250px}}.dgc-card__content{padding:24px 0}.dgc-card__title{font-size:24px;line-height:33.6px;font-weight:500;font-family:Google Sans Display,sans-serif;margin-bottom:12px}.dgc-card__info{font-family:Roboto Mono,monospace;font-weight:400;font-size:12px;line-height:160%;margin-bottom:24px}.dgc-card__description{margin-bottom:48px}.dgc-card:hover .dgc-content__image-wrapper img,.dgc-card__href:focus~.dgc-content__image-wrapper img{-webkit-transform:scale(1.03);transform:scale(1.03);-webkit-transition:-webkit-transform 1s ease;transition:-webkit-transform 1s ease;transition:transform 1s ease;transition:transform 1s ease,-webkit-transform 1s ease}.devsite-footer{padding:0 24px;border-top:1px solid #bdc1c6}.devsite-footer li{display:block}.devsite-footer li a{text-decoration:none;font-size:14px;line-height:16px;color:#202124}.devsite-footer li a:focus,.devsite-footer li a:hover{color:#1a73e8;outline:none}.devsite-footer-linkboxes-list{display:grid;grid-gap:24px;grid-template-columns:1fr 1fr 1fr;margin:0;padding:24px 0;border-bottom:1px solid #bdc1c6}@media only screen and (max-width:767px){.devsite-footer-linkboxes-list{grid-template-columns:1fr;padding-left:0}}.devsite-footer-linkbox{display:block}.devsite-footer-linkbox-heading{font-size:16px;line-height:26px;font-weight:400;margin:0 0 4px}.devsite-footer-linkbox ul{padding-left:0}.devsite-footer-sites-list{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}@media only screen and (max-width:767px){.devsite-footer-sites-list{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}}.devsite-footer-utility nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}@media only screen and (max-width:767px){.devsite-footer-utility nav{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}}.devsite-footer-utility-list{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;padding:24px 0}@media only screen and (max-width:767px){.devsite-footer-utility-list{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;padding:0}}.devsite-footer-utility-button{justify-self:flex-end;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;line-height:20px;margin-left:auto;padding-left:16px}.devsite-footer-utility-item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 8px 0 0}.devsite-footer-utility-item:last-child{margin-right:0}@media only screen and (min-width:768px){.devsite-footer-utility-item:not(:first-child):before{content:"|";margin:0 8px 0 0}}.devsite-footer-sites{border-bottom:1px solid #bdc1c6;padding:24px 0 23px}.devsite-footer-sites-logo{height:32px;margin-top:5px;width:185px}.devsite-footer-sites-list{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;padding:0}.devsite-footer-sites-item{margin:0 0 0 40px}@media only screen and (max-width:767px){.devsite-footer-sites-item{margin:0}}.devsite-footer-sites-link{display:block;padding:8px 0;color:#202124}.devsite-footer-sites-link:focus,.devsite-footer-sites-link:hover{color:#1a73e8;outline:none}.devsite-footer-utility-link:focus{text-decoration:underline}.devsite-footer-utility .devsite-footer-utility-button{line-height:20px;font:400 14px/16px Roboto,sans-serif}.devsite-footer-utility .devsite-footer-utility-button:before{content:"";margin:0}@media only screen and (max-width:767px){.devsite-footer-utility .devsite-footer-utility-button{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:0;margin:18px 0 12px}}.devsite-footer-utility .devsite-footer-utility-button .devsite-footer-utility-link{border:0;background:#1a73e8;color:#fff;line-height:36px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;margin:0 0 0 16px;border-radius:2px;-webkit-box-shadow:0 1px 2px 0;box-shadow:0 1px 2px 0;display:inline-block;font:500 14px/36px Roboto,sans-serif;height:36px;letter-spacing:0;min-width:36px;padding:0 24px;text-align:center;-webkit-transition:background-color .2s,border .2s,-webkit-box-shadow .2s;transition:background-color .2s,border .2s,-webkit-box-shadow .2s;transition:background-color .2s,border .2s,box-shadow .2s;transition:background-color .2s,border .2s,box-shadow .2s,-webkit-box-shadow .2s;vertical-align:middle;white-space:nowrap}.devsite-footer-utility .devsite-footer-utility-button .devsite-footer-utility-link:hover{background:#1765cc}.dgc-page__title{font-family:Google Sans Display,sans-serif;font-size:44px;font-weight:500;line-height:61.6px;text-align:center;color:#202124}.dgc-container{margin-top:64px}.posts-container{display:grid;grid-template-columns:1fr 1fr 1fr;-webkit-column-gap:24px;-moz-column-gap:24px;column-gap:24px;padding:40px}@media only screen and (max-width:850px){.posts-container{grid-template-columns:1fr 1fr}}@media only screen and (max-width:480px){.posts-container{grid-template-columns:1fr}}.dgc-detail hr{border:1px solid #dadce0;margin:40px 0}.dgc-detail__title{font-family:Google Sans Display,sans-serif;font-size:48px;font-weight:600;line-height:67.2px}.dgc-detail__info{font-family:Roboto Mono,monospace;font-weight:400;font-size:12px;line-height:160%;font-size:14px}.dgc-detail__content{min-height:200px}.icon-sidebar{position:absolute;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;top:0;left:-15px;width:32px;gap:20px}@media only screen and (max-width:767px){.icon-sidebar{left:-28px}}.copy-tooltip{position:fixed;bottom:16px;left:10px;z-index:100}.copy-tooltip .copy-tooltiptext{visibility:hidden;width:200px;background-color:#202124;color:#fff;text-align:center;border-radius:6px;padding:8px 16px;opacity:0;-webkit-transition:opacity .3s;transition:opacity .3s}.copy-tooltip.active .copy-tooltiptext{visibility:visible;opacity:1}.header__overlay{height:100vh;left:0;position:fixed;width:100vw;border:none;background-color:rgba(0,0,0,.4);-webkit-animation:fade-in .4s cubic-bezier(.39,.575,.565,1);animation:fade-in .4s cubic-bezier(.39,.575,.565,1);opacity:0;top:0;z-index:-1;display:none}.header__overlay.show{display:block;opacity:1;z-index:800;-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.social-icons__links{height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;gap:24px}.social-icons__links path{fill:#80868b}.social-icons__container-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:100%;margin-right:14px}@media only screen and (max-width:1000px){.social-icons__container-header{display:none}}.dgc-blog-logo:focus,.dgc-blog-logo:hover{opacity:.7;text-decoration:none}.dgc-blog-logo__image{width:250px;margin-left:20px}.header{position:fixed;background:#fff;z-index:700;top:0;width:100%;overflow:hidden;-webkit-box-shadow:0 1px 2px 0 rgba(60,64,67,.3),0 2px 6px 2px rgba(60,64,67,.15);box-shadow:0 1px 2px 0 rgba(60,64,67,.3),0 2px 6px 2px rgba(60,64,67,.15);height:auto}.header .top-row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding-right:24px;height:50px;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid #e6e6e6}@media only screen and (max-width:839px){.header .top-row{padding:0 16px}}.header .top-row__left,.header .top-row__right{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;height:100%}.header .nav-row,.header .top-row__left,.header .top-row__right{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.header .nav-row{background:#fff;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;width:100%}.header .nav-items{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;height:50px;position:relative;background-color:#fff}@media only screen and (max-width:839px){.header .nav-items{display:none}}.header .nav-items tab{position:relative}.header .nav-items tab.active .header__nav-item:after,.header .nav-items tab:hover .header__nav-item:after{background:#1a73e8}.header .nav-items tab.active .header__nav-item,.header .nav-items tab:focus-within a{color:#202124}@media only screen and (max-width:839px){.header .header__cta,.header .nav-items{display:none}}.header__search-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;margin:6px 0 6px 24px;overflow:hidden;position:relative;margin-right:36px;border-radius:4px}@media only screen and (max-width:767px){.header__search-container:not(.mobile){display:none}}.header__search-container.mobile{margin:0 0 20px}.header__search-container.mobile #searchform,.header__search-container.mobile .searchbox{width:100%}.header__search-container .searchbox{border-radius:2px}.header__search-container .searchbox input{font-family:Roboto,sans-serif;font-weight:400;font-size:16px;line-height:28px;font-weight:500;color:#80868b;border:0;margin:0;height:20px;outline:0;padding:8px 8px 8px 40px;width:100%;-webkit-transition:background .2s;transition:background .2s}.header__search-container .searchbox input::-webkit-input-placeholder{color:#80868b}.header__search-container .searchbox input::-moz-placeholder{color:#80868b}.header__search-container .searchbox input::-ms-input-placeholder{color:#80868b}.header__search-container .searchbox input::placeholder{color:#80868b}.header__search-container .searchbox input:hover{background:#e8eaed}.header__search-container .material-icons{color:#80868b;left:8px;position:absolute;top:6px;-webkit-transition:color .2s;transition:color .2s}.header__cta{font-family:Google Sans Display,sans-serif;font-size:16px;font-weight:600;line-height:20px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;color:#1a73e8!important;text-decoration:none}.header__cta.mobile{padding:18px 0}.header__cta:hover .cta-icon{margin-left:0;margin-right:12px}.header__cta .cta-icon{-webkit-transition:margin-right .2s linear,margin-left .2s linear;transition:margin-right .2s linear,margin-left .2s linear;margin-left:4px;margin-right:8px;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.header__cta .cta-icon path{fill:#1a73e8}.header__nav-item{font-family:Google Sans Display,sans-serif;font-size:16px;font-weight:600;line-height:24px;color:#80868b;font-weight:500;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:0 18px;height:100%;text-transform:none;text-decoration:none}.header__nav-item:hover{color:#202124}.header__nav-item.mobile{font-weight:500;padding:0}.header__nav-item:after{bottom:0;border-radius:3px 3px 0 0;content:"";display:block;height:3px;left:50%;min-width:20px;position:absolute;right:0;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:calc(100% - 24px)}.header__hamburger{border:0;background:none;outline:none;padding:0;margin:1px 8px 0 -4px;padding:8px;color:rgba(0,0,0,.65);cursor:pointer}@media only screen and (min-width:840px){.header__hamburger{display:none}}.header__side-menu{background-color:#fff;bottom:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:100%;left:0;overflow:auto;position:fixed;top:0;-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transition:-webkit-transform .2s cubic-bezier(.215,.61,.355,1);transition:-webkit-transform .2s cubic-bezier(.215,.61,.355,1);transition:transform .2s cubic-bezier(.215,.61,.355,1);transition:transform .2s cubic-bezier(.215,.61,.355,1),-webkit-transform .2s cubic-bezier(.215,.61,.355,1);z-index:900;display:none}.header__side-menu.is-open{-webkit-transform:translateX(0);transform:translateX(0);width:80%}.header__side-menu.is-open,.header__side-menu__content{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:100%}.header__side-menu__content{padding:18px 16px 0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.header__side-menu__content .spacer{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.header__side-menu__title{font-weight:500;margin-bottom:12px}.header__side-menu__items{list-style:none}.header__side-menu__items li{padding:12px 0}.header__side-menu__bottom{border-top:1px solid #e6e6e6}.header__side-menu__logo-container{background:#fff;height:40px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;padding:4px 16px;border-bottom:1px solid #e6e6e6}#nav .widget{margin:0}.featured__wrapper{width:100%;border:0;background-color:#e8f0fe;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:80px 0}@media only screen and (max-width:767px){.featured__wrapper{padding:0}}.featured__inner{max-width:1080px;width:calc(100% - 24px);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;position:relative;padding:48px}@media only screen and (min-width:768px){.featured__inner{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;padding:12px 80px}}.featured__href{height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:2}.featured__image{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}@media only screen and (min-width:768px){.featured__image img{width:100%;max-width:500px}}@media only screen and (min-width:1280px){.featured__image img{width:500px;max-width:none}}.featured__content{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;width:100%}@media only screen and (min-width:768px){.featured__content{min-width:300px;margin-left:60px}}@media only screen and (min-width:1280px){.featured__content{margin-left:120px}}.featured__title{font-size:32px;line-height:44.8px;font-weight:500;font-family:Google Sans Display,sans-serif;margin-bottom:15px}.featured__info{font-family:Roboto Mono,monospace;font-weight:400;font-size:12px;line-height:160%;margin-bottom:24px}.featured__description{margin-bottom:48px}.preview.featured__wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;background-color:#f1f3f4;padding:64px 0 120px}.preview.featured__wrapper h1{margin:0 0 64px}.blog-label-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px}.blog-label-container .blog-label{padding:8px 20px;border:1px solid #dadce0;background-color:#fff;border-radius:4px;text-decoration:none}.blog-label-container .blog-label :focus,.blog-label-container .blog-label :hover{background-color:#e8f0fe}.blog-label-container .blog-label span{font-size:14px;line-height:20px;font-weight:500;font-family:Roboto Mono,monospace;text-align:center;color:#3c4043}#pagination-container{display:none}.pagination{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;width:100%}.pagination .page-button{font-family:Google Sans Display,sans-serif;font-size:16px;font-weight:600;line-height:24px;color:#1967d2;background-color:#e8f0fe;padding:16px 24px;border-radius:4px;text-decoration:none}.pagination .page-button:focus,.pagination .page-button:hover{background-color:#cad5fc}.pagination .page-button.disabled{color:#80868b;background-color:#f1f3f4} --></style> <!-- Fonts --> <link href="http://web.archive.org/web/20230528023843cs_/https://fonts.googleapis.com/css?family=Google+Sans:400,500,700|Google+Sans+Display:400,500,600,700|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700|Material+Icons" rel="stylesheet"/> <!-- Analytics --> <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','http://web.archive.org/web/20230528023843/https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-19996418-48', 'auto', 'blogger'); ga('blogger.send', 'pageview'); </script> <link href="http://web.archive.org/web/20230528023843cs_/https://www.blogger.com/dyn-css/authorization.css?targetBlogID=596098824972435195&zx=b9a9e76d-23a6-49b0-ab2b-45e525f678b5" media="none" onload="if(media!='all')media='all'" rel="stylesheet"/><noscript><link href="http://web.archive.org/web/20230528023843cs_/https://www.blogger.com/dyn-css/authorization.css?targetBlogID=596098824972435195&zx=b9a9e76d-23a6-49b0-ab2b-45e525f678b5" 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> <!-- Google Tag Manager (noscript) --> <noscript><iframe height="0" src="http://web.archive.org/web/20230528023843if_/https://www.googletagmanager.com/ns.html?id=GTM-WVTLDSL" style="display:none;visibility:hidden" width="0"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <div class="section" id="nav"><div class="widget HTML" data-version="1" id="HTML1"> <header class="header"> <div aria-hidden="true" data-href="https://developers.googleblog.com/" hidden="true" id="home-href"></div> <div class="top-row"> <div class="top-row__left"> <button aria-label="Toggle menu" class="header__hamburger icon-link" type="button"> <i class="material-icons">menu</i> </button> <a class="dgc-blog-logo" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/"> <img alt="Google Developers Blog Logo" class="dgc-blog-logo__image" src="http://web.archive.org/web/20230528023843im_/https://www.gstatic.com/devrel-devsite/prod/vfe8699a5d354c41f3f953a7a9794768d4d2f39d37577d5708b5539be069912e1/developers/images/lockup-new.svg"/> </a> </div> <div class="top-row__right"> <div class="header__search-container"> <form action="/web/20230528023843/https://developers.googleblog.com/search" class="searchbox"> <input aria-label="Search box" class="search-input" name="q" onblur="if (this.value=="") {this.value="Search the Blog"}" onfocus="if (this.value=="Search the Blog") {this.value=""}" placeholder="Search the Blog" type="text" value="" vinput=""/> <i class="material-icons">search</i> <input style="visibility:hidden;position:absolute" type="submit"/> </form> </div> <a class="header__cta" href="http://web.archive.org/web/20230528023843/https://developers.google.com/"> <svg class="cta-icon" height="12" viewbox="0 0 18 18" width="12" xmlns="http://www.w3.org/2000/svg"> <g fill="none" fill-rule="evenodd" transform="translate(-3 -3)"> <rect height="24" width="24"></rect> <path d="M20.55,10.95 L13.05,3.45 C12.45,2.85 11.55,2.85 10.95,3.45 C10.35,4.05 10.35,4.95 10.95,5.55 L15.9,10.5 L4.5,10.5 C3.6,10.5 3,11.1 3,12 C3,12.9 3.6,13.5 4.5,13.5 L15.9,13.5 L10.95,18.45 C10.35,19.05 10.35,19.95 10.95,20.55 C10.95,20.55 10.95,20.55 10.95,20.55 C11.55,21.15 12.45,21.15 13.05,20.55 C13.05,20.55 13.05,20.55 13.05,20.55 L20.55,13.05 C21.15,12.45 21.15,11.55 20.55,10.95 C20.55,10.95 20.55,10.95 20.55,10.95 Z" fill="#000"></path> </g> </svg> Back to Google for Developers </a> </div> </div> <div class="nav-row"> <div class="nav-items"> <tab> <a class="header__nav-item all" dir="ltr" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/"> Latest </a> </tab> <tab> <a class="header__nav-item" dir="ltr" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/search/label/Get Inspired?max-results=12"> Get Inspired </a> </tab> <tab> <a class="header__nav-item" dir="ltr" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/search/label/Announcements?max-results=12"> Announcements </a> </tab> <tab> <a class="header__nav-item" dir="ltr" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/search/label/Events?max-results=12"> Events </a> </tab> <tab> <a class="header__nav-item" dir="ltr" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/search/label/Resources?max-results=12"> Resources </a> </tab> </div> <section class="social-icons"> <div class="social-icons__container-header"> <div class="social-icons__links"> <a class="icon-link" href="http://web.archive.org/web/20230528023843/https://www.youtube.com/googlecode/" rel="noopener noreferrer" target="_blank"> <img alt="Google Developers YouTube" src="http://web.archive.org/web/20230528023843im_/https://www.gstatic.com/dgc_blog/images/ic_youtube.svg"/> </a> <a class="icon-link" href="http://web.archive.org/web/20230528023843/https://twitter.com/googledevs/" rel="noopener noreferrer" target="_blank"> <img alt="Google Developers Twitter" src="http://web.archive.org/web/20230528023843im_/https://www.gstatic.com/dgc_blog/images/ic_twitter.svg"/> </a> <a class="icon-link" href="http://web.archive.org/web/20230528023843/https://www.instagram.com/googlefordevs/" rel="noopener noreferrer" target="_blank"> <img alt="Google Developers GitHub" src="http://web.archive.org/web/20230528023843im_/https://www.gstatic.com/dgc_blog/images/ic_instagram.svg"/> </a> <a class="icon-link" href="http://web.archive.org/web/20230528023843/https://www.linkedin.com/company/googledevelopers/" rel="noopener noreferrer" target="_blank"> <img alt="Google Developers LinkedIn" src="http://web.archive.org/web/20230528023843im_/https://www.gstatic.com/dgc_blog/images/ic_linkedin.svg"/> </a> </div> </div> </section> </div> </header> <button aria-label="Close menu" class="header__overlay"></button> <div class="header__side-menu"> <div class="header__side-menu__logo-container"> <a alt="Blogger Home" class="dgc-blog-logo" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/"> <img alt="Google Developers Blog Logo" class="dgc-blog-logo__image" src="http://web.archive.org/web/20230528023843im_/https://www.gstatic.com/devrel-devsite/prod/vfe8699a5d354c41f3f953a7a9794768d4d2f39d37577d5708b5539be069912e1/developers/images/lockup-new.svg"/> </a> </div> <div class="header__side-menu__content"> <div class="header__side-menu__items"> <div class="header__search-container mobile"> <form action="/web/20230528023843/https://developers.googleblog.com/search" class="searchbox searchbox--mobile"> <input aria-label="Search box" class="search-input" name="q" onblur="if (this.value=="") {this.value="Search the Blog"}" onfocus="if (this.value=="Search the Blog") {this.value=""}" placeholder="Search the Blog" type="text" value="" vinput=""/> <i class="material-icons">search</i> </form> </div> <div class="header__side-menu__title">Tags</div> <tab> <li> <a class="header__nav-item mobile" dir="ltr" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/"> Latest </a> </li> </tab> <tab> <li> <a class="header__nav-item mobile" dir="ltr" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/search/label/Get Inspired?max-results=12"> Get Inspired </a> </li> </tab> <tab> <li> <a class="header__nav-item mobile" dir="ltr" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/search/label/Announcements?max-results=12"> Announcements </a> </li> </tab> <tab> <li> <a class="header__nav-item mobile" dir="ltr" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/search/label/Events?max-results=12"> Events </a> </li> </tab> <tab> <li> <a class="header__nav-item mobile" dir="ltr" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/search/label/Resources?max-results=12"> Resources </a> </li> </tab> </div> <div class="spacer"></div> <div class="header__side-menu__bottom"> <a class="header__cta mobile" href="http://web.archive.org/web/20230528023843/https://developers.google.com/"> Back to Google for Developers </a> </div> </div> </div> </div></div> <div class="content-wrap"> <div class="full-width section" id="Body"> <div class="widget Blog" data-version="1" id="Blog1"> <div class="dgc-container"> <div class="dgc-page__title"> Google Developer Groups </div> </div> <div class="dgc-container--large"> <div class="posts-container"> <div class="dgc-card"> <a aria-label="Road to Google Developers Certification: Google Cloud expert shares insight " class="dgc-card__href" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/2023/02/road-to-google-developers-certification-google-cloud-expert-shares-insight.html"></a> <div class="dgc-card__image-wrapper"> <img alt="Road to Google Developers Certification: Google Cloud expert shares insight " class="dgc-card__image" src="http://web.archive.org/web/20230528023843im_/https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOBXicVPP5C2UuYdxSh2RkVpGW2obkQd4w1TmruoK1etVaXMEgYTAtoNQVMMIQgvC7VrDbLAhFUm8vZ4H8SFXKN-m2vDa3dRveZvW08iwcx9wDYblAgEnG5Bi1hPhhVZeDQf7BAMIg3b-bk3csFRR9AOFnmj4A-1w5-0mTo_EZ4DVbAK26cA1USIqK/s1600/RGDC_January_Blog_Social_Image.png"/> </div> <div class="dgc-card__content"> <div class="dgc-card__title"> Road to Google Developers Certification: Google Cloud expert shares insight </div> <div class="dgc-card__info"> <p>February 08, 2023</p> </div> <div class="dgc-card__description"> <p> Posted by Komal Sandhu - Global Program Manager, Google Developer Groups</p> </div> <div class="blog-label-container"> </div> </div> </div> <div class="dgc-card"> <a aria-label="Experts share insights on Firebase, Flutter and the developer community" class="dgc-card__href" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/2022/11/firebase-flutter-experts-share-how-to-get-involved-at-devfest.html"></a> <div class="dgc-card__image-wrapper"> <img alt="Experts share insights on Firebase, Flutter and the developer community" class="dgc-card__image" src="http://web.archive.org/web/20230528023843im_/https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA2r0ozI51L7ZvcDwr3hmxRj28jqgseW4abTHcdK4smlqato36EtO2-qope0bjhmjxcsTRt7OL_Y3qb2RbE_mGa3GCR59wRu2PtXQMDzil0a4XmNU7Bh58umueae5y_qYB8T165hntXHrvvypsz-iKGBy59OBHhVSNWpxEPLSDry1Dn7qmTwKgXrb3/s1600/Firebase%20X%20Flutter%20GIF.gif"/> </div> <div class="dgc-card__content"> <div class="dgc-card__title"> Experts share insights on Firebase, Flutter and the developer community </div> <div class="dgc-card__info"> <p>November 22, 2022</p> </div> <div class="dgc-card__description"> <p> Posted by Komal Sandhu - Global Program Manager, Google Developer Groups </p> </div> <div class="blog-label-container"> <div class="blog-label"> <span>Firebase</span> </div> <div class="blog-label"> <span>flutter</span> </div> </div> </div> </div> <div class="dgc-card"> <a aria-label="Paul Kinlan shares his passion for web development and how to get involved at DevFest" class="dgc-card__href" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/2022/10/paul-kinlan-shares-his-passion-for-web-development-and-devfest.html"></a> <div class="dgc-card__image-wrapper"> <img alt="Paul Kinlan shares his passion for web development and how to get involved at DevFest" class="dgc-card__image" src="http://web.archive.org/web/20230528023843im_/https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhk-pVtZfImJ-Kj0x8zUwW5UY840fc4MTGAegC0qU1xKy5kI5WDzw7jVlSYV_pw1VY235hgUI_CWJ7ecDb27kah1R2sqeKhtbUNrEsHa-O_LhjPkXasqw1Ux2-BSL0sDL29-krgMImIjBOzYFH0at-S2C0ofK3pFgTJbrlxKRYzJRJiafTZW-NMl5ec/s1600/Google-Dev-devfest-paulkinlan-02.png"/> </div> <div class="dgc-card__content"> <div class="dgc-card__title"> Paul Kinlan shares his passion for web development and how to get involved at DevFest </div> <div class="dgc-card__info"> <p>October 31, 2022</p> </div> <div class="dgc-card__description"> <p> Posted by Komal Sandhu - Global Program Manager, Google Developer Groups </p> </div> <div class="blog-label-container"> <div class="blog-label"> <span>chrome</span> </div> <div class="blog-label"> <span>Chrome Developers</span> </div> </div> </div> </div> <div class="dgc-card"> <a aria-label="Yasmine Evjen shares her passion for Android development and how to get involved at DevFest" class="dgc-card__href" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/2022/10/yasmine-evjen-shares-her-passion-for-android-development-and-how-to-get-involved-at-devfest.html"></a> <div class="dgc-card__image-wrapper"> <img alt="Yasmine Evjen shares her passion for Android development and how to get involved at DevFest" class="dgc-card__image" src="http://web.archive.org/web/20230528023843im_/https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQ-HFdUHJCo4Y0NY364zt9TVcM4soZAoQuWDLv4yETjpP6CLd5tP3jDe8JIUWgTpa503ZZ72KI4_mtbulhoeXTVRMDPW56XsCm-YlSa86tqy5ZkYPzlW5zpunUU1upxo-LoTmKSKo0Bnso0gJZfpuOjFxYj-dW-pGH7QI83z0qzdnGlUEpWm2GmRMD/s1600/GoogleDev_InspiringAndroidDeveloperCommunity_1234x802.png"/> </div> <div class="dgc-card__content"> <div class="dgc-card__title"> Yasmine Evjen shares her passion for Android development and how to get involved at DevFest </div> <div class="dgc-card__info"> <p>October 10, 2022</p> </div> <div class="dgc-card__description"> <p> Posted by Komal Sandhu - Global Program Manager, Google Developer Groups </p> </div> <div class="blog-label-container"> </div> </div> </div> <div class="dgc-card"> <a aria-label="A Conversation with Android Developer and Community Builder, Ceren Tunay" class="dgc-card__href" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/2022/08/a-conversation-with-android-developer-and-community-builder-ceren-tunay.html"></a> <div class="dgc-card__image-wrapper"> <img alt="A Conversation with Android Developer and Community Builder, Ceren Tunay" class="dgc-card__image" src="http://web.archive.org/web/20230528023843im_/https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghqT9g0RyYmGMXlLY5oVTeLIsXX6PKS0j5wcU2P-pLNdn2Hl7Gj-Yew9MxjeTuwGAQAzTFjxIWbKXtAISKTR2mI3ERLI1Tz6kuTGpROWE2CzxN43WcThNRUxQPxl8ppNOYlLluckizu-ivVoBkszSRCc_Z-q2UROmJDuCiuFUYATfDkUE9-WuBbFcG/s1600/Google-Dev-Ceren-Tunay.png"/> </div> <div class="dgc-card__content"> <div class="dgc-card__title"> A Conversation with Android Developer and Community Builder, Ceren Tunay </div> <div class="dgc-card__info"> <p>August 25, 2022</p> </div> <div class="dgc-card__description"> <p> Posted by Baris Yesugey - Regional Lead, Google Developers Turkey and Central Asia </p> </div> <div class="blog-label-container"> <div class="blog-label"> <span>android developers</span> </div> <div class="blog-label"> <span>Developer Communities</span> </div> </div> </div> </div> <div class="dgc-card"> <a aria-label="RandoTek: Traveling around Tunisia to share technical knowledge" class="dgc-card__href" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/2022/07/RandoTek-Traveling-around-Tunisia-to-share-technical-knowledge.html"></a> <div class="dgc-card__image-wrapper"> <img alt="RandoTek: Traveling around Tunisia to share technical knowledge" class="dgc-card__image" src="http://web.archive.org/web/20230528023843im_/https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqNTp-EfCl6dfycUAEpY_rRDdS3Um2wd2OCy3-dev1jPMavOeyPrrJxXdQfd3RAZjY7GDHXzdIo_64FHokXdUC-ODFKz9h2VDa0-o19mIkNWccsJQU_Hc8bFBk4sWkl0H1GOKhJTk1CGz5mhEZ7USTsUmlWu_nvoojX5cpyu4WtS-awExx9U9CW0Aq/s1600/GoogleDev-RandoTek.png"/> </div> <div class="dgc-card__content"> <div class="dgc-card__title"> RandoTek: Traveling around Tunisia to share technical knowledge </div> <div class="dgc-card__info"> <p>July 29, 2022</p> </div> <div class="dgc-card__description"> <p> Posted by Salim Abid, Regional Lead. Middle East & North Africa, Google Developers </p> </div> <div class="blog-label-container"> </div> </div> </div> <div class="dgc-card"> <a aria-label="From Developer to Teacher, How a Computer Science Professor Found Career Support with Google Developer Groups" class="dgc-card__href" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/2022/06/gdg-jennifer-bailey.html"></a> <div class="dgc-card__image-wrapper"> <img alt="From Developer to Teacher, How a Computer Science Professor Found Career Support with Google Developer Groups" class="dgc-card__image" src="http://web.archive.org/web/20230528023843im_/https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNANQnUPJC4NjTRWKP2E2d6KKvhpFOvSv1Nlp1Ad9uFmjdApcCrrIMMLAmDWSFtIxO_ecojl9zsV6G8QnP8SwtlSdzEHMXptsaBMbG1Z7twqzJWY4AI6BkR1j9g8nhvwM28rjHr-ylowFEjWmMWAzzXBUk60kQwIaxCO53IPTm7vf4ZUodY6cAPxVc/s1600/Google-Dev-Jennifer-Bailey-v2_Artboard2.png"/> </div> <div class="dgc-card__content"> <div class="dgc-card__title"> From Developer to Teacher, How a Computer Science Professor Found Career Support with Google Developer Groups </div> <div class="dgc-card__info"> <p>June 24, 2022</p> </div> <div class="dgc-card__description"> <p> Posted by K眉bra Zengin, North America Regional Lead, Google Developers </p> </div> <div class="blog-label-container"> <div class="blog-label"> <span>GDG</span> </div> <div class="blog-label"> <span>Get Inspired</span> </div> </div> </div> </div> <div class="dgc-card"> <a aria-label="South African developers build web application to help local athletes" class="dgc-card__href" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/2022/05/scouting-sports-talent-with-gdg.html"></a> <div class="dgc-card__image-wrapper"> <img alt="South African developers build web application to help local athletes" class="dgc-card__image" src="http://web.archive.org/web/20230528023843im_/https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSPdMLazP8W9OSVZXW31k6wWOK8DiVDAEi6YLjf_v8INLdx8tJcroPzTMShfJJHU_f7_UTvpe1qF26chZ5dthLAktRX6wXo9ydSh-H5Uj0L3zAGokLzbx9mYBrWCeRweaD0w3IeHoY1txvM6hEPmx7vIb3-5pybxMTur0lOtFPE-HplP5gJGR_ada3/s1600/Copy%20of%20Soweto%20GDG_v3.png%20"/> </div> <div class="dgc-card__content"> <div class="dgc-card__title"> South African developers build web application to help local athletes </div> <div class="dgc-card__info"> <p>May 27, 2022</p> </div> <div class="dgc-card__description"> <p> Posted by Aniedi Udo-Obong, Sub-Saharan Africa Regional Lead, Google Developer Groups </p> </div> <div class="blog-label-container"> <div class="blog-label"> <span>community</span> </div> <div class="blog-label"> <span>developers</span> </div> </div> </div> </div> <div class="dgc-card"> <a aria-label="How an Android developer in Guatemala advocates for women through the Google Developer Groups community" class="dgc-card__href" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/2022/03/how-android-developer-in-guatemala.html"></a> <div class="dgc-card__image-wrapper"> <img alt="How an Android developer in Guatemala advocates for women through the Google Developer Groups community" class="dgc-card__image" src="http://web.archive.org/web/20230528023843im_/https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjquAs_o46qZdQ0LNwWqz_VlPuqOcpQEdg-fRIc6SY6sG537Fjug33s0kxYIcmDZx9Eq35dcLhfRkd6icDMuYwx3LtqjRZizp3PRanSfgdzCfPXcs4idUcnqME-H1a0tQuyKJFqyyuAwcEpargUPJeyEh9WXdtc_JmfpKW_y2z_8tkxEf8jHY4TEk7d/s1600/Google-Dev-Android-GDE-cecilia-castillo_1234x802.png"/> </div> <div class="dgc-card__content"> <div class="dgc-card__title"> How an Android developer in Guatemala advocates for women through the Google Developer Groups community </div> <div class="dgc-card__info"> <p>March 28, 2022</p> </div> <div class="dgc-card__description"> <p> Posted by Rodrigo Akira Hirooka, Regional Lead, Latin America </p> </div> <div class="blog-label-container"> <div class="blog-label"> <span>Android</span> </div> <div class="blog-label"> <span>GDG</span> </div> </div> </div> </div> <div class="dgc-card"> <a aria-label="DevFest hits ten year milestone and hosts diverse developers worldwide" class="dgc-card__href" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/2022/02/devfest-hits-ten-year-milestone.html"></a> <div class="dgc-card__image-wrapper"> <img alt="DevFest hits ten year milestone and hosts diverse developers worldwide" class="dgc-card__image" src="http://web.archive.org/web/20230528023843im_/https://blogger.googleusercontent.com/img/a/AVvXsEgp4Nnw9y0ZEdbP1jprIZNZv8MkzPF4Pc4XfwCifyIbtFDThq9yHM7zDpZYrxsVITF9f470JZDLx6a6wjzXLay2jO4G1HJrVcWERgW3WQc-7FaUBxT16mFzq7H3W4A_4k7RCWAp4_nA3mMPbpZ3LmxJJFNktyy1OtSRWsDLPtg58VRd55xZ8XwfD2wi"/> </div> <div class="dgc-card__content"> <div class="dgc-card__title"> DevFest hits ten year milestone and hosts diverse developers worldwide </div> <div class="dgc-card__info"> <p>February 17, 2022</p> </div> <div class="dgc-card__description"> <p> Posted by Komal Sandhu - Global Program Manager, Google Developer Groups </p> </div> <div class="blog-label-container"> <div class="blog-label"> <span>devfest</span> </div> <div class="blog-label"> <span>GDG</span> </div> </div> </div> </div> <div class="dgc-card"> <a aria-label="Google Developer Group Spotlight: A conversation with software developer Aditi Soni" class="dgc-card__href" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/2022/01/gdg-spotlight-aditi-soni.html"></a> <div class="dgc-card__image-wrapper"> <img alt="Google Developer Group Spotlight: A conversation with software developer Aditi Soni" class="dgc-card__image" src="http://web.archive.org/web/20230528023843im_/https://blogger.googleusercontent.com/img/a/AVvXsEiOuqM_Du48YMZgxEpd36BBHiGehkAbXdPMNKYu24fGAalsA9JxouzbyMgzIaVM4Urbv7c21uVhPDJNpmgHSvP14OVfrhOtGlnRAuR7azGiwLgF0tIyrmSxV2PohiKGAdcmwSpu4QtCecdNe34Z2C3d-Ml8y1CrUjXBNK3q5wCtLWw89oFVt0t88D9j"/> </div> <div class="dgc-card__content"> <div class="dgc-card__title"> Google Developer Group Spotlight: A conversation with software developer Aditi Soni </div> <div class="dgc-card__info"> <p>January 24, 2022</p> </div> <div class="dgc-card__description"> <p> Posted by Manoranjan Padhy - Developer Relations Lead, India</p> </div> <div class="blog-label-container"> <div class="blog-label"> <span>GDG</span> </div> <div class="blog-label"> <span>Get Inspired</span> </div> </div> </div> </div> <div class="dgc-card"> <a aria-label="Growing as a Technologist in Shanghai with Google Developer Groups" class="dgc-card__href" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/2021/12/growing-with-gdg-in-shanghai.html"></a> <div class="dgc-card__image-wrapper"> <img alt="Growing as a Technologist in Shanghai with Google Developer Groups" class="dgc-card__image" src="http://web.archive.org/web/20230528023843im_/https://blogger.googleusercontent.com/img/a/AVvXsEi7UW3s7kFZr2qZT1dC-IrjLzAdGsCj02Ms2O-BcqJICIsGMN8p16whlu9REjIvv4ANOaM6PdbNo193-bmLtbfnVVL46Z7II_96hjVr2wJKRhPJvN6DZQXRoz1rwbCo5XT6rS1n7WzMMaGQl5LizMq5ceLQka6oAg4uKPRKTh5U_f4KMzee5U6fRlB9"/> </div> <div class="dgc-card__content"> <div class="dgc-card__title"> Growing as a Technologist in Shanghai with Google Developer Groups </div> <div class="dgc-card__info"> <p>December 20, 2021</p> </div> <div class="dgc-card__description"> <p> Posted by Brian Shen, Regional Lead for Mainland China Developer Communities</p> </div> <div class="blog-label-container"> <div class="blog-label"> <span>GDG</span> </div> <div class="blog-label"> <span>Get Inspired</span> </div> </div> </div> </div> </div> <div data-posts-count="12"> <div class="blog-pager pagination" id="blog-pager"> <a class="disabled page-button"> <span>Newer posts</span> </a> <a class="blog-pager-older-link page-button" href="http://web.archive.org/web/20230528023843/https://developers.googleblog.com/search/label/Google%20Developer%20Groups?updated-max=2021-12-20T09:01:00-08:00&max-results=12&start=12&by-date=false" id="Blog1_blog-pager-older-link" title="Older Posts"> <span>Previous posts</span> </a> </div> </div> </div> </div></div> </div> <div class="section" id="Footer"><div class="widget HTML" data-version="1" id="HTML2"> <div class="devsite-footer"> <nav aria-label="Footer links" class="devsite-footer-linkboxes nocontent"> <div class="devsite-footer-linkboxes-list"> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Connect</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" href="//web.archive.org/web/20230528023843/https://googledevelopers.blogspot.com/"> Blog </a> </li> <li class="devsite-footer-linkbox-item"> <a class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" href="//web.archive.org/web/20230528023843/https://twitter.com/googledevs"> Twitter </a> </li> <li class="devsite-footer-linkbox-item"> <a class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" href="//web.archive.org/web/20230528023843/https://www.youtube.com/user/GoogleDevelopers"> YouTube </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Programs</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" href="//web.archive.org/web/20230528023843/https://www.womentechmakers.com/"> Women Techmakers </a> </li> <li class="devsite-footer-linkbox-item"> <a class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" href="//web.archive.org/web/20230528023843/https://developers.google.com/community/gdg"> Google Developer Groups </a> </li> <li class="devsite-footer-linkbox-item"> <a class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" href="//web.archive.org/web/20230528023843/https://developers.google.com/community/experts"> Google Developers Experts </a> </li> <li class="devsite-footer-linkbox-item"> <a class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" href="//web.archive.org/web/20230528023843/https://developers.google.com/community/accelerators"> Accelerators </a> </li> <li class="devsite-footer-linkbox-item"> <a class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" href="//web.archive.org/web/20230528023843/https://developers.google.com/community/gdsc"> Google Developer Student Clubs </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Developer consoles</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" href="//web.archive.org/web/20230528023843/https://console.developers.google.com/"> Google API Console </a> </li> <li class="devsite-footer-linkbox-item"> <a class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" href="//web.archive.org/web/20230528023843/https://console.cloud.google.com/"> Google Cloud Platform Console </a> </li> <li class="devsite-footer-linkbox-item"> <a class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" href="//web.archive.org/web/20230528023843/https://play.google.com/apps/publish"> Google Play Console </a> </li> <li class="devsite-footer-linkbox-item"> <a class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" href="//web.archive.org/web/20230528023843/https://console.firebase.google.com/"> Firebase Console </a> </li> <li class="devsite-footer-linkbox-item"> <a class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" href="//web.archive.org/web/20230528023843/https://console.actions.google.com/"> Actions on Google Console </a> </li> <li class="devsite-footer-linkbox-item"> <a class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)" href="//web.archive.org/web/20230528023843/https://cast.google.com/publish"> Cast SDK Developer Console </a> </li> <li class="devsite-footer-linkbox-item"> <a class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 7)" href="//web.archive.org/web/20230528023843/https://chrome.google.com/webstore/developer/dashboard"> Chrome Web Store Dashboard </a> </li> </ul> </li> </div> </nav> <div class="devsite-footer-utility nocontent"> <nav aria-label="Other Google Developers websites" class="devsite-footer-sites"> <a class="devsite-footer-sites-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Developers Link" href="http://web.archive.org/web/20230528023843/https://developers.google.com/"> <img alt="Google Developers" class="devsite-footer-sites-logo" loading="lazy" src="http://web.archive.org/web/20230528023843im_/https://www.gstatic.com/devrel-devsite/prod/vfe8699a5d354c41f3f953a7a9794768d4d2f39d37577d5708b5539be069912e1/developers/images/lockup-google-for-developers.svg"/> </a> <div class="devsite-footer-sites-list"> <div class="devsite-footer-sites-item"> <a class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Android Link" href="//web.archive.org/web/20230528023843/https://developer.android.com/"> Android </a> </div> <div class="devsite-footer-sites-item"> <a class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Chrome Link" href="//web.archive.org/web/20230528023843/https://developer.chrome.com/home"> Chrome </a> </div> <div class="devsite-footer-sites-item"> <a class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Firebase Link" href="//web.archive.org/web/20230528023843/https://firebase.google.com/"> Firebase </a> </div> <div class="devsite-footer-sites-item"> <a class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Cloud Platform Link" href="//web.archive.org/web/20230528023843/https://cloud.google.com/"> Google Cloud Platform </a> </div> <div class="devsite-footer-sites-item"> <a class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer All products Link" href="//web.archive.org/web/20230528023843/https://developers.google.com/products"> All products </a> </div> </div> </nav> <nav aria-label="Utility links" class="devsite-footer-utility-links"> <div class="devsite-footer-utility-list"> <li class="devsite-footer-utility-item"> <a class="devsite-footer-utility-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Terms link" href="//web.archive.org/web/20230528023843/https://developers.google.com/terms/site-terms"> Terms </a> | <a class="devsite-footer-utility-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Privacy link" href="//web.archive.org/web/20230528023843/https://policies.google.com/privacy"> Privacy </a> </li> <li class="devsite-footer-utility-item devsite-footer-utility-button"> <span class="devsite-footer-utility-description">Sign up for the Google for Developers newsletter</span> <a class="devsite-footer-utility-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Subscribe link" href="http://web.archive.org/web/20230528023843/https://developers.google.com/newsletter/subscribe"> Subscribe </a> </li> </div> </nav> </div> </div> </div></div> <script type="text/javascript"> // <![CDATA[ const qs = (string, el = document) => el.querySelector(string); const qsa = (string, el = document) => el.querySelectorAll(string); class App { constructor() { this.body = qs('body'); this.overlay = qs('.header__overlay'); this.hamburger = qs('.header__hamburger'); this.sideMenu = qs('.header__side-menu'); this.copyIcon = qs('.copy-link'); this._toggleMobileMenu = this._toggleMobileMenu.bind(this); this._closeMenu = this._closeMenu.bind(this); this._trapFocus = this._trapFocus.bind(this); this._onResize = this._onResize.bind(this); this._getScreen = this._getScreen.bind(this); this._copyLink = this._copyLink.bind(this); this._setLatestActive(); this._redirectWithMaxResults(); this.addEventListeners(); } addEventListeners() { window.addEventListener('resize', this._onResize); this.hamburger.addEventListener('click', this._toggleMobileMenu); if (this.copyIcon) { this.copyIcon.addEventListener('click', this._copyLink); } } // functions for the mobile nav header get isMenuOpen() { return this.sideMenu.classList.contains('is-open'); } _toggleMobileMenu() { this.body.classList.toggle('no-scroll'); this.overlay.classList.toggle('show'); this.sideMenu.classList.toggle('is-open'); if (this.isMenuOpen) { this.overlay.addEventListener('click', this._closeMenu); this.overlay.focus(); this.sideMenu.addEventListener('keydown', this._trapFocus); } else { this.overlay.removeEventListener('click', this._closeMenu); this.sideMenu.removeEventListener('keydown', this._trapFocus); } } _trapFocus(e) { const sideMenuEls = this.sideMenu.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])'); const focusableEls = [this.overlay, ...sideMenuEls]; // add the overlay const firstFocusableEl = focusableEls[0]; const lastFocusableEl = focusableEls[focusableEls.length - 1]; const KEYCODE_TAB = 9; const isTabPressed = (e.key === 'Tab' || e.keyCode === KEYCODE_TAB); if (!isTabPressed) { return; } if ( e.shiftKey ) /* shift + tab */ { if (document.activeElement === firstFocusableEl) { lastFocusableEl.focus(); e.preventDefault(); } } else /* tab */ { if (document.activeElement === lastFocusableEl) { firstFocusableEl.focus(); e.preventDefault(); } } } _closeMenu(e) { if (this.isMenuOpen) { this._toggleMobileMenu(); } } _getScreen() { return { scrollY: window.scrollY, width: window.innerWidth, height: window.innerHeight, } }; _onResize() { if (this._getScreen().width > 839 && this.isMenuOpen) { this._closeMenu(); } } // copy the blog link for sharing _copyLink() { const link = this.copyIcon.getAttribute('value'); const textArea = document.createElement('textarea'); textArea.value = link; document.body.append(textArea); textArea.select(); textArea.setSelectionRange(0, 99999); /* For mobile devices */ const copied = document.execCommand('copy'); document.body.removeChild(textArea); /* Alert the copied text */ const copyTooltip = qs('.copy-tooltip'); if (copyTooltip) { copyTooltip.classList.toggle('active'); setTimeout(() => {copyTooltip.classList.toggle('active');}, 3000); } } // add the active style to Latest in the header nav if we're on the index page _setLatestActive() { const {pathname, search} = window.location; const isCurrentPathLatest = pathname === '/' || (pathname === '/search' && !/label/.test(search)) if(isCurrentPathLatest){ const allTag = qs('.header__nav-item.all'); if (allTag) { allTag.parentElement.classList.add('active'); } } } // Adds max-results query param if URL contains a label filter but // doesn't contain max-results _redirectWithMaxResults(){ const {search} = window.location; const isLabelMatch = /search/gi.test(search) || window.location.pathname === '/search' const queryParams = new URLSearchParams(window.location.search); if(isLabelMatch && queryParams.get('max-results') != 12){ queryParams.set("max-results", "12"); window.location.href = window.location.origin + "/search?" +queryParams.toString(); } } } window.addEventListener('DOMContentLoaded', () => { new App(); }); // ]]> </script> <script type="text/javascript" src="http://web.archive.org/web/20230528023843js_/https://www.blogger.com/static/v1/widgets/541336192-widgets.js"></script> <script type="text/javascript"> window['__wavt'] = 'AOuZoY70XFhlkoPiGQ1SYnqY6Rj6yh1ybw:1685241523810';_WidgetManager._Init('//web.archive.org/web/20230528023843/https://www.blogger.com/rearrange?blogID\x3d596098824972435195','//web.archive.org/web/20230528023843/https://developers.googleblog.com/search/label/Google%20Developer%20Groups?max-results\x3d12','596098824972435195'); _WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '596098824972435195', 'title': 'Google for Developers Blog - News about Web, Mobile, AI and Cloud', 'url': 'http://web.archive.org/web/20230528023843/https://developers.googleblog.com/search/label/Google%20Developer%20Groups?max-results\x3d12', 'canonicalUrl': 'http://web.archive.org/web/20230528023843/https://developers.googleblog.com/search/label/Google%20Developer%20Groups?max-results\x3d12', 'homepageUrl': 'http://web.archive.org/web/20230528023843/https://developers.googleblog.com/', 'searchUrl': 'http://web.archive.org/web/20230528023843/https://developers.googleblog.com/search', 'canonicalHomepageUrl': 'http://web.archive.org/web/20230528023843/https://developers.googleblog.com/', 'blogspotFaviconUrl': 'http://web.archive.org/web/20230528023843/https://developers.googleblog.com/favicon.ico', 'bloggerUrl': 'http://web.archive.org/web/20230528023843/https://www.blogger.com', 'hasCustomDomain': true, 'httpsEnabled': true, 'enabledCommentProfileImages': true, 'gPlusViewType': 'FILTERED_POSTMOD', 'adultContent': false, 'analyticsAccountNumber': 'UA-19996418-48', '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\x22Google for Developers Blog - News about Web, Mobile, AI and Cloud - Atom\x22 href\x3d\x22https://developers.googleblog.com/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22Google for Developers Blog - News about Web, Mobile, AI and Cloud - RSS\x22 href\x3d\x22https://developers.googleblog.com/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Google for Developers Blog - News about Web, Mobile, AI and Cloud - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/596098824972435195/posts/default\x22 /\x3e\n', 'meTag': '', 'adsenseHostId': 'ca-host-pub-1556223355139109', 'adsenseHasAds': false, 'adsenseAutoAds': false, 'boqCommentIframeForm': true, 'loginRedirectParam': '', 'view': '', 'dynamicViewsCommentsSrc': '//web.archive.org/web/20230528023843/https://www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//web.archive.org/web/20230528023843/https://www.blogblog.com/dynamicviews/25065a3efd4de5c0', 'plusOneApiSrc': 'http://web.archive.org/web/20230528023843/https://apis.google.com/js/platform.js', 'disableGComments': true, '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': 'Twitter', 'key': 'twitter', 'shareMessage': 'Share to Twitter', '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': 'index', 'searchLabel': 'Google Developer Groups', 'pageName': 'Google Developer Groups', 'pageTitle': 'Google for Developers Blog - News about Web, Mobile, AI and Cloud: Google Developer Groups', 'metaDescription': 'News and insights on Google platforms, tools, and events.'}}, {'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': 'Google for Developers Blog - News about Web, Mobile, AI and Cloud', 'description': 'News and insights on Google platforms, tools, and events.', 'url': 'http://web.archive.org/web/20230528023843/https://developers.googleblog.com/search/label/Google%20Developer%20Groups?max-results\x3d12', 'type': 'feed', 'isSingleItem': false, 'isMultipleItems': true, 'isError': false, 'isPage': false, 'isPost': false, 'isHomepage': false, 'isArchive': false, 'isSearch': true, 'isLabelSearch': true, 'search': {'label': 'Google Developer Groups', 'resultsMessage': 'Showing posts with the label Google Developer Groups', 'resultsMessageHtml': 'Showing posts with the label \x3cspan class\x3d\x27search-label\x27\x3eGoogle Developer Groups\x3c/span\x3e'}}}]); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML1', 'nav', document.getElementById('HTML1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_FeaturedPostView', new _WidgetInfo('FeaturedPost1', 'Body', document.getElementById('FeaturedPost1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'Body', document.getElementById('Blog1'), {'cmtInteractionsEnabled': false, 'navMessage': 'Showing posts with label \x3cb\x3eGoogle Developer Groups\x3c/b\x3e. \x3ca href\x3d\x22https://developers.googleblog.com/\x22\x3eShow all posts\x3c/a\x3e'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML2', 'Footer', document.getElementById('HTML2'), {}, 'displayModeFull')); </script> </body> </html><!-- FILE ARCHIVED ON 02:38:43 May 28, 2023 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 03:38:14 Feb 18, 2025. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 0.63 exclusion.robots: 0.028 exclusion.robots.policy: 0.015 esindex: 0.014 cdx.remote: 9.444 LoadShardBlock: 86.889 (3) PetaboxLoader3.datanode: 129.92 (4) load_resource: 403.7 PetaboxLoader3.resolve: 321.244 -->