<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0"><id>tag:blogger.com,1999:blog-596098824972435195</id><updated>2021-06-27T19:33:36.770-07:00</updated><category term="Google I/O" /><category term="apis" /><category term="open source" /><category term="Fridaygram" /><category term="android" /><category term="cloud" /><category term="app engine" /><category term="chrome" /><category term="developer" /><category term="featured" /><category term="faster web" /><category term="events" /><category term="Google" /><category term="developers" /><category term="html5" /><category term="machine learning" /><category term="cloud platform" /><category term="google apps" /><category term="javascript" /><category term="TensorFlow" /><category term="google io" /><category term="actions on google" /><category term="analytics" /><category term="mobile" /><category term="apps script" /><category term="oauth" /><category term="AI" /><category term="weekly roundup" /><category term="Artificial Intelligence" /><category term="G Suite" /><category term="Google APIs" /><category term="google assistant" /><category term="maps" /><category term="games" /><category term="java" /><category term="api" /><category term="python" /><category term="bigquery" /><category term="google code project hosting" /><category term="youtube" /><category term="conferences" /><category term="google summer of code" /><category term="Latest" /><category term="Who's at Google I/O" /><category term="google code" /><category term="google developers" /><category term="googlenew" /><category term="security" /><category term="Firebase" /><category term="hackathon" /><category term="podcast" /><category term="video" /><category term="gwt" /><category term="opensocial" /><category term="flutter" /><category term="#io14" /><category term="assistant" /><category term="devfest" /><category term="gdata" /><category term="gdl" /><category term="Google Cloud" /><category term="Udacity" /><category term="google+" /><category term="openid" /><category term="IoT" /><category term="VR" /><category term="calendar" /><category term="gmail" /><category term="page speed" /><category term="Google Cloud Platform" /><category term="dart" /><category term="google pay" /><category term="gsoc" /><category term="launchpad" /><category term="Smart Home" /><category term="apps" /><category term="chrome web store" /><category term="chromium" /><category term="google visualization api" /><category term="google web toolkit" /><category term="ios" /><category term="GDD11" /><category term="gadgets" /><category term="gdg" /><category term="google developer days" /><category term="social" /><category term="Edge TPU" /><category term="ajax" /><category term="contest" /><category term="education" /><category term="event" /><category term="google developer day" /><category term="google gears" /><category term="online payments" /><category term="startup" /><category term="Coral" /><category term="Google Developer Groups" /><category term="Google Drive" /><category term="accelerator" /><category term="coffee with a googler" /><category term="entrepreneurs" /><category term="google data apis" /><category term="google pay api" /><category term="google storage" /><category term="googleio" /><category term="prediction api" /><category term="startups" /><category term="ARCore" /><category term="Drive" /><category term="Google Sheets API" /><category term="Project Tango" /><category term="TensorFlow Lite" /><category term="accessibility" /><category term="ajax search" /><category term="augmented reality" /><category term="code review" /><category term="design" /><category term="develop" /><category term="google apps marketplace" /><category term="#io15" /><category term="AdMob" /><category term="Google Drive SDK" /><category term="adsense" /><category term="enterprise" /><category term="google cast" /><category term="google chart api" /><category term="google cloud storage" /><category term="google compute engine" /><category term="linux" /><category term="performance" /><category term="small business" /><category term="speakers" /><category term="web performance" /><category term="women techmakers" /><category term="3d" /><category term="Gmail APIs" /><category term="Google Slides API" /><category term="MediaPipe" /><category term="africa" /><category term="buzz" /><category term="code jam" /><category term="developer student clubs" /><category term="google checkout" /><category term="google docs" /><category term="google for startups" /><category term="html" /><category term="mod_pagespeed" /><category term="native client" /><category term="polymer" /><category term="sdk" /><category term="search" /><category term="AR" /><category term="Ads" /><category term="App Development" /><category term="GSuite" /><category term="Google Wave" /><category term="I/O" /><category term="IO19" /><category term="app" /><category term="beacons" /><category term="cardboard" /><category term="cloud sql" /><category term="commerce" /><category term="google chrome" /><category term="google play services" /><category term="guest post" /><category term="guice" /><category term="igoogle" /><category term="maps apis" /><category term="material design" /><category term="oss devs" /><category term="payment request api" /><category term="sign-in" /><category term="student programs" /><category term="students" /><category term="web" /><category term="#io2012" /><category term="#io2013" /><category term="AIY" /><category term="AIY Projects" /><category term="AutoML" /><category term="Google Pay Developers" /><category term="Mobile web" /><category term="cast" /><category term="cloud services" /><category term="community" /><category term="countdown to I/O 2012" /><category term="css" /><category term="eclipse" /><category term="gdd07" /><category term="google earth" /><category term="google friend connect" /><category term="grow with google" /><category term="labs" /><category term="ml" /><category term="orkut" /><category term="scholarship" /><category term="standards" /><category term="translate" /><category term="visualization" /><category term="webmaster" /><category term="wtm" /><category term="#growwithgoogle" /><category term="#io16" /><category term="#io17" /><category term="#io18" /><category term="20% project" /><category term="AMP" /><category term="Android App Development" /><category term="Developer Communities" /><category term="Firebase Analytics" /><category term="Google Docs API" /><category term="Google Play" /><category term="Google Play Developers" /><category term="ML Kit" /><category term="actions" /><category term="apache" /><category term="beacon" /><category term="chrome apps" /><category term="chrome dev summit" /><category term="chrome devtools" /><category term="chrome extensions" /><category term="classes" /><category term="conversations" /><category term="courses" /><category term="font api" /><category term="gdl weekly" /><category term="geolocation" /><category term="google code search" /><category term="google gadgets" /><category term="google mashup editor" /><category term="in-app payments" /><category term="maker" /><category term="picasa web" /><category term="project hosting" /><category term="prototype" /><category term="subversion" /><category term="virtual reality" /><category term="web fonts" /><category term="Announcement" /><category term="Auth" /><category term="Certification" /><category term="Datasets" /><category term="Estimators" /><category term="G Suite Developer" /><category term="GDE" /><category term="Go" /><category term="Google Coral" /><category term="Google Developer Experts" /><category term="Google Maps" /><category term="Google sheets" /><category term="I/O Extended" /><category term="Kotlin" /><category term="Makers" /><category term="OAuth2" /><category term="SVG" /><category term="Sheets API" /><category term="Web payments" /><category term="Women in Tech" /><category term="apis console" /><category term="app indexing" /><category term="authsub" /><category term="c++" /><category term="chrome os" /><category term="chromecast" /><category term="client libraries" /><category term="code for educators" /><category term="custom search" /><category term="diversity" /><category term="docs" /><category term="dsc" /><category term="feeds" /><category term="gdd09" /><category term="gears" /><category term="google apps api" /><category term="korean" /><category term="launchpad accelerator" /><category term="machine intelligence" /><category term="open web" /><category term="osx" /><category term="privacy" /><category term="programming" /><category term="pubsubhubbub" /><category term="samba" /><category term="scholarships" /><category term="sidewiki" /><category term="speed" /><category term="training" /><category term="web components" /><category term="#io12" /><category term="#io13" /><category term="Android Studio" /><category term="Android Things" /><category term="App dev" /><category term="Application Development" /><category term="Blockly" /><category term="Brazil" /><category term="Dev Tools" /><category term="Edge TPU Accelerator" /><category term="Edge TPU Dev Board" /><category term="Europe" /><category term="Game Developers Conference" /><category term="Gmail API" /><category term="Google Cloud Messaging" /><category term="Google Developers Live" /><category term="Google Fonts" /><category term="Google Noto fonts" /><category term="Google Spreadsheets API" /><category term="Google Workspace" /><category term="Google Workspace Developer" /><category term="I/O 2017" /><category term="IO17" /><category term="India" /><category term="Indie Games Accelerator" /><category term="Local Home" /><category term="Local Home SDK" /><category term="Sceneform" /><category term="Serverless" /><category term="actionsongoogle" /><category term="ajax apis" /><category term="android developers" /><category term="android wear" /><category term="announcements" /><category term="atom publishing protocol" /><category term="awards" /><category term="browser" /><category term="caption" /><category term="chinese" /><category term="cloud datastore" /><category term="cloud storage" /><category term="code-in" /><category term="codelabs" /><category term="compression" /><category term="computer science" /><category term="devart" /><category term="dialogflow" /><category term="discovery service" /><category term="dns" /><category term="documentation" /><category term="dot net" /><category term="fusion tables" /><category term="ghop" /><category term="git" /><category term="github" /><category term="google apps for your domain" /><category term="google fit" /><category term="google web elements" /><category term="identity" /><category term="interviews" /><category term="iphone" /><category term="launchpad studio" /><category term="mac" /><category term="machine learning accelerator" /><category term="meetup" /><category term="narratives" /><category term="notifications" /><category term="open source blog" /><category term="oreilly" /><category term="picasa" /><category term="play services" /><category term="rails" /><category term="random hacks of kindness" /><category term="research" /><category term="soc" /><category term="speed tracer" /><category term="testing" /><category term="voice" /><category term="web exponents" /><category term="webgl" /><category term="women developers" /><category term="#GDC20" /><category term="#Google Workspace" /><category term="#Google Workspace Developer" /><category term="AIYProjects" /><category term="AdWords" /><category term="Administrative APIs" /><category term="Audio" /><category term="Brotli" /><category term="CardDAV" /><category term="Cloud Anchors" /><category term="CocoaPods" /><category term="Crash Reporting" /><category term="DA" /><category term="Depth" /><category term="DevFest18" /><category term="DevFestStories" /><category term="Developer Advocate" /><category term="Developer Culture" /><category term="Developer Preview" /><category term="EMEA" /><category term="Fabric" /><category term="Firebase Cloud Messaging" /><category term="Fonts" /><category term="GDD" /><category term="Google AR" /><category term="Google Cloud Talks" /><category term="Google Cloud training" /><category term="Google Data Studio" /><category term="Google Developer Student Clubs" /><category term="Google Developers Academy" /><category term="Google For Games" /><category term="Google Maps Platform" /><category term="Google Slides" /><category term="Google tech talk" /><category term="Google technology" /><category term="Gradle" /><category term="Hangouts Chat" /><category term="Hangouts Chat API" /><category term="I/O Live" /><category term="International Women’s Day" /><category term="Issue Tracker" /><category term="JS" /><category term="KDE 4.0" /><category term="Learning" /><category term="Location" /><category term="MacFuse" /><category term="Machine" /><category term="Moderator" /><category term="MySQL" /><category term="O3D" /><category term="Occlusion" /><category term="Polymer Summit" /><category term="Pose Detection" /><category term="REST" /><category term="Remote Config" /><category term="Safety &amp; Security" /><category term="Scratch" /><category term="Selfie Segmentation" /><category term="Startup accelerator" /><category term="Street View" /><category term="TF Lite" /><category term="TFLite" /><category term="TPU" /><category term="Test Lab" /><category term="UI" /><category term="Unity" /><category term="Universal App Campaigns" /><category term="University" /><category term="Vim" /><category term="WebP" /><category term="Women Tech Makers" /><category term="WomenTechmakers" /><category term="advogato" /><category term="android11" /><category term="apis. charts" /><category term="app indexing api" /><category term="apple" /><category term="asia" /><category term="best practices" /><category term="beta" /><category term="blogger" /><category term="bootcamp" /><category term="building ajax apps" /><category term="business" /><category term="caldav" /><category term="campfire one" /><category term="chrome experiment" /><category term="closure tools" /><category term="cloud functions for firebase" /><category term="cloud portability" /><category term="compatibility" /><category term="computer vision" /><category term="contacts api" /><category term="contextual gadgets" /><category term="conversation design" /><category term="crisis response" /><category term="css3" /><category term="custom search api" /><category term="developer expert" /><category term="developer features" /><category term="diversity-and-inclusion" /><category term="django" /><category term="doubleclick" /><category term="drupal" /><category term="eddystone" /><category term="email" /><category term="finance" /><category term="founders" /><category term="gcc" /><category term="geo" /><category term="goo.gl" /><category term="google assistant sdk" /><category term="google buzz" /><category term="google developers community groups" /><category term="google photos" /><category term="google scholarships" /><category term="google technoloy user groups" /><category term="google tv" /><category term="googledevelopers" /><category term="gtug" /><category term="hamilton" /><category term="hibernate" /><category term="http" /><category term="ignite" /><category term="internationalization" /><category term="internet explorer" /><category term="japanese" /><category term="joomla" /><category term="kernel" /><category term="keynote" /><category term="khronos" /><category term="kids" /><category term="kml" /><category term="latitude" /><category term="localization" /><category term="london" /><category term="material" /><category term="mozilla" /><category term="myspace" /><category term="mythtv" /><category term="nearby" /><category term="nss" /><category term="objective-c" /><category term="open data" /><category term="open-source" /><category term="opengl" /><category term="oscon" /><category term="payment handler" /><category term="payment web standard" /><category term="payments" /><category term="persistent AR" /><category term="python sprint" /><category term="reader" /><category term="review process" /><category term="safety and security" /><category term="salesforce" /><category term="schedule" /><category term="screencast" /><category term="sessions" /><category term="shindig" /><category term="sites api" /><category term="sketchup" /><category term="small businesses" /><category term="soap search api" /><category term="spdy" /><category term="speech" /><category term="storage" /><category term="subscribed links" /><category term="sxsw" /><category term="tasks API" /><category term="technology" /><category term="themes" /><category term="thought leadership" /><category term="tools" /><category term="tutorials" /><category term="tv" /><category term="ubuntu" /><category term="videos" /><category term="web animations api" /><category term="web designer" /><category term="web platform docs" /><category term="webfonts" /><category term="website optimizer" /><category term="windows" /><category term="yahoo" /><category term="young developers" /><category term="#30DaysOfFlutter" /><category term="#AIY" /><category term="#CSEdWeek" /><category term="#Contacts API" /><category term="#Google Workspace Add-ons" /><category term="#GoogleIO" /><category term="#GooglePlay #AndroidDevStory #PlayStore #DeveloperConsole #StoreListingExperiments" /><category term="#PeopleAPI" /><category term="#devfest18 #devfeststories #gdg #googledevelopers #developers #community" /><category term="#freeandopen" /><category term="#io2014" /><category term="+1" /><category term=".app" /><category term=".dev" /><category term="3D face mesh" /><category term="AI Principles" /><category term="AMP Cache" /><category term="API.AI" /><category term="Access" /><category term="Account Linking" /><category term="Actions Builder" /><category term="Actions SDK" /><category term="Actions console" /><category term="Adobe Creative Cloud" /><category term="Adobe Creative Cloud Libraries" /><category term="Alfred Camera" /><category term="Android Developer" /><category term="Android Development" /><category term="Android TV" /><category term="Android Tools" /><category term="Angular" /><category term="App Invites" /><category term="AppActions" /><category term="Augmented images" /><category term="Badges" /><category term="Bazel" /><category term="Belarus" /><category term="Black Consciousness Day" /><category term="Bluetooth" /><category term="Build Out" /><category term="BuildOut" /><category term="Bulgaria" /><category term="COVID" /><category term="COVID-19" /><category term="COVID19DetectProtect" /><category term="CPU" /><category term="Cache" /><category term="Cast Connect" /><category term="Change" /><category term="Chrome OS IO" /><category term="Chrome OS IO19" /><category term="Chromebooks" /><category term="Climate" /><category term="Cloud Computing" /><category term="Cloud Functions" /><category term="Cloud Next" /><category term="Cloud Study Jam" /><category term="Cloud anchor" /><category term="Colaboratory" /><category term="Colt McAnlis" /><category term="Compilers" /><category term="Computer Science Education Week" /><category term="Console" /><category term="Containers" /><category term="Coral updates" /><category term="Core ML" /><category term="Croatia" /><category term="Crostini" /><category term="Custom Elements" /><category term="Czechia" /><category term="DFP" /><category term="Dashboard" /><category term="Data Compression" /><category term="Data Visualization" /><category term="Data science" /><category term="Databases" /><category term="Dataset" /><category term="Daydream" /><category term="Debian" /><category term="Developer Dashboard" /><category term="Developer Keynote" /><category term="Developer Profile" /><category term="Development" /><category term="Device" /><category term="Dia da Consciência Negra" /><category term="Docker" /><category term="Ebay" /><category term="Edge AI" /><category term="Entity Extraction" /><category term="Error logging" /><category term="Estimator" /><category term="Ethics" /><category term="FCM" /><category term="FCP" /><category term="Fairness" /><category term="Firebase Cloud Functions" /><category term="Firebase Dynamic Links" /><category term="Flutter 1.2" /><category term="Flutter 1.5" /><category term="Flutter 1.9" /><category term="Flutter 2" /><category term="Flutter Clock" /><category term="Flutter Create" /><category term="Flutter Engage" /><category term="Flutter Interact" /><category term="Flutter Live" /><category term="Flutter Web" /><category term="Flutter at IO" /><category term="Flutter developers" /><category term="Flutter for desktop" /><category term="Flutter for web" /><category term="Flutter plugin" /><category term="Follow Us" /><category term="Follow-up Responses" /><category term="G+" /><category term="GCP" /><category term="GDA" /><category term="GDC 2020" /><category term="GDC17" /><category term="GET" /><category term="GKE" /><category term="GMTC" /><category term="GPE" /><category term="GPGS C++ Games" /><category term="GPT" /><category term="GWSOP" /><category term="Game Development" /><category term="General Availability" /><category term="Gigster" /><category term="Glass" /><category term="Gmail Add-on" /><category term="Google AI" /><category term="Google Analytics" /><category term="Google Assistant Bluetooth" /><category term="Google Assistant Developer Day" /><category term="Google Assistant IO" /><category term="Google Assistant IO19" /><category term="Google Brain" /><category term="Google Cardboard" /><category term="Google Charts" /><category term="Google Developer Profiles" /><category term="Google Developer Scholarship" /><category term="Google Developers Groups" /><category term="Google Developers University Consortium" /><category term="Google Developers site" /><category term="Google Docs Add-on" /><category term="Google Groups Settings" /><category term="Google Home Hub" /><category term="Google IOS Android" /><category term="Google Identity Platform" /><category term="Google Pay India" /><category term="Google Play Developer API" /><category term="Google Play Indie Games Festival" /><category term="Google Play Indie games accelerator" /><category term="Google Registry" /><category term="Google Science Fair" /><category term="Google Sheets Add-on" /><category term="Google Slides Add-on" /><category term="Google Workspace Add-ons" /><category term="Google Workspace Chat" /><category term="Google Workspace Chatbots" /><category term="Google in Asia" /><category term="GoogleAssistant" /><category term="GooglePlay" /><category term="GooglePlay AndroidDev" /><category term="Groovy" /><category term="Groups API" /><category term="Handwriting" /><category term="Headset" /><category term="I/O 17" /><category term="ICYMI" /><category term="IO" /><category term="IO19 Flutter" /><category term="IO2017" /><category term="ITRP" /><category term="IWD 2020" /><category term="IWD 2021" /><category term="Image Compression" /><category term="Imara" /><category term="In-app billing" /><category term="Indie Games" /><category term="Indie Games Festival" /><category term="Information Technology Residency Program" /><category term="Instagram" /><category term="Jetpack Compose" /><category term="KDE" /><category term="Keras" /><category term="Krakow" /><category term="Kubernetes" /><category term="Large Screens" /><category term="LatAm startups" /><category term="Latin America" /><category term="LaunchShow" /><category term="Leadership" /><category term="Linux on Chrome OS" /><category term="Linux on Chromebooks" /><category term="LoCo" /><category term="Logging" /><category term="MDL" /><category term="MIT CSAIL" /><category term="MIT Media Lab" /><category term="MLCC" /><category term="MOOC" /><category term="Mainframe Migration" /><category term="Marketplace" /><category term="Mexico startups" /><category term="Micronaut" /><category term="Microservices" /><category term="Mirru" /><category term="Mobile App Development" /><category term="Mobile Development" /><category term="Mobile World Congress" /><category term="Monthly roundup" /><category term="NPM" /><category term="NYT" /><category term="Nest" /><category term="Nest WiFi" /><category term="Next Billion Users" /><category term="Noto Serif CJK" /><category term="OAuth playground" /><category term="OCaml" /><category term="ODF" /><category term="OOXML" /><category term="Object Detection and Tracking" /><category term="Optimization" /><category term="POST" /><category term="PWA" /><category term="PageSpeed" /><category term="Peer bonus program" /><category term="Platform_Update" /><category term="Poly" /><category term="Pose Estimation" /><category term="PowerMeter API" /><category term="Prerender" /><category term="Progressive Web App" /><category term="Project Connected Home over IP" /><category term="Project Loon" /><category term="Qualcomm" /><category term="Qualcomm Google" /><category term="Rasberry Pi" /><category term="Raw Depth" /><category term="React" /><category term="Recording and Playback" /><category term="Resources" /><category term="Responsible AI" /><category term="Reto Meier" /><category term="Rewarded Ads" /><category term="Rewarded Video Ads" /><category term="SIMD" /><category term="STEM" /><category term="Saatchi" /><category term="Sample dialogs" /><category term="Santa Tracker" /><category term="Scala" /><category term="Serbia" /><category term="Sheets" /><category term="Shoreline Amphitheatre" /><category term="Sign language" /><category term="Slides API" /><category term="Smart Lock for Passwords" /><category term="Space" /><category term="Spring" /><category term="Stable release" /><category term="Stackdriver" /><category term="Static Sites" /><category term="Strobe" /><category term="Sundar Pichai" /><category term="TPU Dev Board" /><category term="Tablets" /><category term="Team Drives (new)" /><category term="Technical Writing" /><category term="TensorFlow Research Cloud" /><category term="Tez" /><category term="Toolkit" /><category term="Traits" /><category term="UN" /><category term="UNDP" /><category term="UNICEF" /><category term="URLs" /><category term="USB Accelerator" /><category term="UX" /><category term="Ukraine" /><category term="Update" /><category term="VUI" /><category term="Wear OS" /><category term="Wearables" /><category term="Weave" /><category term="WhiteHouse.gov" /><category term="Winter of Code" /><category term="Young Makers" /><category term="ZXing" /><category term="about.com" /><category term="activity" /><category term="adobe" /><category term="advanced" /><category term="agency program" /><category term="agpl" /><category term="ajax search books news apis" /><category term="all for good" /><category term="amarok" /><category term="and Assistant" /><category term="android developer certification" /><category term="androidstudio" /><category term="animation" /><category term="aogdevs" /><category term="apis explorer" /><category term="app design" /><category term="area 120" /><category term="artifact management" /><category term="asl" /><category term="augmented faces" /><category term="australia" /><category term="authentication" /><category term="automatic speech recognition" /><category term="axsjax" /><category term="barcodes" /><category term="bespin" /><category term="bitcoin" /><category term="book search" /><category term="books API" /><category term="braintree" /><category term="british english" /><category term="business console" /><category term="caja" /><category term="camino" /><category term="celebrating" /><category term="certification award" /><category term="channel" /><category term="chronoscope" /><category term="cifs" /><category term="classroom api" /><category term="cms" /><category term="coca cola" /><category term="codeedu" /><category term="coding" /><category term="collada" /><category term="color" /><category term="community connectors" /><category term="competition" /><category term="compressorhead" /><category term="computing heritage" /><category term="conference" /><category term="couchdb" /><category term="country support" /><category term="crash course" /><category term="crashlytics" /><category term="creative commons" /><category term="cricket" /><category term="cryptocurrency" /><category term="cryptography" /><category term="cxd" /><category term="danish linux forum" /><category term="database" /><category term="datastore" /><category term="dataviz" /><category term="demo" /><category term="deprecation" /><category term="desktop" /><category term="desktop apps" /><category term="developer library" /><category term="developer relations" /><category term="developers. meetup" /><category term="devfest developer chrome maps social wave apps" /><category term="differential privacy" /><category term="do-it-yourself" /><category term="documents list api" /><category term="dojo" /><category term="domain" /><category term="domains" /><category term="doodles" /><category term="dreamweaver" /><category term="dynamic links" /><category term="earn" /><category term="earth" /><category term="eclipsecon" /><category term="educatio" /><category term="encryption" /><category term="endpoints" /><category term="estonia" /><category term="evolution" /><category term="execution api" /><category term="extensions" /><category term="face detection" /><category term="fairness in machine learning" /><category term="fintech" /><category term="firebug" /><category term="firefox" /><category term="firestore" /><category term="firevox" /><category term="firstbeta" /><category term="fitness" /><category term="flutter release preview 1" /><category term="flutter release preview 2" /><category term="foldables" /><category term="fosdem" /><category term="freebsd" /><category term="freenet" /><category term="gaming" /><category term="gci" /><category term="gdd08" /><category term="geoserver" /><category term="getpaid" /><category term="gnome" /><category term="gnome women's summer outreach program" /><category term="golang" /><category term="google certification" /><category term="google code university" /><category term="google data protocol" /><category term="google developers certification" /><category term="google doctype" /><category term="google domains" /><category term="google grants" /><category term="google health" /><category term="google pay account" /><category term="google pay business" /><category term="google pay integration" /><category term="google pay support" /><category term="google platform" /><category term="google space" /><category term="google wallet" /><category term="google.org" /><category term="googlecast" /><category term="googlewebelements googleio" /><category term="green linux" /><category term="grow" /><category term="gtags" /><category term="gulp" /><category term="gzip" /><category term="hacking" /><category term="hackthon" /><category term="hand tracking" /><category term="hangouts" /><category term="haproxy" /><category term="hg" /><category term="howto" /><category term="hpux" /><category term="iOS SDK" /><category term="iPhone Development" /><category term="ical" /><category term="ietf" /><category term="iguanas" /><category term="iiw" /><category term="image search" /><category term="in-app purchase" /><category term="incubator" /><category term="indie" /><category term="indie developers" /><category term="information visualization" /><category term="integration status" /><category term="intelligentwire" /><category term="interactive music" /><category term="internet of things" /><category term="internship" /><category term="io18" /><category term="ipad" /><category term="israel" /><category term="jaiku" /><category term="jetpack" /><category term="joomladayus2007" /><category term="joomladayusa" /><category term="json" /><category term="karaoke" /><category term="kernel summit" /><category term="kids coding" /><category term="kids coding team" /><category term="lanchpad" /><category term="language" /><category term="languages" /><category term="laptop apps" /><category term="laptops" /><category term="latam accelerator" /><category term="latvia" /><category term="launch" /><category term="lca" /><category term="lens" /><category term="lessons" /><category term="licenses" /><category term="linux foundation" /><category term="linux summit" /><category term="linux virtual server" /><category term="linuxconf eu" /><category term="lithuania" /><category term="malware" /><category term="manufacturing" /><category term="material components" /><category term="mercurial" /><category term="mobile UX" /><category term="mobile design" /><category term="mobile performance" /><category term="mobile sites" /><category term="mobile speed" /><category term="monetize" /><category term="multi-platform" /><category term="mylar" /><category term="named" /><category term="native ads" /><category term="netbsd" /><category term="nodejs" /><category term="non-profit" /><category term="nonsense" /><category term="nosql" /><category term="nvidia" /><category term="ocr" /><category term="office hours" /><category term="oha" /><category term="open source releases" /><category term="openajax alliance" /><category term="openssh" /><category term="openssl" /><category term="oscon2007" /><category term="osi" /><category term="ossjam" /><category term="pactester" /><category term="palette" /><category term="paypal" /><category term="persistence" /><category term="phone" /><category term="photos" /><category term="places API" /><category term="playground" /><category term="plone" /><category term="plone sprint" /><category term="poland" /><category term="portugal" /><category term="posix" /><category term="preview" /><category term="prizes" /><category term="processing" /><category term="production access" /><category term="products - slides" /><category term="programmers" /><category term="proximity" /><category term="py3k" /><category term="releases" /><category term="reserve seats" /><category term="result snippets" /><category term="rhino" /><category term="sandbox" /><category term="scalability" /><category term="scale-ups" /><category term="scopes" /><category term="sdks" /><category term="serif" /><category term="service worker" /><category term="seurat" /><category term="shape" /><category term="shopping" /><category term="shortcuts" /><category term="showcase" /><category term="signall" /><category term="silverstripe" /><category term="sitemaps" /><category term="sixapart" /><category term="small-business" /><category term="smart display" /><category term="social graph" /><category term="software update" /><category term="solaris" /><category term="solutions challenge" /><category term="souders" /><category term="spa2007" /><category term="spyware" /><category term="startup africa roadtrip" /><category term="stories" /><category term="stuff" /><category term="style" /><category term="subscription" /><category term="summer of code" /><category term="syndication" /><category term="targeted spyware" /><category term="techmakers" /><category term="templates" /><category term="tensorRT" /><category term="tensorflow dev summit" /><category term="text embedding models" /><category term="tfdevsummit" /><category term="tool" /><category term="topp" /><category term="tranparency" /><category term="transit" /><category term="translation" /><category term="ubiquitous computing" /><category term="ubiquity" /><category term="ubucon" /><category term="unicode" /><category term="unit test" /><category term="universal" /><category term="unix" /><category term="updates" /><category term="url" /><category term="url shortener" /><category term="verification" /><category term="virtual keyboard" /><category term="voice kit" /><category term="voice technology" /><category term="voice user interface" /><category term="wattpad" /><category term="web apps" /><category term="web design" /><category term="web development" /><category term="web registry" /><category term="webVR" /><category term="websites" /><category term="win" /><category term="windows programming" /><category term="women" /><category term="writing" /><category term="xauth" /><category term="zlib" /><category term="zurich" /><title type="text">Google Developers Blog</title><subtitle type="html">Blog of our latest news, updates, and stories for developers</subtitle><link rel="alternate" type="text/html" href="http://developers.googleblog.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default?start-index=26&amp;max-results=25&amp;redirect=false" /><author><name>ewood</name><uri>http://www.blogger.com/profile/12341551220176883769</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>2062</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/GDBcode" /><feedburner:info uri="gdbcode" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-2735190491998753966</id><published>2021-06-25T10:08:00.000-07:00</published><updated>2021-06-25T10:08:49.943-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI" /><category scheme="http://www.blogger.com/atom/ns#" term="Artificial Intelligence" /><category scheme="http://www.blogger.com/atom/ns#" term="Coral" /><category scheme="http://www.blogger.com/atom/ns#" term="demo" /><category scheme="http://www.blogger.com/atom/ns#" term="Edge TPU" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><category scheme="http://www.blogger.com/atom/ns#" term="IoT" /><category scheme="http://www.blogger.com/atom/ns#" term="machine learning" /><category scheme="http://www.blogger.com/atom/ns#" term="manufacturing" /><category scheme="http://www.blogger.com/atom/ns#" term="software update" /><category scheme="http://www.blogger.com/atom/ns#" term="TensorFlow" /><category scheme="http://www.blogger.com/atom/ns#" term="TensorFlow Lite" /><category scheme="http://www.blogger.com/atom/ns#" term="USB Accelerator" /><title type="text">Developer updates from Coral </title><content type="html">&lt;meta name="twitter:image" content=" https://1.bp.blogspot.com/-FJHD2NlQP7s/YNXlA1_gj7I/AAAAAAAAKXw/nheWk0BCM0UsEj_uowgeuMSsdO2b0_A2wCLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252857%2529.png "&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-FJHD2NlQP7s/YNXlA1_gj7I/AAAAAAAAKXw/nheWk0BCM0UsEj_uowgeuMSsdO2b0_A2wCLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252857%2529.png  "&gt; &lt;p&gt;&lt;em&gt;Posted by The Coral Team &lt;/em&gt;&lt;p&gt;  &lt;p&gt;We're always excited to share updates to our Coral platform for building edge ML applications. In this post, we have some interesting demos, interfaces, and tutorials to share, and we'll start by pointing you to an important software update for the Coral Dev Board.  &lt;/p&gt; &lt;h2&gt;Important update for the Dev Board / SoM&lt;/h2&gt; &lt;p&gt;If you have a &lt;a href="https://coral.ai/products/dev-board"&gt;Coral Dev Board&lt;/a&gt; or &lt;a href="https://coral.ai/products/som"&gt;Coral SoM&lt;/a&gt;, please install our latest Mendel update as soon as possible to receive a critical fix to part of the SoC power configuration. To get it, just log onto your board and install the update as follows: &lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-WU3H5TxwwPo/YNXkve_oYLI/AAAAAAAAKXo/PHYXlls_cksFjtz_qbBLdlvZvp-t3eJFACLcBGAsYHQ/s0/Screen%2BShot%2B2021-06-25%2Bat%2B10.09.52%2BAM.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Dev Board / Som" border="0" data-original-height="138" data-original-width="1214" src="https://1.bp.blogspot.com/-WU3H5TxwwPo/YNXkve_oYLI/AAAAAAAAKXo/PHYXlls_cksFjtz_qbBLdlvZvp-t3eJFACLcBGAsYHQ/s0/Screen%2BShot%2B2021-06-25%2Bat%2B10.09.52%2BAM.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;    &lt;p&gt;This will install a patch from NXP for the Dev Board / SoM's SoC, without which it's possible the SoC will overstress and the lifetime of the device could be reduced. If you recently flashed your board with the latest system image, you might already have this fix (we also updated the flashable image today), but it never hurts to fetch all updates, as shown above. &lt;/p&gt; &lt;strong&gt;Note: &lt;/strong&gt;This update does not apply to the Dev Board Mini.  &lt;br&gt;  &lt;br&gt;&lt;br&gt;   &lt;h2&gt;Manufacturing demo &lt;/h2&gt; &lt;p&gt;We recently published the &lt;a href="https://github.com/google-coral/demo-manufacturing"&gt;Coral Manufacturing Demo&lt;/a&gt;, which demonstrates how to use a single Coral Edge TPU to simultaneously accomplish two common manufacturing use-cases: worker safety and visual inspection.  &lt;/p&gt;&lt;p&gt;The demo is designed for two specific videos and tasks (worker keepout detection and apple quality grading) but it is designed to be easily customized with different inputs and tasks. The demo, written in C++, requires OpenGL and is primarily targeted at x86 systems which are prevalent in manufacturing gateways – although ARM Cortex-A systems, like the Coral Dev Board, are also supported. &lt;/p&gt;  &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-FJHD2NlQP7s/YNXlA1_gj7I/AAAAAAAAKXw/nheWk0BCM0UsEj_uowgeuMSsdO2b0_A2wCLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252857%2529.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="demo image" border="0" data-original-height="693" data-original-width="1230" src="https://1.bp.blogspot.com/-FJHD2NlQP7s/YNXlA1_gj7I/AAAAAAAAKXw/nheWk0BCM0UsEj_uowgeuMSsdO2b0_A2wCLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252857%2529.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;     &lt;h2&gt;Web Coral&lt;/h2&gt; &lt;p&gt;We've been working hard to make ML acceleration with the Coral Edge TPU available for most popular systems. So we're proud to announce support for WebUSB, allowing you to use the &lt;a href="https://coral.ai/products/accelerator/"&gt;Coral USB Accelerator &lt;/a&gt;directly from Chrome. To get started, check out our &lt;a href="https://github.com/google-coral/webcoral"&gt;WebCoral demo&lt;/a&gt;, which builds a webpage where you can select a model and run an inference accelerated by the Edge TPU. &lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-XuMau-ADtSc/YNXlTfkD_OI/AAAAAAAAKX4/4HDtp_ZIKYYEC2FFKWjWykNxsHyj5NYTgCLcBGAsYHQ/s0/webcoral_blog2.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt=" Edge TPU" border="0" data-original-height="1282" data-original-width="1600" src="https://1.bp.blogspot.com/-XuMau-ADtSc/YNXlTfkD_OI/AAAAAAAAKX4/4HDtp_ZIKYYEC2FFKWjWykNxsHyj5NYTgCLcBGAsYHQ/s0/webcoral_blog2.gif"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/center&gt;      &lt;h2&gt;New models repository&lt;/h2&gt; &lt;p&gt;We recently released a new &lt;a href="https://coral.ai/models/"&gt;models repository&lt;/a&gt; that makes it easier to explore the various trained models available for the Coral platform, including image classification, object detection, semantic segmentation, pose estimation, and speech recognition. Each family page lists the various models, including details about training dataset, input size, latency, accuracy, model size, and other parameters, making it easier to select the best fit for the application at hand. Lastly, each family page includes links to training scripts and example code to help you get started. Or for an overview of all our models, you can see them &lt;a href="https://coral.ai/models/all/"&gt;all on one page&lt;/a&gt;.  &lt;/p&gt;   &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-BagTjlv-lnk/YNXlgoeyn6I/AAAAAAAAKX8/JjN3te8E6qAKyrT6h6abKut0J-tp6luQwCLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252858%2529.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Models, trained TensorFlow models for the Edge TPU" border="0" data-original-height="1488" data-original-width="1600" src="https://1.bp.blogspot.com/-BagTjlv-lnk/YNXlgoeyn6I/AAAAAAAAKX8/JjN3te8E6qAKyrT6h6abKut0J-tp6luQwCLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252858%2529.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;    &lt;h2&gt;Transfer learning tutorials&lt;/h2&gt; &lt;p&gt;Even with our collection of &lt;a href="https://coral.ai/models"&gt;pre-trained models&lt;/a&gt;, it can sometimes be tricky to create a task-specific model that's compatible with our Edge TPU accelerator. To make this easier, we've released some new Google Colab tutorials that allow you to perform transfer learning for object detection, using MobileDet and EfficientDet-Lite models. You can find these and other Colabs in our &lt;a href="https://github.com/google-coral/tutorials#readme"&gt;GitHub Tutorials repo&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;We are excited to share all that Coral has to offer as we continue to evolve our platform. Keep an eye out for more software and platform related news coming this summer. To discover more about our edge ML platform, please visit &lt;a href="https://coral.ai/"&gt;Coral.ai&lt;/a&gt; and share your feedback at &lt;a href="mailto:coral-support@google.com"&gt;coral-support@google.com&lt;/a&gt;. &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/1eVnUH0ezwA" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/2735190491998753966/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/06/developer-updates-from-coral.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2735190491998753966" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2735190491998753966" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/1eVnUH0ezwA/developer-updates-from-coral.html" title="Developer updates from Coral " /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-FJHD2NlQP7s/YNXlA1_gj7I/AAAAAAAAKXw/nheWk0BCM0UsEj_uowgeuMSsdO2b0_A2wCLcBGAsYHQ/s72-c/pasted%2Bimage%2B0%2B%252857%2529.png  " height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/06/developer-updates-from-coral.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-629076649724909872</id><published>2021-06-24T09:00:00.005-07:00</published><updated>2021-06-24T09:05:34.282-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="accelerator" /><category scheme="http://www.blogger.com/atom/ns#" term="founders" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><category scheme="http://www.blogger.com/atom/ns#" term="google for startups" /><category scheme="http://www.blogger.com/atom/ns#" term="women" /><title type="text">Apply now for Google for Startups Accelerator: Women Founders </title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-lL0-CtR2Otg/YNOmXXx489I/AAAAAAAAKXY/HXBs2fhLTUENBzZU_fC_8LylAMrzJJB1wCLcBGAsYHQ/s0/GFSA_Women_Founders_announcement_v2_Twitter_v1.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-lL0-CtR2Otg/YNOmXXx489I/AAAAAAAAKXY/HXBs2fhLTUENBzZU_fC_8LylAMrzJJB1wCLcBGAsYHQ/s0/GFSA_Women_Founders_announcement_v2_Twitter_v1.png"&gt;   &lt;p&gt;&lt;em&gt;Posted by Ashley Francisco&lt;/em&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-lL0-CtR2Otg/YNOmXXx489I/AAAAAAAAKXY/HXBs2fhLTUENBzZU_fC_8LylAMrzJJB1wCLcBGAsYHQ/s0/GFSA_Women_Founders_announcement_v2_Twitter_v1.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Women Founders apply now header" border="0" data-original-height="1025" data-original-width="2048" src="https://1.bp.blogspot.com/-lL0-CtR2Otg/YNOmXXx489I/AAAAAAAAKXY/HXBs2fhLTUENBzZU_fC_8LylAMrzJJB1wCLcBGAsYHQ/s0/GFSA_Women_Founders_announcement_v2_Twitter_v1.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;&lt;em&gt;&lt;a href="https://startup.google.com/accelerator/women-founders/"&gt;The Google for Startups Accelerator: Women Founders&lt;/a&gt; program is now open for applications until July 19.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Last year, &lt;a href="https://blog.google/outreach-initiatives/entrepreneurs/support-for-womens-entrepreneurship-in-the-us-and-canada/"&gt;we launched &lt;/a&gt;the inaugural Google for Startups Accelerator: Women Founders program in North America to help women-led startups identify and solve technical challenges while scaling their companies. The inaugural cohort also received tailored programming to address some of the longstanding barriers that women founders face.  &lt;/p&gt;&lt;p&gt;Women founders remain underrepresented in the tech startup ecosystem because they often lack access to the resources needed to start, build, and grow their businesses. The COVID-19 pandemic exacerbated these structural barriers by disproportionately impacting women in the workforce—and &lt;a href="https://www.mckinsey.com/featured-insights/future-of-work/covid-19-and-gender-equality-countering-the-regressive-effects"&gt;research shows &lt;/a&gt;women were more vulnerable to the economic effects of COVID-19 because of existing gender disparities.    &lt;/p&gt;&lt;p&gt;For women founders, access to capital is one of the major challenges to launching their business.  A recent &lt;a href="https://news.crunchbase.com/news/global-vc-funding-to-female-founders/"&gt;report&lt;/a&gt; showed women-led startups received a mere 2.3% of global venture capitalist funding in 2020, falling from 2.8% the year before.  &lt;/p&gt;&lt;p&gt;The Google for Startups Accelerator: Women Founders program aims to help bridge the gap and create opportunities for women founders to succeed.  Beyond mentorship and technical project support, the accelerator also includes deep dives and workshops focused on product design, customer acquisition, and leadership development for founders. Participants will also hear from a roster of speakers and facilitators who deliver both technical and nontechnical programming for women-led startups.  &lt;/p&gt;&lt;p&gt;Applications for the second Google for Startups Accelerator: Women Founders program are now open until July 19, for North American applicants. Approximately 10-12 startups with at least one woman founder will be selected from across North America. The accelerator runs from September through to December 2021.  &lt;/p&gt;&lt;p&gt;To learn more about the program and to apply, visit the &lt;a href="https://goo.gle/2SaUyPT "&gt;website&lt;/a&gt;. &lt;/p&gt; &lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/foIG5av9fPY" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/629076649724909872/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/06/apply-now-for-google-for-startups-accelerator-women-founders.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/629076649724909872" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/629076649724909872" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/foIG5av9fPY/apply-now-for-google-for-startups-accelerator-women-founders.html" title="Apply now for Google for Startups Accelerator: Women Founders " /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-lL0-CtR2Otg/YNOmXXx489I/AAAAAAAAKXY/HXBs2fhLTUENBzZU_fC_8LylAMrzJJB1wCLcBGAsYHQ/s72-c/GFSA_Women_Founders_announcement_v2_Twitter_v1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/06/apply-now-for-google-for-startups-accelerator-women-founders.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-2357369447388822060</id><published>2021-06-23T10:12:00.013-07:00</published><updated>2021-06-23T10:29:20.627-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apis" /><category scheme="http://www.blogger.com/atom/ns#" term="app" /><category scheme="http://www.blogger.com/atom/ns#" term="App dev" /><category scheme="http://www.blogger.com/atom/ns#" term="App Development" /><category scheme="http://www.blogger.com/atom/ns#" term="app engine" /><category scheme="http://www.blogger.com/atom/ns#" term="Application Development" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud platform" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud services" /><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="developers" /><category scheme="http://www.blogger.com/atom/ns#" term="Google APIs" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Cloud Platform" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title type="text">Introducing "Serverless Migration Station" Learning Modules</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-c8Q-0pZoU60/YNEW2hDqaeI/AAAAAAAAKWw/e6O_rtp9qycJdXwzdmjvk-T-Bh37-nZlwCLcBGAsYHQ/s0/%255BGD%2BBLOG%255D%2BIntroducing%2B%2522Serverless%2BMigration%2BStation%2522%2Bvideo%2Bseries.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-c8Q-0pZoU60/YNEW2hDqaeI/AAAAAAAAKWw/e6O_rtp9qycJdXwzdmjvk-T-Bh37-nZlwCLcBGAsYHQ/s0/%255BGD%2BBLOG%255D%2BIntroducing%2B%2522Serverless%2BMigration%2BStation%2522%2Bvideo%2Bseries.png"&gt; &lt;em&gt;Posted by &lt;a href="http://google.com/+WesleyChun"&gt;Wesley Chun&lt;/a&gt; (&lt;a href="http://twitter.com/wescpy"&gt;@wescpy&lt;/a&gt;), Developer Advocate, Google Cloud&lt;/em&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-c8Q-0pZoU60/YNEW2hDqaeI/AAAAAAAAKWw/e6O_rtp9qycJdXwzdmjvk-T-Bh37-nZlwCLcBGAsYHQ/s0/%255BGD%2BBLOG%255D%2BIntroducing%2B%2522Serverless%2BMigration%2BStation%2522%2Bvideo%2Bseries.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img width="style:100%" alt="graphic showing movement with arrows,. settings, lines, and more" border="0" data-original-height="512" data-original-width="1024" src="https://1.bp.blogspot.com/-c8Q-0pZoU60/YNEW2hDqaeI/AAAAAAAAKWw/e6O_rtp9qycJdXwzdmjvk-T-Bh37-nZlwCLcBGAsYHQ/s0/%255BGD%2BBLOG%255D%2BIntroducing%2B%2522Serverless%2BMigration%2BStation%2522%2Bvideo%2Bseries.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;h2&gt;Helping users modernize their serverless apps&lt;/h2&gt;  &lt;p&gt;Earlier this year, the Google Cloud team &lt;a href="http://goo.gle/3rykrVy"&gt;introduced a series of codelabs&lt;/a&gt; (free, online, self-paced, hands-on tutorials) designed for technical practitioners modernizing their serverless applications. Today, we're excited to announce companion videos, forming a set of "learning modules" made up of these videos and their corresponding codelab tutorials. Modernizing your applications allows you to access continuing product innovation and experience a more open Google Cloud. The initial content is designed with &lt;a href="http://cloud.google.com/appengine"&gt;App Engine&lt;/a&gt; developers in mind, our earliest users, to help you take advantage of the latest features in Google Cloud. Here are some of the key migrations and why they benefit you: &lt;/p&gt;&lt;ul&gt; &lt;li&gt;&lt;strong&gt;&lt;a href="https://cloud.google.com/appengine/docs/standard/python/migrate-to-python3/migrate-to-cloud-ndb"&gt;Migrate to Cloud NDB&lt;/a&gt;&lt;/strong&gt;: App Engine's legacy &lt;code&gt;ndb&lt;/code&gt; library used to access Datastore is tied to Python 2 (which has been sunset by its community). Cloud NDB gives developers the same NDB-style Datastore access but is Python 2-3 compatible and allows Datastore to be used &lt;em&gt;outside&lt;/em&gt; of App Engine.  &lt;li&gt;&lt;strong&gt;Migrate to &lt;a href="cloud.google.com/run"&gt;Cloud Run&lt;/a&gt;&lt;/strong&gt;: There has been a continuing shift towards containerization, an app modernization process making apps more portable and deployments more easily reproducible. If you appreciate App Engine's easy deployment and autoscaling capabilities, you can get the same by containerizing your App Engine apps for Cloud Run.  &lt;li&gt;&lt;strong&gt;&lt;a href="https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/migrating-push-queues"&gt;Migrate to Cloud Tasks&lt;/a&gt;&lt;/strong&gt;: while the legacy App Engine &lt;code&gt;taskqueue&lt;/code&gt; service is still available, new features and continuing innovation are going into &lt;a href="cloud.google.com/tasks"&gt;Cloud Tasks&lt;/a&gt;, its standalone equivalent letting users create and execute App Engine &lt;em&gt;and&lt;/em&gt; non-App Engine&lt;em&gt; &lt;/em&gt;tasks. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;  &lt;br&gt;The &lt;a href="http://goo.gle/ServerlessExpeditions"&gt;"Serverless Migration Station"&lt;/a&gt; videos are part of the long-running &lt;a href="https://goo.gle/ServerlessExpeditions"&gt;Serverless Expeditions series&lt;/a&gt; you may already be familiar with. In each video, Google engineer Martin Omander and I explore a variety of different modernization techniques. Viewers will be given an overview of the task at hand, a deeper-dive screencast takes a closer look at the code or configuration files, and most importantly, illustrates to developers the migration steps necessary to transform the same sample app across each migration. &lt;/p&gt; &lt;h2&gt;Sample app&lt;/h2&gt;  &lt;p&gt;The baseline sample app is a simple Python 2 App Engine NDB and webapp2 application. It registers every web page visit (saving visiting IP address and browser/client type) and displays the most recent queries. The entire application is shown below, featuring &lt;code&gt;Visit&lt;/code&gt; as the data Kind, the &lt;code&gt;store_visit()&lt;/code&gt; and &lt;code&gt;fetch_visits()&lt;/code&gt; functions, and the main application handler, &lt;code&gt;MainHandler&lt;/code&gt;. &lt;/p&gt; &lt;pre&gt;&lt;code&gt;&lt;br /&gt;import os&lt;br /&gt;import webapp2&lt;br /&gt;from google.appengine.ext import ndb&lt;br /&gt;from google.appengine.ext.webapp import template&lt;br /&gt; &lt;br /&gt;class Visit(ndb.Model):&lt;br /&gt;    'Visit entity registers visitor IP address &amp; timestamp'&lt;br /&gt;    visitor   = ndb.StringProperty()&lt;br /&gt;    timestamp = ndb.DateTimeProperty(auto_now_add=True)&lt;br /&gt; &lt;br /&gt;def store_visit(remote_addr, user_agent):&lt;br /&gt;    'create new Visit entity in Datastore'&lt;br /&gt;    Visit(visitor='{}: {}'.format(remote_addr, user_agent)).put()&lt;br /&gt; &lt;br /&gt;def fetch_visits(limit):&lt;br /&gt;    'get most recent visits'&lt;br /&gt;    return (v.to_dict() for v in Visit.query().order(&lt;br /&gt;            -Visit.timestamp).fetch(limit))&lt;br /&gt; &lt;br /&gt;class MainHandler(webapp2.RequestHandler):&lt;br /&gt;    'main application (GET) handler'&lt;br /&gt;    def get(self):&lt;br /&gt;        store_visit(self.request.remote_addr, self.request.user_agent)&lt;br /&gt;        visits = fetch_visits(10)&lt;br /&gt;        tmpl = os.path.join(os.path.dirname(__file__), 'index.html')&lt;br /&gt;        self.response.out.write(template.render(tmpl, {'visits': visits}))&lt;br /&gt; &lt;br /&gt;app = webapp2.WSGIApplication([&lt;br /&gt;    ('/', MainHandler),&lt;br /&gt;], debug=True)&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;  &lt;center&gt;&lt;strong&gt;&lt;em&gt;Baseline sample application code&lt;/em&gt;&lt;/strong&gt;&lt;/center&gt;&lt;/p&gt;&lt;p&gt;Upon deploying this application to App Engine, users will get output similar to the following: &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-0kMo0pXINKw/YNEadTfSjfI/AAAAAAAAKW4/einuosIWUnQXUeQVGqX9Bf-nLviJCuoeQCLcBGAsYHQ/s0/%255BGD%2BBLOG%255D%2B2%2BIntroducing%2B%2522Serverless%2BMigration%2BStation%2522%2Bvideo%2Bseries.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="image of a website with text saying VisitMe example" border="0" data-original-height="934" data-original-width="1600" src="https://1.bp.blogspot.com/-0kMo0pXINKw/YNEadTfSjfI/AAAAAAAAKW4/einuosIWUnQXUeQVGqX9Bf-nLviJCuoeQCLcBGAsYHQ/s0/%255BGD%2BBLOG%255D%2B2%2BIntroducing%2B%2522Serverless%2BMigration%2BStation%2522%2Bvideo%2Bseries.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;  &lt;center&gt;&lt;strong&gt;&lt;em&gt;VisitMe application sample output&lt;/em&gt;&lt;/strong&gt;&lt;/center&gt;&lt;/p&gt;&lt;p&gt;This application is the subject of today's launch video, and the &lt;code&gt;main.py&lt;/code&gt; file above along with other application and configuration files can be found in the &lt;a href="https://github.com/googlecodelabs/migrate-python2-appengine/tree/master/mod0-baseline"&gt;Module 0 repo folder&lt;/a&gt;. &lt;/p&gt;&lt;center&gt;&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/fLJa1AuyFXQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;/center&gt;&lt;h2&gt;Next steps&lt;/h2&gt;  &lt;p&gt;Each migration learning module covers one modernization technique. A video outlines the migration while the codelab leads developers through it. Developers will always get a starting codebase ("START") and learn how to do a specific migration, resulting in a completed codebase ("FINISH"). Developers can hit the reset button (back to START) if something goes wrong or compare their solutions to ours (FINISH). The hands-on experience helps users build muscle-memory for when they're ready to do their &lt;em&gt;own&lt;/em&gt; migrations. &lt;/p&gt;&lt;p&gt;All of the migration learning modules, corresponding Serverless Migration Station videos (when published), codelab tutorials, START and FINISH code, etc., can all be found in the &lt;a href="https://github.com/googlecodelabs/migrate-python2-appengine"&gt;migration repo&lt;/a&gt;. While there's an initial focus on Python 2 and App Engine, you'll also find content for Python 3 users as well as non-App Engine users. We're looking into similar content for other legacy languages as well so stay tuned. We hope you find all these resources helpful in your quest to modernize your serverless apps! &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/NPnfH2nxidk" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/2357369447388822060/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/06/introducing-serverless-migration.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2357369447388822060" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2357369447388822060" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/NPnfH2nxidk/introducing-serverless-migration.html" title="Introducing &quot;Serverless Migration Station&quot; Learning Modules" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-c8Q-0pZoU60/YNEW2hDqaeI/AAAAAAAAKWw/e6O_rtp9qycJdXwzdmjvk-T-Bh37-nZlwCLcBGAsYHQ/s72-c/%255BGD%2BBLOG%255D%2BIntroducing%2B%2522Serverless%2BMigration%2BStation%2522%2Bvideo%2Bseries.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/06/introducing-serverless-migration.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-1958254850273140562</id><published>2021-06-22T09:00:00.000-07:00</published><updated>2021-06-22T09:03:35.444-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="google pay" /><title type="text"> Google Pay plugin for Magento 2</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-F70PrsJGozM/Xwig3KSuyZI/AAAAAAAAJIk/5k0HKHhgLicHgjHjPjq0s0bTGH4p5542QCLcBGAsYHQ/s1600/Magento_Blog_v3.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-F70PrsJGozM/Xwig3KSuyZI/AAAAAAAAJIk/5k0HKHhgLicHgjHjPjq0s0bTGH4p5542QCLcBGAsYHQ/s1600/Magento_Blog_v3.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Soc Sieng, Developer Advocate&lt;/em&gt;&lt;p&gt;&lt;a href="https://1.bp.blogspot.com/-F70PrsJGozM/Xwig3KSuyZI/AAAAAAAAJIk/5k0HKHhgLicHgjHjPjq0s0bTGH4p5542QCLcBGAsYHQ/s1600/Magento_Blog_v3.png" imageanchor="1" &gt;&lt;img border="0" src="https://1.bp.blogspot.com/-F70PrsJGozM/Xwig3KSuyZI/AAAAAAAAJIk/5k0HKHhgLicHgjHjPjq0s0bTGH4p5542QCLcBGAsYHQ/s1600/Magento_Blog_v3.png" data-original-width="1600" data-original-height="604" /&gt;&lt;/a&gt;&lt;h2&gt;Google Pay plugin for Magento 2&lt;/h2&gt;&lt;p&gt;&lt;i&gt;Update June 15, 2021:  The Google Pay extension v1.1.1 for Magento now supports the Cybersource payment gateway allowing merchants who prefer Cybersource to easily integrate Google Pay into their checkout flow.&lt;/p&gt; &lt;p&gt;Other key updates include support for Magento 2.4 as well as Magento 2.3. Easy to download and install without any coding, Google Pay for Magento provides fast, frictionless checkout and allows consumers to use already-stored payment credentials. This reduces data entry errors and translates to higher conversion rates and larger average order size for merchants.&lt;/i&gt;&lt;/p&gt; &lt;p&gt;We are pleased to announce the launch of the official &lt;a href="https://goo.gle/GooglePay-Magento-Plugin"&gt;Google Pay plugin for Magento 2&lt;/a&gt;. The Google Pay plugin can help increase conversions by enabling a simpler and more secure checkout experience in your Magento website. When you integrate with Google Pay, your customers can complete their purchases quickly using the payment methods they’ve securely saved to their Google Accounts. &lt;/p&gt;&lt;a href="https://3.bp.blogspot.com/-mGBIzJGr80I/Xwij1a7Q_TI/AAAAAAAAJIw/b2wfKV_daPAi6vSTQn7htUVHtsBUF3KSACLcBGAsYHQ/s1600/Magento%2BPlugin%2BPurchase.gif" imageanchor="1" &gt;&lt;img border="0" src="https://3.bp.blogspot.com/-mGBIzJGr80I/Xwij1a7Q_TI/AAAAAAAAJIw/b2wfKV_daPAi6vSTQn7htUVHtsBUF3KSACLcBGAsYHQ/s1600/Magento%2BPlugin%2BPurchase.gif" data-original-width="1296" data-original-height="810" /&gt;&lt;/a&gt;&lt;p id="imgCaption"&gt;Google Pay in action.&lt;/p&gt;&lt;p&gt;The Google Pay plugin is built in collaboration with Unbound Commerce, is free to use, and integrates with popular payment service providers including Adyen, BlueSnap, Braintree, FirstData - Payeezy &amp; Ucom, Moneris, Stripe, and Vantiv. &lt;/p&gt;&lt;h2&gt;Installation&lt;/h2&gt;&lt;p&gt;The Google Pay plugin can be installed from the &lt;a href="https://marketplace.magento.com/extensions.html"&gt;Magento Marketplace&lt;/a&gt; using this &lt;a href="https://goo.gle/GooglePay-Magento-Plugin"&gt;link&lt;/a&gt; or by searching the Magento Marketplace for “Google Pay”. &lt;/p&gt;&lt;p&gt;Refer to the &lt;a href="https://docs.magento.com/m2/ee/user_guide/magento/magento-marketplace.html"&gt;Magento Marketplace User Guide&lt;/a&gt; for more installation instructions. &lt;/p&gt;&lt;h2&gt;Getting started&lt;/h2&gt;&lt;p&gt;To get started with the Google Pay plugin, you will need your Google Pay merchant identifier which can be found in the &lt;a href="https://pay.google.com/business/console?utm_source=google_dev_blog&amp;utm_medium=article&amp;utm_campaign=business_console_launch"&gt;Google Pay Business Console&lt;/a&gt;. &lt;/p&gt;&lt;a href="https://3.bp.blogspot.com/-74ycnoEHrLM/XwilrXz4GZI/AAAAAAAAJJA/3VvOwLVmtl88N15KEb6kOBw7u1ftDQMqQCLcBGAsYHQ/s1600/Integrations%2Bscreen%2B%25E2%2580%2593%2Bmerchant%2Bid%2Bcut%2B1.jpg" imageanchor="1" &gt;&lt;img border="0" src="https://3.bp.blogspot.com/-74ycnoEHrLM/XwilrXz4GZI/AAAAAAAAJJA/3VvOwLVmtl88N15KEb6kOBw7u1ftDQMqQCLcBGAsYHQ/s1600/Integrations%2Bscreen%2B%25E2%2580%2593%2Bmerchant%2Bid%2Bcut%2B1.jpg" data-original-width="1440" data-original-height="1024" /&gt;&lt;/a&gt;&lt;p id="imgCaption"&gt;Your Merchant ID can be found in the Google Pay Business Console.&lt;/p&gt;&lt;h2&gt;Configuring the Google Pay plugin&lt;/h2&gt;&lt;p&gt;Once installed, you can configure the plugin in your site’s Magento administration console by navigating to Stores &gt; Configuration &gt; Sales &gt; Payment Methods and selecting the Configure button next to Google Pay.&lt;/p&gt;&lt;a href="https://4.bp.blogspot.com/-R381iSQqttk/Xwil6Cz6ZSI/AAAAAAAAJJE/U3dxIKunrUkN4PTt3VjurpzOQQNlNv44ACLcBGAsYHQ/s1600/configuration.png" imageanchor="1" &gt;&lt;img border="0" src="https://4.bp.blogspot.com/-R381iSQqttk/Xwil6Cz6ZSI/AAAAAAAAJJE/U3dxIKunrUkN4PTt3VjurpzOQQNlNv44ACLcBGAsYHQ/s1600/configuration.png" data-original-width="610" data-original-height="407" /&gt;&lt;/a&gt;&lt;p id="imgCaption"&gt;Click on the Configure button to start the setup process.&lt;/p&gt;&lt;p&gt;Testing out Google Pay can be achieved in three easy steps: &lt;/p&gt;&lt;ol&gt; &lt;li&gt;Google Pay credentials: enter your Google Pay merchant ID (available from the &lt;a href="https://pay.google.com/business/console?utm_source=google_dev_blog&amp;utm_medium=article&amp;utm_campaign=business_console_launch"&gt;Google Pay Business Console&lt;/a&gt;) and merchant name.  &lt;li&gt;Payment gateway credentials: select your payment gateway from the list of payment gateways supported by the Google Pay plugin.  &lt;ol&gt;  &lt;li&gt;Choose the Sandbox environment for testing purposes.   &lt;li&gt;Enter your payment gateway’s credentials into their respective form fields. &lt;/li&gt;  &lt;/ol&gt; &lt;li&gt;Google Pay settings: enable Google Pay and choose the card networks that you would like to accept. &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;You can optionally try out some of the advanced settings that provide the ability to customize the color and type of Google Pay button as well as enabling Minicart integration, which is recommended. &lt;/p&gt;&lt;a href="https://2.bp.blogspot.com/-4G8Q58yVO1I/XwzNWq9BteI/AAAAAAAAJJw/0RlkTxbNqyQ_tIvEaBd2aPttYvh7M7rygCLcBGAsYHQ/s1600/advancedsettings.png" imageanchor="1" &gt;&lt;img border="0" src="https://2.bp.blogspot.com/-4G8Q58yVO1I/XwzNWq9BteI/AAAAAAAAJJw/0RlkTxbNqyQ_tIvEaBd2aPttYvh7M7rygCLcBGAsYHQ/s1600/advancedsettings.png" data-original-width="1600" data-original-height="1118" /&gt;&lt;/a&gt;&lt;p id="imgCaption"&gt;Checkout the Advanced Settings to further customize how and where the Google Pay button is presented in your store.&lt;/p&gt;&lt;p&gt;If your payment provider isn’t listed as an option in the payment gateway list, check to see if your payment provider’s plugin has built-in support for Google Pay.&lt;/p&gt;&lt;h2&gt;Launching Google Pay for your website&lt;/h2&gt;&lt;p&gt;When you’ve completed your testing, submit your website integration in the &lt;a href="https://pay.google.com/business/console?utm_source=google_dev_blog&amp;utm_medium=article&amp;utm_campaign=business_console_launch"&gt;Google Pay Business Console&lt;/a&gt;. You will need to provide your website’s URL and screenshots to complete the submission. &lt;/p&gt;&lt;h2&gt;Summing it up&lt;/h2&gt;&lt;p&gt;Integrating Google Pay into your website is a great way to increase conversions and to improve the purchasing experience for your customers. &lt;/p&gt;&lt;p&gt;Find out more about &lt;a href="https://pay.google.com/about/business/"&gt;Google Pay&lt;/a&gt; and the &lt;a href="https://goo.gle/GooglePay-Magento-Plugin"&gt;Google Pay plugin for Magento&lt;/a&gt;. &lt;/p&gt;&lt;h3&gt;What do you think?&lt;/h3&gt;&lt;p&gt;Do you have any questions? Let us know in the comments below or tweet using &lt;b&gt;#AskGooglePayDev&lt;/b&gt;. &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/Fyi8O7iMfE4" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/1958254850273140562/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/07/google-pay-plugin-for-magento-2.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/1958254850273140562" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/1958254850273140562" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/Fyi8O7iMfE4/google-pay-plugin-for-magento-2.html" title=" Google Pay plugin for Magento 2" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-F70PrsJGozM/Xwig3KSuyZI/AAAAAAAAJIk/5k0HKHhgLicHgjHjPjq0s0bTGH4p5542QCLcBGAsYHQ/s72-c/Magento_Blog_v3.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/07/google-pay-plugin-for-magento-2.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-4998420895465994082</id><published>2021-06-17T10:00:00.001-07:00</published><updated>2021-06-17T10:03:31.967-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Google Workspace" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Workspace Chat" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Workspace Chatbots" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Workspace Developer" /><title type="text">Add dialogs and slash commands to your Google Workspace Chat bots</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-ewiaKUds1YI/YMuALXUyrsI/AAAAAAAAKUo/3AOhtmbYj-U3rdJ8XB0ha6G5F4zQ3PbnQCLcBGAsYHQ/s0/slashbot.jpeg"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-ewiaKUds1YI/YMuALXUyrsI/AAAAAAAAKUo/3AOhtmbYj-U3rdJ8XB0ha6G5F4zQ3PbnQCLcBGAsYHQ/s0/slashbot.jpeg"&gt; &lt;p&gt;&lt;em&gt;Posted by Charles Maxson, Developer Advocate&lt;/em&gt;&lt;/p&gt;&lt;br/&gt; &lt;p&gt;Developing your own custom &lt;a href="https://developers.google.com/hangouts/chat"&gt;Google Chat bot&lt;/a&gt; is a great way for users and teams to interact with your solutions and services both directly and within context as they collaborate in Chat. More specifically, Chat bots can be used in group conversations to streamline workflows, assist with activities in the context of discussions, and provide information and notifications in real time. Chat bots can also be used in direct messages, offering a new way to optimize workflows and personal productivity, such as managing project tasks or reporting time activity. Because &lt;a href="https://chat.google.com/botcatalog/summary"&gt;use cases for bots&lt;/a&gt; are varied,  you can consistently reach a growing audience of Chat users over time, directly where they work and uh-hum, chat. &lt;/p&gt;&lt;p&gt;Once you’ve identified your specific use case for your custom Chat bot, how you design the bot itself is super important. Bots that are intuitive and easy to use see better adoption and develop a more loyal following. Those that are not as fluid or approachable, or  come across as confusing and complicated to use, will likely miss the mark of becoming an essential “sticky” tool even if your back end is compelling. To help you build an engaging, must-have Google Chat bot, we recently added a one-two feature punch to the &lt;a href="https://developers.google.com/hangouts/chat/concepts"&gt;Chat bot framework&lt;/a&gt; that allows you to build a much richer bot experience than ever before!  &lt;/p&gt;&lt;h2&gt;(Re)Introducing slash commands for Google Chat bots&lt;/h2&gt;  &lt;p&gt;The first new(er) feature that you can leverage to enhance the usability of your Chat bots are &lt;a href="https://developers.google.com/hangouts/chat/how-tos/slash-commands"&gt;slash commands&lt;/a&gt;. Released a few months back, slash commands simplify the way users interact with your Chat bot, offering them a visual leading way to discover and execute your bot’s primary features. Unlike bots created prior to slash commands, where users had to learn what features a bot offered and then invoke the bot and type the command correctly to execute them, slash commands make Chat bot usage faster and help users get the most out of your bot.  &lt;/p&gt;&lt;p&gt;Users can now simply type “/” in the message line to reveal a list of all the functions offered by the bots available to the room or direct message, and select the one to their liking to execute it. Slash commands can be invoked standalone (e.g. /help) or include user added text as parameters (e.g. /new_task review project doc ) that the developer can handle when invoked. To help make bot command discovery even simpler, the slash commands list filters matching commands once the user starts typing beyond the / (e.g. “/h” shows all commands beginning with H). This is super helpful as more and more bots are added to a room, and as more bots with slash commands are introduced by developers. Also included directly in the Slash Command UI is a description of what each command does (up to 50 characters), easing the guesswork out of learning. &lt;/p&gt; &lt;center&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-Sn6j_TosyR8/YMpwNcjcFxI/AAAAAAAAKUI/6toN9QTudjcyad6nAPUx6tu9aiEjW3fLACLcBGAsYHQ/s0/slashbot.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:50%" alt="Example of implementing slashbot in Google Chat" border="0" data-original-height="316" data-original-width="376" src="https://1.bp.blogspot.com/-Sn6j_TosyR8/YMpwNcjcFxI/AAAAAAAAKUI/6toN9QTudjcyad6nAPUx6tu9aiEjW3fLACLcBGAsYHQ/s0/slashbot.png"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/center&gt; &lt;p&gt;As a developer, slash commands are straightforward to implement, and daresay essential in offering a better bot experience. In fact, if you have an existing Google Chat bot you’ve built and deployed, it’s likely more than worthwhile to revise your bot to include slash commands in an updated release. &lt;/p&gt;&lt;p&gt;To add slash commands to any Chat bot, you will need to register your commands in the Hangouts Chat API configuration page. (e.g. &lt;a href="https://console.cloud.google.com/apis/api/chat.googleapis.com/hangouts-chat?project="&gt;https://console.cloud.google.com/apis/api/chat.googleapis.com/hangouts-chat?project=&lt;/a&gt;&amp;lt;?yourprojectname?&gt;) There is a section for slash commands that allows you to provide the /name and the description the user will see, along with the important Command Id unique identifier (a number between 1-1000) that you will later need to handle these events in your code. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-MYVR9tQo838/YMpwwNG8V5I/AAAAAAAAKUQ/qjCGsl6ftdImiUFOYV3FbXtijEju8AmeACLcBGAsYHQ/s0/slashbot%2B2.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Example of editing slash command" border="0" data-original-height="757" data-original-width="805" src="https://1.bp.blogspot.com/-MYVR9tQo838/YMpwwNG8V5I/AAAAAAAAKUQ/qjCGsl6ftdImiUFOYV3FbXtijEju8AmeACLcBGAsYHQ/s0/slashbot%2B2.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;When a user invokes your bot via a Slash Command, there is a &lt;code&gt;slashCommand&lt;/code&gt; field attached to the message sent to the bot that indicates the call was initiated from a Slash Command. Remember users can still @mention your bot to call it directly by name without a / command and this helps you distinguish the difference. The message also includes the corresponding &lt;code&gt;commandId&lt;/code&gt; for the invoked command based on what you set up in the bot configuration page, allowing you to identify the user’s requested command to execute. Finally, the message also offers additional annotations about the event and includes any &lt;code&gt;argumentText&lt;/code&gt; supplied by the user already parsed from the command text itself.  &lt;/p&gt; &lt;pre&gt;&lt;code&gt;{&lt;br /&gt;  ...&lt;br /&gt;  "message": {&lt;br /&gt;    "slashCommand": {&lt;br /&gt;      "commandId": 4&lt;br /&gt;    },&lt;br /&gt;    "annotations": [&lt;br /&gt;      {&lt;br /&gt;        "length": 6,&lt;br /&gt;        "slashCommand": {&lt;br /&gt;          "type": "INVOKE",&lt;br /&gt;          "commandId": 4,&lt;br /&gt;          "bot": {&lt;br /&gt;            "type": "BOT",&lt;br /&gt;            "displayName": "Slashbot"&lt;br /&gt;          },&lt;br /&gt;          "commandName": "/debug"&lt;br /&gt;        },&lt;br /&gt;        "type": "SLASH_COMMAND"&lt;br /&gt;      }&lt;br /&gt;    ],&lt;br /&gt;    ...&lt;br /&gt;    "argumentText": " show code",&lt;br /&gt;    "text": "/debug show code",&lt;br /&gt;    ...&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;Here is a simple example used to determine if a Slash Command was invoked by the user, and if so, runs the requested command identified by its Command Id.&lt;/p&gt;  &lt;pre&gt;&lt;code&gt;function onMessage(event) {&lt;br /&gt;&lt;br /&gt;  if (event.message.slashCommand) {&lt;br /&gt;&lt;br /&gt;    switch (event.message.slashCommand.commandId) {&lt;br /&gt;      case 1: // Command Id 1&lt;br /&gt;        return { 'text': 'You called commandId 1' }&lt;br /&gt;&lt;br /&gt;      case 2: // Command Id 2&lt;br /&gt;        return { 'text': 'You called commandId 2' }&lt;br /&gt;&lt;br /&gt;      case 3: // Help&lt;br /&gt;        return { 'text': 'You asked for help'  }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt; &lt;h2&gt;Introducing dialogs for Google Chat bots&lt;/h2&gt;  &lt;p&gt;The second part of the one-two punch of new Google Chat bots features are &lt;a href="https://developers.google.com/chat/how-tos/bot-dialogs"&gt;dialogs&lt;/a&gt;. This is a brand new capability being introduced to the Chat bot framework that allows developers to build user interfaces to capture inputs and parameters in a structured, reliable way. This is a tremendous step forward for bot usability because it will simplify and streamline the process of users interacting with bot commands. Now with dialogs, users can be led visually to supply inputs via prompts, versus having to rely on wrapping bot commands with natural language inputs -- and hoping they correctly executed syntax the bot could decipher.   &lt;/p&gt;&lt;p&gt;For developers, you can design UIs that are targeted to work precisely with the inputs you need users to supply your commands, without having to parse out arguments and logically infer the intent of users. In the end, dialogs will greatly expand the type of solution patterns and use cases that Chat bots can handle, as well as making the experience truly richer and more rewarding for users and developers alike.   &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-NEpZA1un-0k/YMpxVriVMiI/AAAAAAAAKUY/73sVlePSjcARlIMfvXr2qQKke7-DqpwsgCLcBGAsYHQ/s0/slashbot%2B3.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Slashbot project notifier" border="0" data-original-height="519" data-original-width="646" src="https://1.bp.blogspot.com/-NEpZA1un-0k/YMpxVriVMiI/AAAAAAAAKUY/73sVlePSjcARlIMfvXr2qQKke7-DqpwsgCLcBGAsYHQ/s0/slashbot%2B3.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Technically, Chat bot dialogs leverage the aforementioned slash commands combined with the existing Google Workspace Add-on Card&lt;a href="https://developers.google.com/workspace/add-ons/concepts/card-interfaces"&gt; framework&lt;/a&gt; to support the creation and handling of dialogs. To get started, you create a Slash Command that will invoke your dialog by designating it’s &lt;strong&gt;Slash command triggers a dialog&lt;/strong&gt; setting to true in the Slash Command configuration process, as seen below: &lt;/p&gt; &lt;center&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-Dm9gSfKGCiU/YMpxpp6A9YI/AAAAAAAAKUg/fxVFbdE99-U3bNr27lA5hyldkD9l7ipyQCLcBGAsYHQ/s0/slash%2Bcommands.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:50%" alt="Example of enabling the slash command triggers a dialog setting" border="0" data-original-height="468" data-original-width="543" src="https://1.bp.blogspot.com/-Dm9gSfKGCiU/YMpxpp6A9YI/AAAAAAAAKUg/fxVFbdE99-U3bNr27lA5hyldkD9l7ipyQCLcBGAsYHQ/s0/slash%2Bcommands.png"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/center&gt; &lt;p&gt;Once you have configured a Slash Command to trigger a dialog, it will send an onMessage event when it’s invoked as it would before, but now it includes new details that indicate it is representing a dialog request. To handle this event you can use the example above with non-dialog Slash Command, using the &lt;code&gt;commandId&lt;/code&gt; you can use a &lt;code&gt;switch&lt;/code&gt; to determine what the user requested.  &lt;/p&gt;&lt;p&gt;Designing the actual elements that the dialog renders is where you draw from the &lt;a href="https://developers.google.com/workspace/add-ons/concepts/types"&gt;Google Workspace Add-on&lt;/a&gt; &lt;a href="https://developers.google.com/workspace/add-ons/concepts/card-interfaces"&gt;Card-based &lt;/a&gt;framework. If you’ve built a new generation of Google Workspace Add-on, this part will be familiar where you construct widgets, add headers and sections, create events, etc. In fact, you can even reuse or share some of your Add-on UIs within your Chat bots, but do note there currently is a lighter subset of elements available for bots.  The benefits of using Cards allows you to build modern, consistently-styled user interfaces for your bots that doesn’t require that you get bogged down in low level details like managing tags or CSS. You can learn more about &lt;a href="https://developers.google.com/workspace/add-ons/concepts/cards"&gt;working with Cards starting here&lt;/a&gt;. To make building your Cards-based interfaces for Add-ons and Chat bots even easier, we have also just introduced the &lt;a href="https://gw-card-builder.web.app"&gt;GWAO Card Builder&lt;/a&gt; tool, which employs a drag-n-drop visual designer to boost your development efforts. &lt;/p&gt;&lt;p&gt;Once you’ve assembled your Card’s widgets, to make it render as a dialog when invoked you must specify that its a DIALOG type within the action_response as seen stubbed out here below:  &lt;/p&gt; &lt;pre&gt;&lt;code&gt;{&lt;br /&gt;  "action_response": {&lt;br /&gt;  "type": "DIALOG",&lt;br /&gt;  "dialog_action": {&lt;br /&gt;    "dialog": {&lt;br /&gt;      "body": {&lt;br /&gt;        "sections": [&lt;br /&gt;          {&lt;br /&gt;           "widgets": [&lt;br /&gt;             {&lt;br /&gt;               "textInput": {&lt;br /&gt;                 "label": "Email",&lt;br /&gt;                 "type": "SINGLE_LINE",&lt;br /&gt;                 "name": "fieldEmail",&lt;br /&gt;                 "hintText": "Add others using a comma separator",&lt;br /&gt;...&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;Now with a working dialog, all there is left to do is handle user events once it's displayed. Again this is similar to how you would handle events working with Cards within Add-ons. Your bot will receive an event that is type CARD_CLICKED with a DialogEventType set to SUBMIT_DIALOG.  The  &lt;code&gt;actionMethodName &lt;/code&gt;value will let you know what element the user clicked to process the request, e.g. ‘assign’ as depicted below. The response includes the &lt;code&gt;formInputs&lt;/code&gt; details which are the user provided inputs returned from the dialog, which you can process as your solution needs to. &lt;/p&gt; &lt;pre&gt;&lt;code&gt;{ dialogEventType: 'SUBMIT_DIALOG',&lt;br /&gt;  type: 'CARD_CLICKED',&lt;br /&gt;  action: { actionMethodName: 'assign' },&lt;br /&gt;  ...&lt;br /&gt;  common: &lt;br /&gt;   { hostApp: 'CHAT',&lt;br /&gt;     formInputs: &lt;br /&gt;      { 'whotochoose-dropdown': [Object],&lt;br /&gt;        whotochoose: [Object],&lt;br /&gt;        email: [Object] },&lt;br /&gt;     invokedFunction: 'assign' },&lt;br /&gt;  isDialogEvent: true }&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;Once your bot is finished processing its task, it can respond back to the user in one of two ways. The first is with a simple acknowledgement (aka OK) response letting them know their action was handled correctly and close out the dialog.&lt;/p&gt; &lt;pre&gt;&lt;code&gt;{&lt;br /&gt;    "action_response": {&lt;br /&gt;      "type": "DIALOG",&lt;br /&gt;      "dialog_action": {&lt;br /&gt;        "action_status": "OK",&lt;br /&gt;...&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;The other option is to respond with another dialog, allowing you to follow-up with a new or revised dialog useful for complex or conditional input scenarios. This is accomplished as it was originally when you called a dialog using a dialog card within an ActionResponse to get started.&lt;/p&gt; &lt;pre&gt;&lt;code&gt;{&lt;br /&gt;  "action_response": {&lt;br /&gt;  "type": "DIALOG",&lt;br /&gt;  "dialog_action": {&lt;br /&gt;    "dialog": {&lt;br /&gt;...&lt;/code&gt;&lt;/pre&gt; &lt;h2&gt;Next Steps&lt;/h2&gt;  &lt;p&gt;To get started building Google Workspace Chat bots, or to add slash commands and dialogs to your existing Chat bots, please explore the following resources: &lt;/p&gt;&lt;ul&gt; &lt;li&gt;&lt;a href="https://developers.google.com/hangouts/chat/concepts"&gt;Google Chat API&lt;/a&gt; &lt;li&gt;&lt;a href="https://developers.google.com/workspace/add-ons/concepts/card-interfaces"&gt;Card-based interfaces&lt;/a&gt; &lt;li&gt;&lt;a href="https://developers.google.com/hangouts/chat/how-tos/cards-onclick"&gt;Creating interactive cards&lt;/a&gt; &lt;li&gt;&lt;a href="https://gw-card-builder.web.app"&gt;GWAO Card Builder&lt;/a&gt; &lt;li&gt;&lt;a href="https://developers.google.com/hangouts/chat/how-tos/slash-commands"&gt;Developing slash commands &lt;/a&gt; &lt;li&gt;&lt;a href="https://developers.google.com/chat/how-tos/bot-dialogs"&gt;Using dialogs in bots&lt;/a&gt; &lt;li&gt;&lt;a href="https://docs.google.com/forms/d/12Zf_dZiPk0LaVm_dnTRdLLLLumJeIu0RY2wxw0qiGRg"&gt;Sign up for the Developer Newsletter&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/WEp4WfKnRQI" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/4998420895465994082/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/06/add-dialogs-and-slash-commands-to-your-google-workspace-chat-bots.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/4998420895465994082" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/4998420895465994082" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/WEp4WfKnRQI/add-dialogs-and-slash-commands-to-your-google-workspace-chat-bots.html" title="Add dialogs and slash commands to your Google Workspace Chat bots" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-ewiaKUds1YI/YMuALXUyrsI/AAAAAAAAKUo/3AOhtmbYj-U3rdJ8XB0ha6G5F4zQ3PbnQCLcBGAsYHQ/s72-c/slashbot.jpeg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/06/add-dialogs-and-slash-commands-to-your-google-workspace-chat-bots.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-1324820406785792574</id><published>2021-06-14T10:00:00.003-07:00</published><updated>2021-06-17T12:01:03.713-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="encryption" /><category scheme="http://www.blogger.com/atom/ns#" term="privacy" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><title type="text">Our latest updates on Fully Homomorphic Encryption</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-fXo8vS5pO_o/YMeII9_ahsI/AAAAAAAAKT0/UbNysPNJWQ0R51kY95U0EjuvktLV3VeoACLcBGAsYHQ/s0/Screen%2BShot%2B2021-06-14%2Bat%2B9.26.09%2BAM.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-fXo8vS5pO_o/YMeII9_ahsI/AAAAAAAAKT0/UbNysPNJWQ0R51kY95U0EjuvktLV3VeoACLcBGAsYHQ/s0/Screen%2BShot%2B2021-06-14%2Bat%2B9.26.09%2BAM.png"&gt; &lt;p&gt;&lt;em&gt;Posted by &lt;a href="https://twitter.com/miguelguevaraII"&gt;Miguel Guevara&lt;/a&gt;, Product Manager, Privacy and Data Protection Office.&lt;/em&gt;&lt;p&gt;   &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-fXo8vS5pO_o/YMeII9_ahsI/AAAAAAAAKT0/UbNysPNJWQ0R51kY95U0EjuvktLV3VeoACLcBGAsYHQ/s0/Screen%2BShot%2B2021-06-14%2Bat%2B9.26.09%2BAM.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Privacy protection illustration" border="0" data-original-height="538" data-original-width="946" src="https://1.bp.blogspot.com/-fXo8vS5pO_o/YMeII9_ahsI/AAAAAAAAKT0/UbNysPNJWQ0R51kY95U0EjuvktLV3VeoACLcBGAsYHQ/s0/Screen%2BShot%2B2021-06-14%2Bat%2B9.26.09%2BAM.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;As developers, it’s our responsibility to help keep our users safe online and protect their data. This starts with building products that are secure by default, private by design, and put users in control. Everything we make at Google is underpinned by these principles, and we’re proud to be an industry leader  in developing, deploying, and scaling new privacy-preserving technologies that make it possible to learn valuable insights and create helpful experiences while protecting our users’ privacy.  &lt;/p&gt;&lt;p&gt;That’s why today, we are excited to announce that we’re &lt;a href="https://github.com/google/fully-homomorphic-encryption"&gt;open-sourcing&lt;/a&gt; a first-of-its-kind, general-purpose transpiler for Fully Homomorphic Encryption (FHE), which will &lt;a href="https://github.com/google/fully-homomorphic-encryption/blob/main/transpiler/docs/whitepaper.pdf"&gt;enable&lt;/a&gt; developers to compute on encrypted data without being able to access any personally identifiable information.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;A deeper look at the technology&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;With FHE, encrypted data can travel across the Internet to a server, where it can be processed without being decrypted. Google’s transpiler will enable developers to write code for any type of basic computation such as simple string processing or math, and run it on encrypted data. The transpiler will transform that code into a version that can run on encrypted data. This then allows developers to create new programming applications that don’t need unencrypted data. FHE can also be used to train machine learning models on sensitive data in a private manner.  &lt;/p&gt;&lt;p&gt;For example, imagine you’re building an application for people with diabetes. This app might collect sensitive information from its users, and you need a way to keep this data private and protected while also sharing it with medical experts to learn valuable insights that could lead to important medical advancements. With Google’s transpiler for FHE, you can encrypt the data you collect and share it with medical experts who, in turn, can analyze the data&lt;em&gt; without decrypting it - &lt;/em&gt;providing helpful information to the medical community, all while ensuring that no one can access the data’s underlying information. &lt;/p&gt;&lt;p&gt;In the next 10 years, FHE could even help researchers find associations between specific gene mutations by analyzing genetic information across thousands of encrypted samples and testing different hypotheses to identify the genes most strongly associated with the diseases they’re studying.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Making more products private by design&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Our principle to make our products private by design drives us to build ground-breaking computing technologies that enable personalized experiences while protecting your private information.  Privacy-preserving technologies are on the cutting-edge of Google’s innovations, and they have already shown great potential to help shape a more private internet.  &lt;/p&gt;&lt;p&gt;In 2016, Google researchers invented &lt;a href="https://ai.googleblog.com/2017/04/federated-learning-collaborative.html"&gt;Federated Learning&lt;/a&gt;, a technique that helps preserve privacy by keeping as much personal information on your device as possible. And in 2019, Google made its &lt;a href="https://developers.googleblog.com/2019/09/enabling-developers-and-organizations.html"&gt;differential privacy library&lt;/a&gt; freely available to any organization or developer, an advanced anonymization technology that enables developers to learn from their data privately. No one has scaled the use of Differential Privacy more than we have.  &lt;/p&gt;&lt;p&gt;We’ve been thrilled to see these technologies put to use across the globe; in France, for example, a startup called Arkhn has been able to accelerate scientific discovery using differential privacy to &lt;a href="https://services.google.com/fh/files/misc/arkhn-case-study.pdf"&gt;share data across hospitals&lt;/a&gt;.  &lt;/p&gt;&lt;p&gt;We still have a ways to go before most computations happen with FHE -- but much as it took some time for HTTPS to take off and be widely adopted, today’s announcement is an important step towards bringing users helpful products that preserve their privacy and keep their data safe.  &lt;/p&gt;&lt;p&gt;At Google, we know that open-sourcing our technologies with the developer community for feedback and use helps make them better. We will continue to invest and lead the privacy-preserving technology field by publishing new work, and open-sourcing it for everyone to use at scale - and we're excited to continue this practice by sharing this latest advancement with developers everywhere. We can't wait to see what you’ll build, and we look forward to collaborating on the journey towards a safer Internet. &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/9T13AYszQNQ" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/1324820406785792574/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/06/our-latest-updates-on-fully-homomorphic-encryption.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/1324820406785792574" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/1324820406785792574" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/9T13AYszQNQ/our-latest-updates-on-fully-homomorphic-encryption.html" title="Our latest updates on Fully Homomorphic Encryption" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-fXo8vS5pO_o/YMeII9_ahsI/AAAAAAAAKT0/UbNysPNJWQ0R51kY95U0EjuvktLV3VeoACLcBGAsYHQ/s72-c/Screen%2BShot%2B2021-06-14%2Bat%2B9.26.09%2BAM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/06/our-latest-updates-on-fully-homomorphic-encryption.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-5974028395514780561</id><published>2021-06-10T10:05:00.001-07:00</published><updated>2021-06-10T10:16:04.024-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Angular" /><category scheme="http://www.blogger.com/atom/ns#" term="GDE" /><category scheme="http://www.blogger.com/atom/ns#" term="maps" /><category scheme="http://www.blogger.com/atom/ns#" term="web" /><title type="text">#IamaGDE: Josue Gutierrez</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-SK-gBEuoX1Y/YL6PR36LAwI/AAAAAAAAKTY/Str-EgRdRwkXU4m1Ou87psCqDgLKp1PYQCLcBGAsYHQ/s0/1.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-SK-gBEuoX1Y/YL6PR36LAwI/AAAAAAAAKTY/Str-EgRdRwkXU4m1Ou87psCqDgLKp1PYQCLcBGAsYHQ/s0/1.png"&gt; &lt;em&gt;Posted by Alicja Heisig &lt;/em&gt; &lt;p&gt;#IamaGDE series presents: Google Maps &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;a href="https://developers.google.com/community/experts"&gt;The Google Developers Experts program&lt;/a&gt; is a global &lt;/em&gt;&lt;/strong&gt;network of highly experienced technology experts, influencers, and thought leaders who actively support developers, companies, and tech communities by speaking at events and publishing content. &lt;/p&gt;&lt;p&gt;Meet Josue Gutierrez — Maps, Web, Identity and Angular Google Developer Expert. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Josue currently works at the German company Boehringer Ingelheim and lives near Frankfurt. Before moving to Germany, Josue was working as a software engineer in Mexico, and before that, he spent almost a year in San Francisco as a senior front-end developer at Sutter Health.&lt;/strong&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-SK-gBEuoX1Y/YL6PR36LAwI/AAAAAAAAKTY/Str-EgRdRwkXU4m1Ou87psCqDgLKp1PYQCLcBGAsYHQ/s0/1.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:70%" alt="Image of Josue Gutierrez" border="0" data-original-height="1600" data-original-width="1501" src="https://1.bp.blogspot.com/-SK-gBEuoX1Y/YL6PR36LAwI/AAAAAAAAKTY/Str-EgRdRwkXU4m1Ou87psCqDgLKp1PYQCLcBGAsYHQ/s0/1.png"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;p id="imgCaption"&gt;&lt;a href="http://www.iamkaan.com/"&gt;Josue Gutierrez&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Josue studied computer science and engineering as an undergraduate and learned algorithms and programming. His first language was C++, and he learned C and Python, but was drawn to web technologies. &lt;/p&gt;&lt;p&gt; &lt;em&gt;“When I saw a web browser for the first time, it stuck with me,” he says, “It was changing in real time as you’re developing. That feeling is really cool. That’s why I went into frontend development.”&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Josue has worked on multiple ecommerce projects focused on improving customers’ trade experience. He sees his role as creating something from scratch to help people improve lives. &lt;/p&gt;&lt;p&gt; &lt;em&gt;“These opportunities we have as developers are great — to travel, work for many verticals, and learn many businesses,” he says. “In my previous job, I developed tech-oriented trade tools for research companies, to manipulate strings or formulas. I was on the team involved in writing these kinds of tools, so it was more about the trade experience for doctors.”&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Getting involved in the developer community&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Josue’s first trip outside Mexico, to San Francisco, exposed him to the many developer communities in the area, and he appreciated the supportive communities of people trying to learn together. Several of the people he met suggested he start his own meetup in Mexico City, to get more involved in Google technologies, so he launched an Angular community there. As he hunted for speakers to come to his Angular meetup, Josue found himself giving talks, too. &lt;/p&gt;&lt;p&gt;Then, the &lt;a href="https://www.meetup.com/topics/google-developer-group/mx/"&gt;GDG Mexico&lt;/a&gt; leader invited Josue to give talks on Google for startups. &lt;/p&gt;&lt;p&gt;“That helped me get involved in the ecosystem,” Josue says. “I met a lot of people, and now many of them are good friends. It’s really exciting because you get connected with people with the same interests as you, and you all learn together.” &lt;/p&gt;&lt;p&gt; &lt;em&gt;“I’m really happy to be part of the Google Maps ecosystem,” Josue says. “It’s super connected, with kind people, and now I know more colleagues in my area, who work for different companies and have different challenges. Seeing how they solve them is a good part of being connected to the product. I try to share my knowledge with other people and exchange points of view.”&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Josue says 2020 provided interesting opportunities. &lt;/p&gt;&lt;p&gt; &lt;em&gt;“This year was weird, but we also discovered more tools that are evolving with us, more functionalities in Hangouts and Meetup,” Josue says. “It’s interesting how people are curious to get connected. If I speak from Germany, I get comments from countries like Bolivia and Argentina. We are disconnected but increasing the number of people we engage with.”&lt;/em&gt;&lt;/p&gt;&lt;p&gt;He notes that the one missing piece is the face-to-face, spontaneous interactions of in-person workshops, but that there are still positives to video workshops. &lt;/p&gt;&lt;p&gt; &lt;em&gt;“I think as communities, we are always trying to get information to our members, and having videos is also cool for posterity,” he says.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;He is starting a Maps developer community in Germany. &lt;/p&gt;&lt;p&gt; &lt;em&gt;“I have colleagues interested in trying to get a community here with a solid foundation,” he says. “We hope we can engage people to get connected in the same place, if all goes well.”&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Favorite Maps features and current projects&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;As a frontend developer, Josue regards Google Maps Platform as an indispensable tool for brands, ecommerce companies, and even trucking companies. &lt;/p&gt;&lt;p&gt; &lt;em&gt;“Once you start learning how to plant coordinates inside a map, how to convert information and utilize it inside a map, it’s easy to implement,” he says.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;In 2021, Josue is working on some experiments with Maps, trying to make more real-time actualization, using currently available tools. &lt;/p&gt;&lt;p&gt; &lt;em&gt;“Many of the projects I’ve been working on aren’t connected with ecommerce,” he says. “Many customers want to see products inside a map, like trucking products. I’ve been working in directories, where you can see the places related to categories — like food in Mexico. You can use Google Maps functionalities and extend the diversification of maps and map whatever you want.”&lt;/em&gt;&lt;/p&gt;&lt;p&gt; &lt;em&gt;“Submission ID is really cool,” he adds. “You can do it reading the documentation, a key part of the product, with examples, references, and a live demo in the browser.”&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Future plans&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Josue says his goal going forward is to be as successful as he can at his current role. &lt;/p&gt;&lt;p&gt; &lt;em&gt;“Also, sharing is super important,” he says. “My company encourages developer communities. It’s important to work in a place that matches your interests.”&lt;/em&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-SK-gBEuoX1Y/YL6PR36LAwI/AAAAAAAAKTY/Str-EgRdRwkXU4m1Ou87psCqDgLKp1PYQCLcBGAsYHQ/s0/1.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:70%" alt="Image of Josue Gutierrez" border="0" data-original-height="1600" data-original-width="1501" src="https://1.bp.blogspot.com/-SK-gBEuoX1Y/YL6PR36LAwI/AAAAAAAAKTY/Str-EgRdRwkXU4m1Ou87psCqDgLKp1PYQCLcBGAsYHQ/s0/1.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;&lt;em&gt;Follow Josue on Twitter at &lt;a href="https://twitter.com/@eusoj"&gt;@eusoj&lt;/a&gt; |Check out &lt;a href="http://github.com/josueggh"&gt;Josue’s projects on GitHub&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;For more information on Google Maps Platform, &lt;a href="https://cloud.google.com/maps-platform/"&gt;visit our website&lt;/a&gt; or learn more about our &lt;a href="https://developers.google.com/community/experts"&gt;GDE program&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt; &lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/TQ33k_62590" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/5974028395514780561/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/06/iamagde-josue-gutierrez.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5974028395514780561" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5974028395514780561" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/TQ33k_62590/iamagde-josue-gutierrez.html" title="#IamaGDE: Josue Gutierrez" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-SK-gBEuoX1Y/YL6PR36LAwI/AAAAAAAAKTY/Str-EgRdRwkXU4m1Ou87psCqDgLKp1PYQCLcBGAsYHQ/s72-c/1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/06/iamagde-josue-gutierrez.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-4408399381179473073</id><published>2021-06-07T10:00:00.005-07:00</published><updated>2021-06-07T14:04:20.965-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Information Technology Residency Program" /><category scheme="http://www.blogger.com/atom/ns#" term="ITRP" /><title type="text">Starting your Google Career in IT | Kate Grant</title><content type="html">&lt;p&gt;&lt;em&gt;Posted by Max Saltonstall&lt;/em&gt;&lt;/p&gt; &lt;p&gt;A little over 10 years ago, we launched the IT Residency Program (ITRP) at Google with a twofold mission: to provide exceptional tech support for Googlers and to empower the next generation of IT pioneers.  &lt;/p&gt;&lt;p&gt;ITRP’s founding principle is learning and development. In addition to formal on-the-job IT support training, the program takes its residents through a focused career development path, including a hands-on rotation in a specific Google function in their chosen specialty. For their part, the residents, who come from a wide spectrum of often non-traditional backgrounds, bring with them a passion for learning. ITRP converts that passion into real-world experience and equips them for a lifelong career in tech. &lt;/p&gt;&lt;p&gt;Today, hundreds of Googlers are ITRP alums, working in disciplines ranging from site reliability engineering to security and privacy to program management and all points in between. Looking back on the program’s 10-plus years, we wanted to share some of their stories, their experiences and their triumphs. Look for more installments in this series in the weeks to come.  &lt;/p&gt;&lt;h2&gt;Kate Grant&lt;/h2&gt;  &lt;p&gt;While studying anthropology in college, Kate Grant had a part time help desk job, helping solve people's computer problems (and sometimes the computer's people problems). And it was through that job that she realized she really liked the satisfaction she got from helping people so directly. At school, Kate could help students, faculty and staff — both technical folks and non-technical, and it was great to save the day for them, teach them, and constantly learn about new technologies. &lt;/p&gt; &lt;a href="https://1.bp.blogspot.com/-F0ap1uwPjfQ/YLmh-FDBEPI/AAAAAAAAKTE/Nk1i1TMZMEIreqrtFqXFzKFrTU9bs5cyQCLcBGAsYHQ/s0/itrp%2B1.JPG" imageanchor="1" &gt;&lt;img style="width:100%" alt="picture of Kate Grant" id=imgFull border="0" src=" https://1.bp.blogspot.com/-F0ap1uwPjfQ/YLmh-FDBEPI/AAAAAAAAKTE/Nk1i1TMZMEIreqrtFqXFzKFrTU9bs5cyQCLcBGAsYHQ/s0/itrp%2B1.JPG" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt;Joining the Pride March in NYC as part of Google's presence&lt;/p&gt; &lt;p&gt;As graduation loomed close, Kate needed something to do afterwards, and she stumbled upon the ITRP posting. It looked like a great way to continue doing what she loved, and in a much bigger company, with more to learn. She applied, thinking "there's no way in hell" she would get this job. &lt;/p&gt;&lt;p&gt;Turns out she was wrong! &lt;/p&gt;&lt;h2&gt;Growth in ITRP&lt;/h2&gt;  &lt;p&gt;Starting at Google in August 2012, Kate worked in Mountain View, CA helping Googlers of all types with a broad range of tech challenges. She got to spend some time with the Search team at Google working on technical documentation, helping engineers at Google as well as web designers outside Google better understand Google search features. This experience gave Kate something cool she could show her family too, a very tangible "I made this" moment, which can be hard to come by in IT operations work. &lt;/p&gt;&lt;p&gt;During her time in the program, Kate also had the chance to spend some time working in the New York office, which felt good because it brought her closer to New Jersey, where she grew up. It was the first step towards coming back to the Northeast, a welcome return to a comfortable place. Eventually she'd move to New York to work in Google's NYC office full time, helping with IT operations and later managing junior IT help desk folks as the team expanded. &lt;/p&gt; &lt;a href="https://1.bp.blogspot.com/-YbvSVF50TZw/YLmilwqGWiI/AAAAAAAAKTM/Cgi6pa-D62s94AU4DrbS00slKnfiBQWtACLcBGAsYHQ/s0/google%2Blogo.JPG" imageanchor="1" &gt;&lt;img style="width:100%" alt="picture of Google sign" id=imgFull border="0" src=" https://1.bp.blogspot.com/-YbvSVF50TZw/YLmilwqGWiI/AAAAAAAAKTM/Cgi6pa-D62s94AU4DrbS00slKnfiBQWtACLcBGAsYHQ/s0/google%2Blogo.JPG" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt;Neon welcome sign in the lobby of the Google NYC office&lt;/p&gt; &lt;p&gt;Working across teams and projects and help desks in ITRP helped Kate develop all kinds of skills, from improving proficiency with Linux, Windows, MacOS and Chrome to also developing better judgment and analysis skills when solving novel problems that walked into the support desk. And as she began helping to train new employees in orientation, covering IT, Security and Technology topics, she got practice improving her public speaking; by the end of it she was speaking to over 100 people at a time on Mondays in Mountain View as new employees learned the essentials of their work at Google. &lt;/p&gt;&lt;h2&gt;After ITRP&lt;/h2&gt;  &lt;p&gt;While she had been considering a tech writing career path before, Kate realized that the work in ITRP helping people day-to-day let her wear many hats. She was writing documentation, that was one key component. But she also wrote code, managed programs and projects, mentored junior members of the team, and analyzed data. The breadth of the job matched her growth goals, and Kate ended up continuing her career in Techstop, transitioning into a role as a Corporate Operations Engineer in 2014.  &lt;/p&gt;&lt;p&gt;The work remained in the front-line support team and gave Kate tremendous exposure to the wide array of people in the Google headquarters. She focused more on projects to improve the onboarding and daily operations of the support teams, helping to keep systems and services healthy. This involved scheduling, mentoring, training and helping the newer members of the team, mostly later cohorts of IT Residents.  &lt;/p&gt;&lt;p&gt;Kate's experience training new employees, and mentoring new IT Residents, made her a great fit for a new opportunity on the onboarding team, where she worked to make the new employee experience more consistent and reliable between offices across Google globally. This began a traversal of different parts of Google's IT org, where she learned about how the company, and its many teams, operate. Kate's work focused on helping to create better, smoother, more automated processes for the teams in IT, and help to scale the successes they had already achieved. &lt;/p&gt;&lt;h2&gt;Making the jump to Operations Manager&lt;/h2&gt;  &lt;p&gt;Driving improvements to Google’s onboarding infrastructure  was fun and satisfying, but Kate missed working with junior techs day to day, and mentoring them on their own career growth. Luckily in 2016 a new manager position opened up in NYC, and Kate jumped at it. She started leading a team of newer support technicians, including IT Residents. Now she could focus on making a really great support experience for Googlers, and give back to the program she had enjoyed by helping the folks on her team grow. &lt;/p&gt;&lt;p&gt;In 2019 Kate had the opportunity to move to Austin, TX to build out a new ITRP Hub location from scratch, and continues to manage IT Residences and Corporate Operations Engineers there today.  &lt;/p&gt;&lt;h2&gt;Reflections&lt;/h2&gt;  &lt;p&gt;Coming full circle now Kate shared some great advice with us for those thinking about ITRP: &lt;/p&gt;&lt;p&gt;"Don't screen yourself out of the opportunity. Folks come into the program from all walks of life. You don't have to have a super fancy computer science degree. If you’re excited about technology and helping people, ITRP could be a great next step for you." &lt;/p&gt;&lt;p&gt;She reinforced that you get out of the program what you put into it: “If you take the time to be curious, to ask questions, to investigate, you will learn so much. It's really an endless amount of material you &lt;em&gt;could&lt;/em&gt; absorb, and nobody can get through it all. But when you put in the work, it pays you back”. &lt;/p&gt;&lt;p&gt;And as people go through the &lt;a href="https://buildyourfuture.withgoogle.com/programs/itrp/"&gt; ITR Program&lt;/a&gt;, they end up in all sorts of places. "There's no cookie cutter outcome… It doesn’t mean you’re doing something wrong if your path doesn’t look like someone else’s. The right way is what's right for you and your goals." &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/sUinRPw0fNI" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/4408399381179473073/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/06/starting-your-google-career-in-it-kate-grant.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/4408399381179473073" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/4408399381179473073" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/sUinRPw0fNI/starting-your-google-career-in-it-kate-grant.html" title="Starting your Google Career in IT | Kate Grant" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/06/starting-your-google-career-in-it-kate-grant.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-8323149447185926145</id><published>2021-06-04T10:00:00.001-07:00</published><updated>2021-06-04T10:00:34.179-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="actions on google" /><category scheme="http://www.blogger.com/atom/ns#" term="Follow-up Responses" /><category scheme="http://www.blogger.com/atom/ns#" term="notifications" /><category scheme="http://www.blogger.com/atom/ns#" term="Smart Home" /><title type="text">Getting Started with Smart Home Notifications and Follow-up Responses</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-8xokJjA7B0w/YLgJ9HeA72I/AAAAAAAAKSs/5IqhJKRxHkQqFtjDlEJub14LC5EDnPPNwCLcBGAsYHQ/s0/SmartHomeNotificationsBlogAsset.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-8xokJjA7B0w/YLgJ9HeA72I/AAAAAAAAKSs/5IqhJKRxHkQqFtjDlEJub14LC5EDnPPNwCLcBGAsYHQ/s0/SmartHomeNotificationsBlogAsset.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Toni Klopfenstein, Developer Advocate &lt;/em&gt;&lt;/p&gt; &lt;p&gt;Alerts for important device events, such as a delivery person arriving or the back door failing to lock, create a more beneficial and reassuring experience for your smart home device users. &lt;/p&gt;&lt;p&gt;As we &lt;a href="https://www.youtube.com/watch?v=fWMDkIziINQ"&gt;announced at I/O&lt;/a&gt;, you can now add proactive notifications and follow-up responses to your Smart Home Action to alert users to events in a timely, relevant and helpful fashion and better engage with your end users.  &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-8xokJjA7B0w/YLgJ9HeA72I/AAAAAAAAKSs/5IqhJKRxHkQqFtjDlEJub14LC5EDnPPNwCLcBGAsYHQ/s0/SmartHomeNotificationsBlogAsset.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="proactive notifications flowchart" border="0" data-original-height="542" data-original-width="962" src="https://1.bp.blogspot.com/-8xokJjA7B0w/YLgJ9HeA72I/AAAAAAAAKSs/5IqhJKRxHkQqFtjDlEJub14LC5EDnPPNwCLcBGAsYHQ/s0/SmartHomeNotificationsBlogAsset.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Notifications can either alert a user to an event that has occurred without them proactively issuing a request through the Assistant, or as a follow-up to verify that the user's request has been fulfilled.  Each device event that triggers one of these notifications has a unique event id, which helps the Assistant route it to the appropriate Home Graph users and Google Home Smart Speakers or Nest Smart Displays, depending on the notification type and priority. Notifications and follow-up responses can also provide users with additional information, such as error and exception codes, or timestamps for the event.  &lt;/p&gt;&lt;p&gt;You can enable notifications on your existing devices once users opt-in to receive alerts by updating the device definition and requesting a SYNC intent. You can then send device notifications along with any applicable device state changes using the &lt;a href="https://developers.google.com/assistant/smarthome/reference/rest/v1/devices/reportStateAndNotification"&gt;Home Graph API&lt;/a&gt;.  &lt;/p&gt; &lt;p&gt;We are adding support for traits where asynchronous requirements are a core use case.The following device traits now support follow-up responses to user queries:  &lt;/p&gt;&lt;ul&gt; &lt;li&gt;&lt;a href="https://developers.google.com/assistant/smarthome/traits/lockunlock"&gt;LockUnlock&lt;/a&gt; &lt;li&gt;&lt;a href="https://developers.google.com/assistant/smarthome/traits/networkcontrol"&gt;NetworkControl&lt;/a&gt; &lt;li&gt;&lt;a href="https://developers.google.com/assistant/smarthome/traits/openclose"&gt;OpenClose&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Additionally, we are launching proactive notification alerts for the following traits: &lt;/p&gt;&lt;ul&gt; &lt;li&gt;&lt;a href="https://developers.google.com/assistant/smarthome/traits/objectdetection"&gt;ObjectDetection&lt;/a&gt; &lt;li&gt;&lt;a href="https://developers.google.com/assistant/smarthome/traits/runcycle"&gt;RunCycle&lt;/a&gt; &lt;li&gt;&lt;a href="https://developers.google.com/assistant/smarthome/traits/sensorstate"&gt;SensorState&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;For more information, check out the developer &lt;a href="https://developers.google.com/assistant/smarthome/develop/notifications"&gt;guides and samples&lt;/a&gt;, or check out the&lt;a href="https://www.youtube.com/watch?v=_TrXJXkIZBs"&gt; Notifications video&lt;/a&gt;.  &lt;/p&gt;&lt;p&gt;We want to hear from you, so continue sharing your feedback with us through the &lt;a href="https://issuetracker.google.com/issues/new?component=655104&amp;template=1284327"&gt;issue tracker&lt;/a&gt;, and engage with other smart home developers in the &lt;a href="https://www.reddit.com/r/GoogleAssistantDev"&gt;/r/GoogleAssistantDev&lt;/a&gt; community. Follow &lt;a href="https://twitter.com/ActionsOnGoogle"&gt;@ActionsOnGoogle&lt;/a&gt; on Twitter for more of our team's updates, and tweet using #AoGDevs to share what you’re working on. We can’t wait to see what you build! &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/hz4XKC0_y3Q" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/8323149447185926145/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/06/getting-started-with-smart-home-notifications-and-follow-up-responses.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/8323149447185926145" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/8323149447185926145" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/hz4XKC0_y3Q/getting-started-with-smart-home-notifications-and-follow-up-responses.html" title="Getting Started with Smart Home Notifications and Follow-up Responses" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-8xokJjA7B0w/YLgJ9HeA72I/AAAAAAAAKSs/5IqhJKRxHkQqFtjDlEJub14LC5EDnPPNwCLcBGAsYHQ/s72-c/SmartHomeNotificationsBlogAsset.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/06/getting-started-with-smart-home-notifications-and-follow-up-responses.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-8413621225051164036</id><published>2021-06-03T10:00:00.005-07:00</published><updated>2021-06-03T10:03:38.776-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Artificial Intelligence" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Cloud Platform" /><category scheme="http://www.blogger.com/atom/ns#" term="machine learning" /><category scheme="http://www.blogger.com/atom/ns#" term="TensorFlow" /><title type="text">Machine Learning GDEs: Q1 2021 highlights, projects and achievements</title><content type="html">&lt;p&gt;&lt;em&gt;Posted by HyeJung Lee and MJ You, Google ML Ecosystem Community Managers. Reviewed by Soonson Kwon, Developer Relations Program Manager.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="https://developers.google.com/community/experts"&gt;Google Developers Experts&lt;/a&gt; is a community of passionate developers who love to share their knowledge with others. Many of them specialize in Machine Learning (ML). Despite many unexpected changes over the last months and reduced opportunities for various in person activities during the ongoing pandemic, their enthusiasm did not stop. &lt;/p&gt;&lt;p&gt;Here are some highlights of the ML GDE’s hard work during the Q1 2021 which contributed to the global ML ecosystem. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;ML GDE YouTube channel&lt;/strong&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-qFvapiRR_0E/YLfRZYLAYzI/AAAAAAAAKRg/tvCk19LvCEQ12DdLaI7DyAWWwctMkD0TwCLcBGAsYHQ/s0/image%2B1%2BGD.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="ML GDE YouTube page" border="0" data-original-height="777" data-original-width="1600" src="https://1.bp.blogspot.com/-qFvapiRR_0E/YLfRZYLAYzI/AAAAAAAAKRg/tvCk19LvCEQ12DdLaI7DyAWWwctMkD0TwCLcBGAsYHQ/s0/image%2B1%2BGD.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;With the initiative and lead of US-based GDE &lt;a href="https://developers.google.com/community/experts/directory/profile/profile-margaret_maynard-reid"&gt;Margaret Maynard-Reid&lt;/a&gt;, we launched the &lt;strong&gt;&lt;a href="https://www.youtube.com/channel/UCAHB3PMBUUPj-sqh5YzMjwA"&gt;ML GDEs YouTube channel&lt;/a&gt;&lt;/strong&gt;. It is a great way for GDEs to reach global audiences, collaborate as a community, create unique content and promote each other's work. It will contain all kinds of ML related topics: talks on technical topics, tutorials, interviews with another (ML) GDE, a Googler or anyone in the ML community etc. Many videos have already been uploaded, including: &lt;a href="https://www.youtube.com/playlist?list=PLS2b7XO82fsfprpSRPVVsylcSusr0HzzT"&gt;ML GDE’s intro&lt;/a&gt; from all over the world, tips for &lt;a href="https://www.youtube.com/playlist?list=PLS2b7XO82fsdLs44UamFwUXAmG9F2qA8B"&gt;TensorFlow &amp; GCP Certification&lt;/a&gt; and how to use &lt;a href="https://www.youtube.com/playlist?list=PLS2b7XO82fsf4P9vGgaWYjhry61HORnfd"&gt;Google Cloud Platform&lt;/a&gt; etc. &lt;a href="https://youtube.com/MLGDEs"&gt;Subscribe to the channel now!&lt;/a&gt;! &lt;/p&gt; &lt;p&gt;&lt;strong&gt;TensorFlow Everywhere&lt;/strong&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-ZuXNg9EpzjI/YLfR36OvahI/AAAAAAAAKRo/J3OEc20zbU4FWJruEGdMmDDJZ-NV2zX9wCLcBGAsYHQ/s0/image%2B2%2BGD.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="TensorFlow Everywhere logo" border="0" data-original-height="252" data-original-width="1600" src="https://1.bp.blogspot.com/-ZuXNg9EpzjI/YLfR36OvahI/AAAAAAAAKRo/J3OEc20zbU4FWJruEGdMmDDJZ-NV2zX9wCLcBGAsYHQ/s0/image%2B2%2BGD.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;17 ML GDEs presented at &lt;a href="https://www.tensorflow.org/community/tf-everywhere"&gt;TensorFlow Everywhere&lt;/a&gt; (a global community-led event series for TensorFlow and Machine Learning enthusiasts and developers around the world) hosted by local TensorFlow user groups. You can watch the recorded sessions in the &lt;a href="https://www.youtube.com/playlist?list=PLS2b7XO82fsdaPpruVe0h4gAIQhVfbtaM"&gt;TensorFlow Everywhere playlist&lt;/a&gt; on the ML GDE Youtube channel. Most of the sessions cover new features in Tensorflow. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;International Women’s Day&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Many ML GDEs participated in activities to celebrate International Women’s Day (March 8th). GDE &lt;a href="https://developers.google.com/community/experts/directory/profile/profile-ruqiya_bin_safi"&gt;Ruqiya Bin Safi &lt;/a&gt;(based in Saudi Arabia) cooperated with WTM Saudi Arabia to organize “Socialthon” - social development hackathons and gave a talk “&lt;a href="https://www.pscp.tv/w/1dRKZNPzjlzKB"&gt;Successful Experiences in Social Development&lt;/a&gt;", which reached 77K viervers live and hit 10K replays. India-based GDE &lt;a href="https://developers.google.com/community/experts/directory/profile/profile-charmi_chokshi"&gt;Charmi Chokshi&lt;/a&gt; participated in GirlScript's International Women's Day event and gave a talk: “&lt;a href="https://www.youtube.com/watch?v=4XwNYRsdVog&amp;t=2383s"&gt;Women In Tech and How we can help the underrepresented in the challenging world&lt;/a&gt;”. If you’re looking for more inspiring materials, check out the “&lt;a href="https://www.youtube.com/playlist?list=PLS2b7XO82fseT-HqzXrGC6mePtOkzcYdQ"&gt;Women in AI&lt;/a&gt;” playlist on our &lt;a href="https://youtube.com/MLGDEs"&gt;ML GDE YouTube channel&lt;/a&gt;! &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Mentoring&lt;/strong&gt;&lt;a href="https://developers.google.com/community/experts/directory/profile/profile-arnaldo_gualberto"&gt; &lt;/a&gt;&lt;/p&gt;&lt;p&gt;ML GDEs are also very active in mentoring community developers, students in the &lt;a href="https://developers.google.com/community/dsc"&gt;Google Developer Student Clubs&lt;/a&gt; and startups in the &lt;a href="https://startup.google.com/accelerator/"&gt;Google for Startups Accelerator&lt;/a&gt; program. Among many, GDE &lt;a href="https://developers.google.com/community/experts/directory/profile/profile-arnaldo_gualberto"&gt;Arnaldo Gualberto&lt;/a&gt; (Brazil) conducted mentorship sessions for startups in the Google Fast Track program, discussing how to solve challanges using Machine Learning/Deep Learning with TensorFlow.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;TensorFlow&lt;/strong&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-B0amZkJfkHU/YLfSIPpqMwI/AAAAAAAAKRw/ZajS5EdmHWM49DOe0FPrRUkA8E2TbIaEwCLcBGAsYHQ/s0/Screenshot%2B2021-04-05%2B11.16.51%2BAM.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Practical Adversarial Robustness in Deep Learning: Problems and Solutions" border="0" data-original-height="470" data-original-width="1476" src="https://1.bp.blogspot.com/-B0amZkJfkHU/YLfSIPpqMwI/AAAAAAAAKRw/ZajS5EdmHWM49DOe0FPrRUkA8E2TbIaEwCLcBGAsYHQ/s0/Screenshot%2B2021-04-05%2B11.16.51%2BAM.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-bg3HUNvII8k/YLfSoflfrfI/AAAAAAAAKR4/WYQbC2Ll4fQvSbFZUBmgws78i6oaTX2FwCLcBGAsYHQ/s0/imge_4_gd.jpeg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="ML using TF cookbook and ML for Dummies book" border="0" data-original-height="720" data-original-width="1280" src="https://1.bp.blogspot.com/-bg3HUNvII8k/YLfSoflfrfI/AAAAAAAAKR4/WYQbC2Ll4fQvSbFZUBmgws78i6oaTX2FwCLcBGAsYHQ/s0/imge_4_gd.jpeg"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Meanwhile in Europe, GDEs &lt;a href="https://developers.google.com/community/experts/directory/profile/profile-alexia_audevart"&gt;Alexia Audevart&lt;/a&gt; (based in France) and &lt;a href="https://developers.google.com/community/experts/directory/profile/profile-luca_massaron"&gt;Luca Massaron&lt;/a&gt; (based in Italy) released &lt;a href="https://www.packtpub.com/product/machine-learning-using-tensorflow-cookbook/9781800208865"&gt;“Machine Learning using TensorFlow Cookbook”.&lt;/a&gt; It provides simple and effective ideas to successfully use TensorFlow 2.x in computer vision, NLP and tabular data projects. Additionally, Luca published the second edition of the &lt;a href="https://www.wiley.com/en-us/Machine+Learning+For+Dummies%2C+2nd+Edition-p-9781119724056"&gt;Machine Learning For Dummies&lt;/a&gt; book, first published in 2015. Her latest edition is enhanced with product updates and the principal is a larger share of pages devoted to discussion of Deep Learning and TensorFlow / Keras usage. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-Szzi_QAHa_U/YLfS_EcTpZI/AAAAAAAAKSA/GjuHSoK1OJkduD5NJBnEA_JT5dUGoap5gCLcBGAsYHQ/s0/image%2B6%2Bgd.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="YouTube video screenshot" border="0" data-original-height="1003" data-original-width="1600" src="https://1.bp.blogspot.com/-Szzi_QAHa_U/YLfS_EcTpZI/AAAAAAAAKSA/GjuHSoK1OJkduD5NJBnEA_JT5dUGoap5gCLcBGAsYHQ/s0/image%2B6%2Bgd.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;On top of her women-in-tech related activities, &lt;a href="https://developers.google.com/community/experts/directory/profile/profile-ruqiya_bin_safi"&gt;Ruqiya Bin Safi&lt;/a&gt; is also running a &lt;a href="https://www.youtube.com/watch?v=aQ2ZUOUmAcg"&gt;“Welcome to Deep Learning Course and Orientation”&lt;/a&gt; monthly workshop throughout 2021. The course aims to help participants gain foundational knowledge of deep learning algorithms and get practical experience in building neural networks in TensorFlow.  &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-RvZEcW9A-GA/YLfTM0p82II/AAAAAAAAKSE/bC9ch_aYWjYCiWAOxWte_0-cvvR3c6EYwCLcBGAsYHQ/s0/image%2B7%2Bgd.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="TensorFlow Project showcase" border="0" data-original-height="850" data-original-width="1600" src="https://1.bp.blogspot.com/-RvZEcW9A-GA/YLfTM0p82II/AAAAAAAAKSE/bC9ch_aYWjYCiWAOxWte_0-cvvR3c6EYwCLcBGAsYHQ/s0/image%2B7%2Bgd.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Nepal-based GDE &lt;a href="https://developers.google.com/community/experts/directory/profile/profile-kshitiz_rimal?hl=en"&gt;Kshitiz Rimal&lt;/a&gt; gave a talk &lt;a href="https://www.facebook.com/239492583252612/videos/187904752915839"&gt;“TensorFlow Project Showcase: Cash Recognition for Visually Impaired"&lt;/a&gt; on his project which uses TensorFlow, Google Cloud AutoML and edge computing technologies to create a solution for the visually impaired community in Nepal. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-DANa6gVDPRA/YLfTeDMjDnI/AAAAAAAAKSM/LpicGOkv9JMKX327jC14FEiIG99OtAzdACLcBGAsYHQ/s0/image%2B8%2Bgd.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Screenshot of TF Everywhere NA talk" border="0" data-original-height="703" data-original-width="1600" src="https://1.bp.blogspot.com/-DANa6gVDPRA/YLfTeDMjDnI/AAAAAAAAKSM/LpicGOkv9JMKX327jC14FEiIG99OtAzdACLcBGAsYHQ/s0/image%2B8%2Bgd.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;On the other side of the world, in Canada, GDE &lt;a href="https://developers.google.com/community/experts/directory/profile/profile-tanmay_bakshi?hl=en"&gt;Tanmay Bakshi&lt;/a&gt; presented a talk &lt;a href="https://youtu.be/ysZ9RMKsNLk?t=9330"&gt;“Machine Learning-powered Pipelines to Augment Human Specialists”&lt;/a&gt; during TensorFlow Everywhere NA. It covered the world of NLP through Deep Learning, how it's historically been done, the Transformer revolution, and how using the TensorFlow &amp; Keras to implement use cases ranging from small-scale name generation to large-scale Amazon review quality ranking. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Google Cloud Platform&lt;/strong&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-NVSulA0bpos/YLfTzTRAbiI/AAAAAAAAKSU/CWIGicm8MFs-Ib80_gejPfKMRUgKU8FgACLcBGAsYHQ/s0/image%2B9%2Bgd.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Google Cloud Platform YouTube playlist screenshot" border="0" data-original-height="761" data-original-width="1413" src="https://1.bp.blogspot.com/-NVSulA0bpos/YLfTzTRAbiI/AAAAAAAAKSU/CWIGicm8MFs-Ib80_gejPfKMRUgKU8FgACLcBGAsYHQ/s0/image%2B9%2Bgd.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;We have been equally busy on the GCP side as well. In  the  US, GDE &lt;a href="https://developers.google.com/community/experts/directory/profile/profile-srivatsan_srinivasan"&gt;Srivatsan Srinivasan&lt;/a&gt;  created a series of  videos called “&lt;a href="https://www.youtube.com/playlist?list=PL3N9eeOlCrP6Nhv4UFp67IsQ_TVDpXqXK"&gt;Artificial Intelligence on Google Cloud Platform&lt;/a&gt;”, with one of  the episodes, "&lt;a href="https://www.youtube.com/watch?v=pIzX7wk56iA&amp;list=PL3N9eeOlCrP6Nhv4UFp67IsQ_TVDpXqXK&amp;index=11"&gt;Google Cloud Products and Professional Machine Learning Engineer Certification Deep Dive&lt;/a&gt;", getting over 3,000 views.  &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-xKo7xuU3P24/YLfUHKGDNsI/AAAAAAAAKSc/VH4_X_8m5IEQXKxcuAiMmrptehJ0nTBXACLcBGAsYHQ/s0/image%2B10%2BGD.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="ML Analysis Pipeline" border="0" data-original-height="746" data-original-width="1116" src="https://1.bp.blogspot.com/-xKo7xuU3P24/YLfUHKGDNsI/AAAAAAAAKSc/VH4_X_8m5IEQXKxcuAiMmrptehJ0nTBXACLcBGAsYHQ/s0/image%2B10%2BGD.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Korean GDE &lt;a href="https://developers.google.com/community/experts/directory/profile/profile-chansung_park"&gt;Chansung Park&lt;/a&gt; contributed to TensorFlow User Group Korea with his &lt;a href="https://docs.google.com/presentation/d/13MO1nR3853D0zv-3fIxPDzrBcRV6452xxggUOChnaV4/edit#slide=id.g806f581815_0_0"&gt;“Machine Learning Pipeline (CI/CD for ML Products in GCP)”&lt;/a&gt; analysis,  focused on about machine learning pipeline in Google Cloud Platform.   &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-kJGUylOKmX0/YLfUZ6dVBbI/AAAAAAAAKSk/oMTzSetKxokzMtbrUK6xbgfELf5whtBxQCLcBGAsYHQ/s0/image%2B11%2BGD.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Analytics dashboard" border="0" data-original-height="619" data-original-width="1400" src="https://1.bp.blogspot.com/-kJGUylOKmX0/YLfUZ6dVBbI/AAAAAAAAKSk/oMTzSetKxokzMtbrUK6xbgfELf5whtBxQCLcBGAsYHQ/s0/image%2B11%2BGD.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Last but not least, GDE &lt;a href="https://developers.google.com/community/experts/directory/profile/profile-gad_benram?hl=en"&gt;Gad Benram&lt;/a&gt; based in Israel wrote an article on &lt;a href="https://blog.doit-intl.com/seven-tips-for-predicting-the-future-with-facebooks-prophet-51cf8d6c89dc"&gt;“Seven Tips for Forecasting Cloud Costs”&lt;/a&gt;, where he explains how to build and deploy ML models for time series forecasting with Google Cloud Run. It is linked with his solution of building a cloud-spend control system that helps users more-easily analyze their cloud costs. &lt;/p&gt;&lt;p&gt;If you want to know more about the Google Experts community and all their global open-source ML contributions, visit the &lt;a href="https://developers.google.com/community/experts/directory"&gt;GDE Directory&lt;/a&gt; and connect with GDEs on Twitter and LinkedIn. You can also meet them virtually on the &lt;a href="https://www.youtube.com/watch?v=Ey38mvsKujU&amp;list=PLS2b7XO82fsfprpSRPVVsylcSusr0HzzT"&gt;ML GDE’s YouTube Channel&lt;/a&gt;! &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/h6H8xf-9WP8" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/8413621225051164036/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/06/machine-learning-gdes.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/8413621225051164036" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/8413621225051164036" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/h6H8xf-9WP8/machine-learning-gdes.html" title="Machine Learning GDEs: Q1 2021 highlights, projects and achievements" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-qFvapiRR_0E/YLfRZYLAYzI/AAAAAAAAKRg/tvCk19LvCEQ12DdLaI7DyAWWwctMkD0TwCLcBGAsYHQ/s72-c/image%2B1%2BGD.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/06/machine-learning-gdes.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-1962932460528083116</id><published>2021-06-01T09:00:00.001-07:00</published><updated>2021-06-01T09:36:02.597-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android developers" /><category scheme="http://www.blogger.com/atom/ns#" term="featured" /><category scheme="http://www.blogger.com/atom/ns#" term="Game Development" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play Indie games accelerator" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play Indie Games Festival" /><category scheme="http://www.blogger.com/atom/ns#" term="indie developers" /><category scheme="http://www.blogger.com/atom/ns#" term="Indie Games" /><category scheme="http://www.blogger.com/atom/ns#" term="Indie Games Accelerator" /><category scheme="http://www.blogger.com/atom/ns#" term="Indie Games Festival" /><title type="text">Grow your indie game with help from Google Play</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-MNEblg7_8fA/YK7lludSxJI/AAAAAAAAKQM/_YIT15giTk42oPXWIhK6l2FBVt5PCFKTwCLcBGAsYHQ/s0/Joint_Announcement_Android%2BDevelopers%2BBlog_Header_1200x600%2B%25282%2529.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-MNEblg7_8fA/YK7lludSxJI/AAAAAAAAKQM/_YIT15giTk42oPXWIhK6l2FBVt5PCFKTwCLcBGAsYHQ/s0/Joint_Announcement_Android%2BDevelopers%2BBlog_Header_1200x600%2B%25282%2529.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Patricia Correa, Director, Global Developer Marketing&lt;/em&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-MNEblg7_8fA/YK7lludSxJI/AAAAAAAAKQM/_YIT15giTk42oPXWIhK6l2FBVt5PCFKTwCLcBGAsYHQ/s0/Joint_Announcement_Android%2BDevelopers%2BBlog_Header_1200x600%2B%25282%2529.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Indie Games Accelerator graphic" border="0" data-original-height="600" data-original-width="1200" src="https://1.bp.blogspot.com/-MNEblg7_8fA/YK7lludSxJI/AAAAAAAAKQM/_YIT15giTk42oPXWIhK6l2FBVt5PCFKTwCLcBGAsYHQ/s0/Joint_Announcement_Android%2BDevelopers%2BBlog_Header_1200x600%2B%25282%2529.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;At Google Play we’re committed to helping all developers thrive, whether these are large multinational companies or small startups and indie game studios. They are all critical to providing the services and experiences that people around the world look for on their Android devices. The indie game developer community, in particular, constantly pushes the boundaries with their creativity and passion, and bring unique and diverse content to players everywhere.  &lt;/p&gt;&lt;p&gt;To continue supporting indies, today we’re opening submissions for two of our annual developer programs - the Indie Games Accelerator and the Indie Games Festival. These programs are designed to help small games studios grow on Google Play, no matter what stage they are in: &lt;/p&gt;&lt;ul&gt; &lt;li&gt;If you are a small games studio looking for help to launch a new title, apply for the Accelerator to get mentorship and education;  &lt;li&gt;Or, if you have already created and launched a high quality game that is ready for the spotlight, enter the Festival for a chance to win promotions.  &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This year the programs come with some changes, including more eligible markets and fully digital event experiences. Learn more below and apply by July 1st.  &lt;/p&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/qvXN5jkbHYg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt; &lt;p&gt;&lt;strong&gt;Accelerator: Get education and mentorship to supercharge your growth&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;If you’re an indie developer, early in your journey - either close to launching a new game or recently launched a title, this is the program for you. We’ll provide education and mentorship that will help you build, launch and grow successfully. &lt;/p&gt;&lt;p&gt;This year we have nearly doubled the eligible markets, with developers from over 70 countries being eligible to apply for the 2021 program.  &lt;/p&gt;&lt;p&gt;Selected participants will be invited to take part in a 12-week online acceleration program. During this time you’ll get exclusive access to a community of Google and industry experts, as well as a network of other passionate developers from around the world looking to supercharge their growth.  &lt;/p&gt;&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/o8_jEyWVj-I" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;p&gt;&lt;strong&gt;Festival: win promotions that put your game in the spotlight &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;If you're an indie game developer who has recently launched a high quality game, this is your chance to have your game discovered by industry experts and players worldwide.  &lt;/p&gt;&lt;p&gt;This year we will, again, host three competitions for developers from Japan, South Korea, and selected European countries.  &lt;/p&gt;&lt;p&gt;Prizes include featuring on Google Play store, promotional campaigns worth 100,000 EUR, and more.  &lt;/p&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/ORpWYvAGi1Q" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt; &lt;center&gt;&lt;p&gt; How useful did you find this blog post?  &lt;/p&gt;&lt;p&gt;&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=1%E2%98%85+%E2%80%93+Not+at+all&amp;entry.2056663615&amp;entry.646747778=[ADD BLOG TITLE]-[ADD DATE FORMAT MONTH/YEAR: 00/19]"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=2%E2%98%85+%E2%80%93+Not+very&amp;entry.2056663615&amp;entry.646747778=[ADD BLOG TITLE]-[ADD DATE FORMAT MONTH/YEAR: 00/19]"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=3%E2%98%85+%E2%80%93+Somewhat&amp;entry.2056663615&amp;entry.646747778=[ADD BLOG TITLE]-[ADD DATE FORMAT MONTH/YEAR: 00/19]"&gt;★&lt;/a&gt; &lt;a href="hhttps://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=4%E2%98%85+%E2%80%93+Very&amp;entry.2056663615&amp;entry.646747778=[ADD BLOG TITLE]-[ADD DATE FORMAT MONTH/YEAR: 00/19]"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=5%E2%98%85+%E2%80%93+Extremely&amp;entry.2056663615&amp;entry.646747778=[ADD BLOG TITLE]-[ADD DATE FORMAT MONTH/YEAR: 00/19]"&gt;★&lt;/a&gt;  &lt;/p&gt;&lt;/center&gt; &lt;center&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-AJp7AFAeblY/YK7m_nNGgsI/AAAAAAAAKQU/KHoGm9ZU-gUfWw99ILOpVWIQJyuRvXdzQCLcBGAsYHQ/s0/play_logo_16_9.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:25%" alt="Play Logo" border="0" data-original-height="281" data-original-width="499" src="https://1.bp.blogspot.com/-AJp7AFAeblY/YK7m_nNGgsI/AAAAAAAAKQU/KHoGm9ZU-gUfWw99ILOpVWIQJyuRvXdzQCLcBGAsYHQ/s0/play_logo_16_9.png"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/center&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/QC5D4BYQHRQ" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/1962932460528083116/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/06/grow-your-indie-game-with-help-from-google-play.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/1962932460528083116" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/1962932460528083116" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/QC5D4BYQHRQ/grow-your-indie-game-with-help-from-google-play.html" title="Grow your indie game with help from Google Play" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-MNEblg7_8fA/YK7lludSxJI/AAAAAAAAKQM/_YIT15giTk42oPXWIhK6l2FBVt5PCFKTwCLcBGAsYHQ/s72-c/Joint_Announcement_Android%2BDevelopers%2BBlog_Header_1200x600%2B%25282%2529.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/06/grow-your-indie-game-with-help-from-google-play.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-2233810386864885942</id><published>2021-05-27T16:05:00.006-07:00</published><updated>2021-06-03T07:57:32.394-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="developers" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Developer Groups" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Developer Student Clubs" /><title type="text">Tech Camp introduces Georgia high schoolers to technology careers</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-yzqeqlTvrPc/YLeCpe0U-mI/AAAAAAAAKRA/Qp40_OPvx-k4LhXpZZHF47_TITTxdTb0QCLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252852%2529.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-yzqeqlTvrPc/YLeCpe0U-mI/AAAAAAAAKRA/Qp40_OPvx-k4LhXpZZHF47_TITTxdTb0QCLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252852%2529.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Posted by Erica Hanson, Senior Program Manager, Google Developer Student Clubs &lt;/em&gt;&lt;p&gt;    &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-yzqeqlTvrPc/YLeCpe0U-mI/AAAAAAAAKRA/Qp40_OPvx-k4LhXpZZHF47_TITTxdTb0QCLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252852%2529.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Tech Camp image" border="0" data-original-height="620" data-original-width="1200" src="https://1.bp.blogspot.com/-yzqeqlTvrPc/YLeCpe0U-mI/AAAAAAAAKRA/Qp40_OPvx-k4LhXpZZHF47_TITTxdTb0QCLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252852%2529.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;       &lt;p&gt;Tamta Kapanadze wishes that she had learned sooner about careers in technology. By the time that the Georgian citizen learned about them, she was already a university student. &lt;/p&gt;&lt;p&gt;As Kapanadze continued her studies and her interest in technology grew, she wanted to spread the word about the growing field to high-school students in Georgia, a country where the industry is still small. &lt;/p&gt;&lt;p&gt;To do this, Kapanadze called in the support of Google Developer Student Clubs (GDSCs), community groups for college and university students interested in Google's developer technology. After Kapanadze graduated from university, she continued her work by organizing a chapter of Google Developer Groups (GDGs) for Kutaisi.  &lt;/p&gt;&lt;p&gt;Google Developer Groups are the largest community network of professional developers in the world. The program consists of local chapters that provide inclusive environments open to everybody interested in tech. The chapters let members learn new skills, and meet other developers with similar interests through online and in-person events. &lt;/p&gt;&lt;p&gt;However, even after all that, Kapanadze still wanted to do more. She brought together friends and colleagues to partner with Mariam, GDSC Georgia American University Lead; Iliko, GDSC Georgia American University core team member; Giorgi, GDSC Tbilisi State University Lead; and Bakar, GDSC San Diego State University Lead. With this team assembled, they planned Tech Camp, a virtual technological learning experience  that teaches high schoolers about tech fields and how to start careers in web development, game development, artificial intelligence, machine learning, and more. &lt;/p&gt; &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-sF8Wh_plHOM/YLeC7ZVfkmI/AAAAAAAAKRI/Bu5D6MvSNqQJ3UgFavw4N0Yy4VgE4cKpQCLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252853%2529.png " imageanchor="1" &gt;&lt;img style="width:400px" id=imgFull border="0" src="https://1.bp.blogspot.com/-sF8Wh_plHOM/YLeC7ZVfkmI/AAAAAAAAKRI/Bu5D6MvSNqQJ3UgFavw4N0Yy4VgE4cKpQCLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252853%2529.png " data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;/center&gt;   &lt;p id="imgCaption"&gt;Tamta Kapanadze.&lt;/p&gt; &lt;p&gt;While it's difficult enough to plan and execute a new event, Kapanadze and her partners didn't let the additional challenges of the last year stop their plans to launch Tech Camp. They wanted to publicize the event by mid-January, so they made a to-do list and set deadlines for themselves. After a few weeks of intense planning, they: &lt;/p&gt;&lt;ul&gt; &lt;li&gt;Chose the session topics  &lt;li&gt;Started looking for speakers  &lt;li&gt;Chose dates and created a timetable for the camp  &lt;li&gt;Created an application form  &lt;li&gt;And created logos and other designs &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Kapanadze and her partners accepted applications for Tech Camp from Jan. 20 to Feb. 10 and announced their speakers to the public to keep the buzz about the event going. They originally hoped to receive 30 applications, but instead received 500 across their events. In particular, 300 students attended the speaker sessions and 50 students attended the coding sessions, where they would teach them about algorithms and the basics of C++. &lt;/p&gt;&lt;p&gt;Finally, the first day of Tech Camp arrived on Feb. 15. They began each session with fun icebreakers to help everybody feel comfortable, including themselves. Here's a timeline of what each day covered: &lt;/p&gt;&lt;ul&gt; &lt;li&gt;&lt;strong&gt;Day 1:&lt;/strong&gt;   &lt;ul&gt;  &lt;li&gt;Digital professions   &lt;li&gt;Hardware and software &lt;/li&gt;  &lt;/ul&gt; &lt;li&gt;&lt;strong&gt;Day 2:&lt;/strong&gt;  &lt;ul&gt;  &lt;li&gt;Mobile development   &lt;li&gt;Web development &lt;/li&gt;  &lt;/ul&gt; &lt;li&gt;&lt;strong&gt;Day 3:&lt;/strong&gt;  &lt;ul&gt;  &lt;li&gt;Cybersecurity   &lt;li&gt;Game development   &lt;li&gt;Data engineering &lt;/li&gt;  &lt;/ul&gt; &lt;li&gt;&lt;strong&gt;Day 4:&lt;/strong&gt;  &lt;ul&gt;  &lt;li&gt;UI/UX design   &lt;li&gt;Embedded systems &lt;/li&gt;  &lt;/ul&gt; &lt;li&gt;&lt;strong&gt;Day 5:&lt;/strong&gt;  &lt;ul&gt;  &lt;li&gt;Cloud   &lt;li&gt;Test automation &lt;/li&gt;  &lt;/ul&gt; &lt;li&gt;&lt;strong&gt;Day 6:&lt;/strong&gt;  &lt;ul&gt;  &lt;li&gt;Artificial intelligence and machine learning   &lt;li&gt;Career development &lt;/li&gt;  &lt;/ul&gt; &lt;li&gt;&lt;strong&gt;Day 7:&lt;/strong&gt;  &lt;ul&gt;  &lt;li&gt;Importance of technology   &lt;li&gt;Freelance jobs   &lt;li&gt;Award ceremony &lt;/li&gt;  &lt;/ul&gt;&lt;/li&gt;  &lt;/ul&gt;    &lt;center&gt; &lt;a href=" https://1.bp.blogspot.com/-NqzOgDXA65U/YLeDmGZMmjI/AAAAAAAAKRQ/hw2N5h_ajm4cCDDJOlp1jWQfyXEHndPpwCLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252854%2529.png " imageanchor="1" &gt;&lt;img id=imgFull border="0" src=" https://1.bp.blogspot.com/-NqzOgDXA65U/YLeDmGZMmjI/AAAAAAAAKRQ/hw2N5h_ajm4cCDDJOlp1jWQfyXEHndPpwCLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252854%2529.png " data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;/center&gt;   &lt;p id="imgCaption"&gt; A screenshot of the virtual session about game development. &lt;/p&gt;  &lt;p&gt;Everybody defines success differently, but for Kapanadze and her team it meant impacting at least one person. By this measure, Tech Camp succeeded because many of those who attended decided to pursue careers in tech. As for Kapanadze, she can’t wait to see what the future holds for Georgia's high schoolers and the country's growing tech industry. &lt;/p&gt;&lt;p&gt;To watch recordings from Tech Camp, please visit &lt;a href="https://youtube.com/playlist?list=PLZoyJBjNZcID3m1lmpznaLnS0e36Lzc35"&gt;the playlist on YouTube&lt;/a&gt;. &lt;/p&gt;  &lt;a href=" https://1.bp.blogspot.com/-qhe0_y4eUCo/YLeD_sAQYHI/AAAAAAAAKRY/7JQh5dQv55Qv8yA6iNywFR4qQeTj37_gACLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252855%2529.png " imageanchor="1" &gt;&lt;img id=imgFull border="0" src=" https://1.bp.blogspot.com/-qhe0_y4eUCo/YLeD_sAQYHI/AAAAAAAAKRY/7JQh5dQv55Qv8yA6iNywFR4qQeTj37_gACLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252855%2529.png " data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt; The recordings available from Tech Camp. &lt;/p&gt; &lt;p&gt;For more information, find &lt;a href="http://developers.google.com/community"&gt;a Google Developers community group near you&lt;/a&gt;. &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/zPjgACGLlkc" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/2233810386864885942/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/05/tech-camp-introduces-georgia-high.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2233810386864885942" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2233810386864885942" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/zPjgACGLlkc/tech-camp-introduces-georgia-high.html" title="Tech Camp introduces Georgia high schoolers to technology careers" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-yzqeqlTvrPc/YLeCpe0U-mI/AAAAAAAAKRA/Qp40_OPvx-k4LhXpZZHF47_TITTxdTb0QCLcBGAsYHQ/s72-c/pasted%2Bimage%2B0%2B%252852%2529.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/05/tech-camp-introduces-georgia-high.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-5514757437851225168</id><published>2021-05-27T10:00:00.011-07:00</published><updated>2021-05-27T10:00:32.058-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="dart" /><category scheme="http://www.blogger.com/atom/ns#" term="Firebase" /><category scheme="http://www.blogger.com/atom/ns#" term="Firebase Cloud Functions" /><category scheme="http://www.blogger.com/atom/ns#" term="flutter" /><category scheme="http://www.blogger.com/atom/ns#" term="Flutter Web" /><title type="text">Behind the scenes: How the Google I/O photo booth was made</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-OoK_Zn8qkB4/YK15FLFsaEI/AAAAAAAAKPs/f7sEFHwNcQ4wQWG2xwl57VQuY-vxXOn1gCLcBGAsYHQ/s0/image%2B3.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-OoK_Zn8qkB4/YK15FLFsaEI/AAAAAAAAKPs/f7sEFHwNcQ4wQWG2xwl57VQuY-vxXOn1gCLcBGAsYHQ/s0/image%2B3.png"&gt; &lt;p&gt;&lt;em&gt;Posted by the Google Developers team&lt;/em&gt;&lt;/p&gt; &lt;h2&gt;A closer look at building a Flutter web app with Google Developer products&lt;/h2&gt;  &lt;p&gt;If you attended Google I/O this year, you probably stopped by the Google I/O photo booth for a selfie with our Google Developer mascots: Flutter’s Dash, Android Jetpack, Chrome’s Dino, and Firebase’s Sparky. If you didn’t, it’s not too late to jump in, &lt;a href="https://photobooth.flutter.dev/#/"&gt;take a selfie&lt;/a&gt;, and share it on social media! We loved seeing all of the pictures you posted and your favorite props! Want to learn more about building a camera plugin, layouts, and gestures used in a photo booth for Flutter on the web? &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-OoK_Zn8qkB4/YK15FLFsaEI/AAAAAAAAKPs/f7sEFHwNcQ4wQWG2xwl57VQuY-vxXOn1gCLcBGAsYHQ/s0/image%2B3.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Android, Dino, Dash, and Sparky all gathered around the photo booth" border="0" data-original-height="900" data-original-width="1600" src="https://1.bp.blogspot.com/-OoK_Zn8qkB4/YK15FLFsaEI/AAAAAAAAKPs/f7sEFHwNcQ4wQWG2xwl57VQuY-vxXOn1gCLcBGAsYHQ/s0/image%2B3.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;It took a combination of Google developer products to make the photo booth successful. The Flutter and Firebase teams joined forces to build a best in class example of Flutter on the web that used Firebase for hosting, auth, performance monitoring, and social sharing. Take a closer look at how the photo booth was built &lt;a href="https://medium.com/flutter/how-its-made-i-o-photo-booth-3b8355d35883"&gt;here&lt;/a&gt; and then grab the &lt;a href="https://github.com/flutter/photobooth"&gt;open source code&lt;/a&gt; on Github! &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-4VGcT67OHpk/YK15wpme3iI/AAAAAAAAKP0/sFJUB5urzTklRJFerONYByk2Yt9IclnsACLcBGAsYHQ/s0/image%2B4.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Flutter team members having fun in the photo booth" border="0" data-original-height="1270" data-original-width="1496" src="https://1.bp.blogspot.com/-4VGcT67OHpk/YK15wpme3iI/AAAAAAAAKP0/sFJUB5urzTklRJFerONYByk2Yt9IclnsACLcBGAsYHQ/s0/image%2B4.png"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;p id="imgCaption"&gt;Flutter team members having fun in the photo booth!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/gs2QECafc3s" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/5514757437851225168/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/05/behind-scenes-how-google-io-photo-booth-was-made.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5514757437851225168" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5514757437851225168" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/gs2QECafc3s/behind-scenes-how-google-io-photo-booth-was-made.html" title="Behind the scenes: How the Google I/O photo booth was made" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-OoK_Zn8qkB4/YK15FLFsaEI/AAAAAAAAKPs/f7sEFHwNcQ4wQWG2xwl57VQuY-vxXOn1gCLcBGAsYHQ/s72-c/image%2B3.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/05/behind-scenes-how-google-io-photo-booth-was-made.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-438705109974543731</id><published>2021-05-26T10:00:00.002-07:00</published><updated>2021-06-08T09:44:36.968-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="hand tracking" /><category scheme="http://www.blogger.com/atom/ns#" term="MediaPipe" /><category scheme="http://www.blogger.com/atom/ns#" term="Mirru" /><title type="text">Prosthesis control via Mirru App using MediaPipe hand tracking</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-mEwB3Ududu0/YKwoC3FEuiI/AAAAAAAAKOk/NdrJaCOVwMQMGo1Akqio4kij1beNXrc0gCLcBGAsYHQ/s0/mirru-app-logo.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-mEwB3Ududu0/YKwoC3FEuiI/AAAAAAAAKOk/NdrJaCOVwMQMGo1Akqio4kij1beNXrc0gCLcBGAsYHQ/s0/mirru-app-logo.png"&gt; &lt;p&gt;&lt;em&gt;Guest post by the Engineering teams at &lt;a href="https://mirru.app"&gt;Mirru&lt;/a&gt; and &lt;a href="https://tweag.io"&gt;Tweag&lt;/a&gt;  &lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;What is the Mirru App?&lt;/strong&gt;&lt;/p&gt; &lt;center&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-mEwB3Ududu0/YKwoC3FEuiI/AAAAAAAAKOk/NdrJaCOVwMQMGo1Akqio4kij1beNXrc0gCLcBGAsYHQ/s0/mirru-app-logo.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:50%" alt="Mirru App logo" border="0" data-original-height="512" data-original-width="512" src="https://1.bp.blogspot.com/-mEwB3Ududu0/YKwoC3FEuiI/AAAAAAAAKOk/NdrJaCOVwMQMGo1Akqio4kij1beNXrc0gCLcBGAsYHQ/s0/mirru-app-logo.png"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/center&gt; &lt;p&gt;Mirru is a free and open source Android app under development with which one can control robotic prosthetic hands via hand tracking. With our app, a user can instantly mirror grips from their sound hand onto a robotic one, which could be 3D-printed and self-assembled at low cost. With Mirru, we want to provide a cheap, intuitive and open end-to-end alternative to existing, costly, cumbersome and proprietary technology. &lt;/p&gt; &lt;center&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-l4-K65QvkVM/YKwoT3z_krI/AAAAAAAAKOs/9e4z3blie5cIZuBxLqy0EpE2MZWQUeQzwCLcBGAsYHQ/s0/mediapipe-mirru-concept-cropped%2B%25281%2529.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:50%" alt="A demonstration of using MediaPipe hand tracking to move a robotic hand’s fingers with the Mirru app." border="0" data-original-height="285" data-original-width="334" src="https://1.bp.blogspot.com/-l4-K65QvkVM/YKwoT3z_krI/AAAAAAAAKOs/9e4z3blie5cIZuBxLqy0EpE2MZWQUeQzwCLcBGAsYHQ/s0/mediapipe-mirru-concept-cropped%2B%25281%2529.gif"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;p id="imgCaption"&gt;Figure 1: A demonstration of using MediaPipe hand tracking to move a robotic hand’s fingers with the Mirru app.&lt;/p&gt;&lt;/center&gt;   &lt;p&gt;The Mirru team is a collaboration between Violeta López and Vladimir Hermand, two independent designers and technologists currently based in Paris. To kickstart the project, the team took part in &lt;a href="https://tweag.io"&gt;Tweag&lt;/a&gt;’s &lt;a href="https://www.tweag.io/blog/2020-02-14-os-fellowship/"&gt;Open Source Fellowship program&lt;/a&gt; which provided funding, mentorship and data engineering expertise from one of their engineers, Dorran Howell. The fellowship helped get Mirru launched from the ground-up.  &lt;/p&gt;&lt;p&gt;Our goal for the 3-month fellowship was to develop an initial version of the Android app that can control any bluetooth open source hand using computer vision techniques, and make the app available for free on the Google Play store so anyone can print their own hand, assemble it, and download the app. With the help of MediaPipe, we were able to quickly prototype our app without having to build our own machine learning model, as we didn’t have the resources or training data to do so. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Why use hand tracking?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Using your phone and a front-facing camera with hand tracking opens up a new, affordable, accessible, and versatile way to control prosthetics.  &lt;/p&gt;&lt;p&gt;Let's say I'm a left hand amputee who owns a robotic prosthesis. Every day, I need my prosthetic hand to actuate a lot of different grip patterns. For example, I need to use a pinch or tripod grip to pick up small objects, or a fist grip to pick up objects like a fruit or a cup. I change and execute these grip patterns via &lt;a href="https://en.wikipedia.org/wiki/Prosthesis#Myoelectric"&gt;myoelectric muscle sensors&lt;/a&gt; that allow me to, for example, open and close a grip by flexing and unflexing my upper limb muscles. These myoelectric muscle sensors are the main interface between my body and the prosthesis. &lt;/p&gt;&lt;p&gt;However, living with them is not as easy as it seems. Controlling the myoelectric sensors can take a lot of time to get used to, and many never do. It can also be quite expensive to get these sensors fitted by a prosthetist, especially for people in developing countries or anyone without health insurance. Finally, the number of grips on many devices currently on the market is limited to less than ten, and only few models come with ways to create custom grips, which are often cumbersome.  &lt;/p&gt;&lt;p&gt;Mirru provides an alternative interface. Using just their phone, a tool many have access to, a user can digitally mirror their sound hand in real-time and communicate with their prosthesis in an intuitive way. This removes the expensive need to be fitted by a prosthetist and enables the user to quickly program an unlimited amount of grips. For now, Mirru stays away from electromyography altogether as reliable muscle sensors are expensive. The programmed grips therefore need to be triggered via the android phone, which is why this first version of our app is more suited for activities like sweeping, holding a book while reading it, or holding a cup or shopping bag. In the future we hope to combine myoelectric sensors with hand tracking to get the benefits of both. &lt;/p&gt;&lt;p&gt;Programming a grip with the Mirru app looks like the following: Let’s say that I want to grab an object with my robotic hand. I bring my prosthesis near the object and I then form the desired grip with my sound  hand in front of my android phone and Mirru mirrors it in real-time to the prosthesis. I then lock my prosthesis into this new grip and free up my vsound hand. Finally I might save this grip for later use and add it to my library of grips.  &lt;/p&gt;   &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-ylQnCBNBllY/YKwpwGmekrI/AAAAAAAAKO0/DikjH32bAcMasXCw5E-yvJTr6Mkd9BG3ACLcBGAsYHQ/s0/mediapipe-mirru-tape-measure.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="A user tester using hand-tracking on their phone to program their prosthesis’s grip to pick up a measuring tape and measure with the other hand." border="0" data-original-height="800" data-original-width="1206" src="https://1.bp.blogspot.com/-ylQnCBNBllY/YKwpwGmekrI/AAAAAAAAKO0/DikjH32bAcMasXCw5E-yvJTr6Mkd9BG3ACLcBGAsYHQ/s0/mediapipe-mirru-tape-measure.gif"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;p id="imgCaption"&gt;Figure 2: A user tester using hand-tracking on their phone to program their prosthesis’s grip to pick up a measuring tape and measure with the other hand.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;The Brunel Hand and the Mirru Arduino Sketch&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;In order to accomplish our goal of allowing as many people as possible to print, assemble, and control their own hand, we designed the Mirru android app to be compatible with any robotic hand that is controlled by a bluetooth-enabled Arduino board and servo motors. &lt;/p&gt;&lt;p&gt;For our project, we printed and assembled an open source robotic hand called the &lt;a href="https://openbionicslabs.com/shop/brunel-hand"&gt;Brunel Hand&lt;/a&gt; made by Open Bionics. First, we 3D printed the Brunel Hand’s &lt;a href="https://www.thingiverse.com/thing:3000641"&gt;3D printable files&lt;/a&gt; that are made available under the CC Attribution-Sharealike 4.0 International License. We then bought the necessary servos, springs, and screws to assemble the hand. In combination with printing and buying the servos, the hand costs around €500 to purchase and assemble. &lt;/p&gt;&lt;p&gt;The Brunel Hand comes with myoelectric-based firmware and a PCB board developed by Open Bionics, but since the hand is in essence just 4 servo motors, any microcontroller could be used. We ended up using an Adafruit ESP32 feather board for its bluetooth capabilities and created an &lt;a href="https://github.com/mirru-app/mirru-android"&gt;Arduino sketch&lt;/a&gt; that can be downloaded, customized, and uploaded for anyone who is printing and assembling their own hand. They could then download the Mirru app to use as the control-interface for their printed hand. &lt;/p&gt;&lt;h2&gt;&lt;strong&gt;Hand-tracking with MediaPipe&lt;/strong&gt;&lt;/h2&gt;  &lt;p&gt;There are many computer vision solutions available for hand tracking that could be used for this project, but we needed a fast, open source solution that didn’t require us to train our own model, and that could be used reliably on a portable device such as a phone. &lt;/p&gt;&lt;p&gt;&lt;a href="https://mediapipe.dev"&gt;MediaPipe&lt;/a&gt; provides great out of the box support for &lt;a href="https://google.github.io/mediapipe/solutions/hands.html"&gt;hand tracking&lt;/a&gt;, and since we didn’t have the training data or resources available to create a model from scratch, it was perfect for our team. We were able to build the Android example apps easily and were excited to find that the performance was promising. Even better, no tweaking on the ready-made hand tracking model or the graphs was necessary, as the hand landmark model provided all the necessary outputs for our prototype. &lt;/p&gt;&lt;p&gt;When testing the prosthesis on real users, we were happy to hear that many of them were impressed with how fast the app was able to translate their movements, and that nothing else exists on the market that allows you to make custom grips as fast and on-the-fly. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-pTpP_5MXPkU/YKwqT-QUoNI/AAAAAAAAKPA/HNR3ow7yjt0mNbsfLQgEqS71sFQUob_2gCLcBGAsYHQ/s0/hand-tracking-mediapipe-mirru.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="A user tester demonstrates how quickly the MediaPipe hand-tracking can translate her moving fingers to the movement of her prosthesis’s fingers." border="0" data-original-height="1000" data-original-width="1551" src="https://1.bp.blogspot.com/-pTpP_5MXPkU/YKwqT-QUoNI/AAAAAAAAKPA/HNR3ow7yjt0mNbsfLQgEqS71sFQUob_2gCLcBGAsYHQ/s0/hand-tracking-mediapipe-mirru.gif"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;p id="imgCaption"&gt;Figure 3: A user tester demonstrates how quickly the MediaPipe hand-tracking can translate her moving fingers to the movement of her prosthesis’s fingers.&lt;/p&gt; &lt;h2&gt;&lt;strong&gt;Translating 3D MediaPipe points into inputs for Robotics&lt;/strong&gt;&lt;/h2&gt;  &lt;p&gt;To achieve the goals of the Mirru app, we need to use hand tracking to independently control each finger of the Brunel Hand in real-time. In the Brunel Hand, the index, middle, and ring fingers are actuated using servos that move at an angle from 0 to 180 degrees; 0 means the finger is fully upright and 180 means the finger is fully flexed down. As we lacked adequate training data to create a model from scratch that could calculate these servo angles for us, we opted to use a heuristic to relate the default hand tracking landmark outputs to the inputs required by our hardware for an initial version of our prototype. &lt;/p&gt; &lt;center&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-XyXpgIlgXb4/YKwqzKyIy7I/AAAAAAAAKPM/NNIGdBqBR3wyvz6cgdeiVqEDuqlQS7E6QCLcBGAsYHQ/s0/mediapipe-mirru-test.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:50%" alt="In the lab testing the translation of the outputs to inputs with the app and the prototype." border="0" data-original-height="720" data-original-width="720" src="https://1.bp.blogspot.com/-XyXpgIlgXb4/YKwqzKyIy7I/AAAAAAAAKPM/NNIGdBqBR3wyvz6cgdeiVqEDuqlQS7E6QCLcBGAsYHQ/s0/mediapipe-mirru-test.gif"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;p id="imgCaption"&gt;Figure 4: In the lab testing the translation of the outputs to inputs with the app and the prototype.&lt;/p&gt;&lt;/center&gt;   &lt;p&gt;We were initially unsure whether the estimated depth (Z) coordinate in the 3D landmarks would be accurate enough for the translation of inputs or if we would be limited to working in 2D. As an initial step, we recorded an example dataset and spun up a visualization of the points in a Jupyter Notebook with Plotly. We were immediately impressed by the quality and accuracy of the coordinates, considering that the technology only uses a single camera without any depth sensors. As noted in the MediaPipe documentation, The Z coordinates have a slightly different scale than the X/Y coordinates, but this didn’t seem to pose a significant challenge for our prototype.  &lt;/p&gt;   &lt;center&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-DZPRioYFsfE/YKwrRc2xqqI/AAAAAAAAKPU/4xr8n44BTiMkWNAyXp3ricdF3V9B0hQ3QCLcBGAsYHQ/s0/unnamed%2B%25284%2529.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:50%" alt="A data visualization of the hand made up of 21 3D hand landmarks provided by MediaPipe." border="0" data-original-height="512" data-original-width="512" src="https://1.bp.blogspot.com/-DZPRioYFsfE/YKwrRc2xqqI/AAAAAAAAKPU/4xr8n44BTiMkWNAyXp3ricdF3V9B0hQ3QCLcBGAsYHQ/s0/unnamed%2B%25284%2529.png"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;p id="imgCaption"&gt;Figure 5: A data visualization of the hand made up of 21 3D hand landmarks provided by MediaPipe.&lt;/p&gt;&lt;/center&gt; &lt;p&gt;Given the accuracy of the 3D landmarks, we opted to use a calculation in 3D for relating landmark outputs to the inputs required by the prosthesis. In our approach, we calculate the acute angles of the fingers in relation to the palm by calculating the angle between the finger direction and the normal of the plane defined by the palm. An angle of 0° corresponds to maximum closure of the finger, and an angle of 180° indicates a fully extended finger. We were able to calculate the finger direction by calculating the vector from the landmark at the base of the fingers to the landmark on the tip of the fingers. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-dbZNexQxoJ8/YKwrrqGvjxI/AAAAAAAAKPc/pc7kFnz810I449ukTdGr8P3zs_pbhczKgCLcBGAsYHQ/s0/unnamed.jpg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Diagram showing the 3D landmarks and which ones we used to calculate the finger direction vector, the palm normal, and the angle that both form." border="0" data-original-height="236" data-original-width="512" src="https://1.bp.blogspot.com/-dbZNexQxoJ8/YKwrrqGvjxI/AAAAAAAAKPc/pc7kFnz810I449ukTdGr8P3zs_pbhczKgCLcBGAsYHQ/s0/unnamed.jpg"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;p id="imgCaption"&gt;Figure 6: Diagram showing the 3D landmarks and which ones we used to calculate the finger direction vector, the palm normal, and the angle that both form.&lt;/p&gt; &lt;p&gt;We calculate the palm normal by selecting three points in the plane of the palm. Using Landmark 0 as the reference point, we calculate the vectors for side 1 and side 2, and compute the cross product of those vectors to give us the palm normal. Finally, we compute the angle of the finger direction and the palm normal. This returns an angle in radians that we use to calculate degrees. &lt;/p&gt;&lt;p&gt;We had to do some extra processing to match the degrees of freedom for the thumb on our prosthetic hand. The thumb moves in more complex ways than the rest of the fingers. In order to get our app to work with the thumb, we did similar calculations for thumb direction and the palm normal, but we used different landmarks.  &lt;/p&gt;&lt;p&gt;Once we do the calculation of the servo angles on the android phone, we send those values via bluetooth to the Arduino board, and the Arduino board moves the servos to the proper position. Due to some noise in the model outputs, we add a smoothing step to the pipeline, which is important so that the movements of the robotic fingers aren’t too jittery for precise grips. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-GHWxiwYk2OA/YKwsJpa7bcI/AAAAAAAAKPk/GIF7UUBXbdQ_JTZJ1MThKGF43P4TI3QqgCLcBGAsYHQ/s0/mediapipe-mirru-pinch.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="A user tester makes a pinch grip on her prosthesis with the Mirru app." border="0" data-original-height="1000" data-original-width="1432" src="https://1.bp.blogspot.com/-GHWxiwYk2OA/YKwsJpa7bcI/AAAAAAAAKPk/GIF7UUBXbdQ_JTZJ1MThKGF43P4TI3QqgCLcBGAsYHQ/s0/mediapipe-mirru-pinch.gif"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;p id="imgCaption"&gt;Figure 7: A user tester makes a pinch grip on her prosthesis with the Mirru app.&lt;/p&gt; &lt;h2&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/h2&gt;  &lt;p&gt;The Mirru app and Mirru Arduino Sketch are designed to allow anyone to control an open source prosthesis with their sound hand and an Android phone. This is a novel and frugal alternative to muscle sensors, and MediaPipe has proven that it is the right tool for the essential hand tracking component of the full application. The Mirru team was able to get started quickly with MediaPipe’s out of the box solutions without having to gather any training data or having to design a model from scratch. The speed of the real-time translation from hand tracking points to the robotic hand has especially excited all of our users in our testing sessions and opens up many possibilities for the future of prostheses.  &lt;/p&gt;&lt;p&gt;We see exciting potential for combining the MediaPipe hand tracking features with existing myoelectric prostheses which could open powerful and advanced ways to create and save custom prosthesis grips in real-time. Also, with the help of MediaPipe, we have been able to provide an open source alternative to proprietary prostheses without the need for myoelectric sensors or a visit to a prosthetist, at a cost that is much lower than what is already on the market, and whose source code can be customized and built-upon by other developers. Our team is excited to see what other ideas the open source community might come up with, and to see what hand tracking can bring to users and manufacturers of prostheses. &lt;/p&gt;&lt;p&gt;As for the current state of the Mirru application, we have yet to implement the possibility of recording and saving moving gestures that are longer sequences compared to the static grip positions. For example, imagine being able to record the movement of the fingers to play a bass line on a piano, like a loopable animated gif. There is a realm of possibilities for prostheses that is waiting to be explored, and we’re really happy that MediaPipe gives us access to it. &lt;/p&gt;&lt;p&gt;We are looking for contributors. If you have ideas or comments about this application, please reach out to mirruapp@gmail.com, or visit our &lt;a href="https://github.com/mirru-app"&gt;GitHub&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;&lt;em&gt;This blog post is curated by Igor Kibalchich, ML Research Product Manager at Google AI.&lt;/em&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/tPszlMM-K-k" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/438705109974543731/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/05/control-your-mirru-prosthesis-with-mediapipe-hand-tracking.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/438705109974543731" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/438705109974543731" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/tPszlMM-K-k/control-your-mirru-prosthesis-with-mediapipe-hand-tracking.html" title="Prosthesis control via Mirru App using MediaPipe hand tracking" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-mEwB3Ududu0/YKwoC3FEuiI/AAAAAAAAKOk/NdrJaCOVwMQMGo1Akqio4kij1beNXrc0gCLcBGAsYHQ/s72-c/mirru-app-logo.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/05/control-your-mirru-prosthesis-with-mediapipe-hand-tracking.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-9108340261975609570</id><published>2021-05-24T11:43:00.000-07:00</published><updated>2021-05-24T11:43:36.389-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="flutter" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Developer Groups" /><category scheme="http://www.blogger.com/atom/ns#" term="Kotlin" /><category scheme="http://www.blogger.com/atom/ns#" term="WomenTechmakers" /><title type="text">A conversation with Hebe He, a developer from Guangzhou</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-aI3Uo8RTB9M/YKuv-0JPPkI/AAAAAAAAKOc/3-dB6ccTTQ0O-HxftJr0qUoy0gyKeDDggCLcBGAsYHQ/s0/unnamed%2B%25282%2529.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-aI3Uo8RTB9M/YKuv-0JPPkI/AAAAAAAAKOc/3-dB6ccTTQ0O-HxftJr0qUoy0gyKeDDggCLcBGAsYHQ/s0/unnamed%2B%25282%2529.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Brian Shen, Program Manager, Google Developers &lt;/em&gt;&lt;p&gt;    &lt;p&gt;Google Developer Groups are one of the largest community networks of developers in the world. Every group has an organizer that helps curate events based on the interests of their local developer community.  &lt;/p&gt;&lt;p&gt;As we continue to explore how different Google Developer Groups build their communities, we interviewed Hebe He, an organizer of Google Developer Group Guangzhou in China. Learn more about how she is building the developer scene in China, thinking up new events for her community, and more below.  &lt;/p&gt;  &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-aI3Uo8RTB9M/YKuv-0JPPkI/AAAAAAAAKOc/3-dB6ccTTQ0O-HxftJr0qUoy0gyKeDDggCLcBGAsYHQ/s0/unnamed%2B%25282%2529.png" imageanchor="1" &gt;&lt;img style="width:100%" alt= "Hebe He, an organizer of Google Developer Group Guangzhou in China."  id=imgFull border="0" src="https://1.bp.blogspot.com/-aI3Uo8RTB9M/YKuv-0JPPkI/AAAAAAAAKOc/3-dB6ccTTQ0O-HxftJr0qUoy0gyKeDDggCLcBGAsYHQ/s0/unnamed%2B%25282%2529.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt; Hebe He, an organizer of Google Developer Group Guangzhou in China. &lt;/p&gt;&lt;/center&gt;     &lt;p&gt;&lt;strong&gt;Tell us about yourself. &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I am Hebe from China and I'm a native of Guangzhou. I'm the organizer of GDG Guangzhou, as well as an ambassador for Women Techmakers (WTM). I work at one of China's new electric-vehicle brands, where I'm responsible for the intelligent business operation of the Internet of Vehicles. I'm relatively outgoing and active, so I really like to deal with different people, whether it's at work or in other activities. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;How did you learn about Google Developer Groups? &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;In 2014, I participated in GDG Guangzhou DevFest for the first time by coincidence and met the founder of GDG Guangzhou. Afterward, I joined the founder's company and volunteered at many GDG programs. In 2017, I officially became an organizer after the existing organizers recognized my ability and desire to contribute more to the GDG Guangzhou community. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tell us more about Guangzhou and the developer community there.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Our community members are talented, passionate, and amazing. I see all kinds of possibilities in them. They're always excited for every event we hold, keep a fanatical attitude toward Google's technological innovation, and are particularly interested in Android, Kotlin, and Flutter. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;What are events like in your community? &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;We highly value feedback from event participants, who are interested in a wide range of topics. For this reason, we generally use 15% of every event to cover non-technical topics, such as entrepreneurship, business management, and careers. For more comprehensive activities, such as DevFest, we increase the amount of non-technical content to roughly 30%. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;What is your Google Developer Group focused on right now?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;We devote most of our energy to improving the quality of activities. We try to add more elements to the event to strengthen the interaction of participants in hopes of improving the feedback mechanism and gaining more valuable suggestions for future event optimization. We also try to improve the quality of guests and themes, and pay more attention to event details, such as event announcements, registration, and check-in.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;What’s your favorite community memory from a Google Developer Group event? &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The memory that touches me the most is the construction of WTM Guangzhou. From the first event with only 80 developers to the audience of more than 500 people in recent years, it represents the recognition of, and support for, our events. There are many people who come to participate every year; some are actively encouraging their friends to participate and others are even urging us to hold events. They feel honored to be invited to our events and their enthusiasm endured during the pandemic. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;What's next for you and your Google Developer Group?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;There's still lots of room to grow in our community. We hope that we can continue to develop a Google Developer Group that reflects the best of Guangzhou. We also hope to find better ways to accumulate the experience shared by speakers and the value of community users. &lt;/p&gt;&lt;p&gt;If you want to grow your career and coding knowledge with people like Hebe He, &lt;a href="https://gdg.community.dev/"&gt;join a Google Developer Group&lt;/a&gt; near you. &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/nIWqMzA1STQ" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/9108340261975609570/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/05/a-conversation-with-hebe-he-developer.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/9108340261975609570" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/9108340261975609570" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/nIWqMzA1STQ/a-conversation-with-hebe-he-developer.html" title="A conversation with Hebe He, a developer from Guangzhou" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-aI3Uo8RTB9M/YKuv-0JPPkI/AAAAAAAAKOc/3-dB6ccTTQ0O-HxftJr0qUoy0gyKeDDggCLcBGAsYHQ/s72-c/unnamed%2B%25282%2529.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/05/a-conversation-with-hebe-he-developer.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-7707414227263277208</id><published>2021-05-24T09:00:00.005-07:00</published><updated>2021-05-24T09:02:06.601-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Google For Games" /><title type="text">Join us for Google for Games Developer Summit 2021</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-htcCXbiQpKs/YKaqWGDPlZI/AAAAAAAAKOQ/4nqejdqiREwlhE7vkHbVSNlLZuOduNVIQCLcBGAsYHQ/s0/Blog%2BBanner%2BGoogle%2BDeveloper_v05.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-htcCXbiQpKs/YKaqWGDPlZI/AAAAAAAAKOQ/4nqejdqiREwlhE7vkHbVSNlLZuOduNVIQCLcBGAsYHQ/s0/Blog%2BBanner%2BGoogle%2BDeveloper_v05.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Greg Hartrell, Head of Product Management, Games on Android &amp; Google Play&lt;/em&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-htcCXbiQpKs/YKaqWGDPlZI/AAAAAAAAKOQ/4nqejdqiREwlhE7vkHbVSNlLZuOduNVIQCLcBGAsYHQ/s0/Blog%2BBanner%2BGoogle%2BDeveloper_v05.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Google for Games Dev Summit header" border="0" data-original-height="500" data-original-width="1500" src="https://1.bp.blogspot.com/-htcCXbiQpKs/YKaqWGDPlZI/AAAAAAAAKOQ/4nqejdqiREwlhE7vkHbVSNlLZuOduNVIQCLcBGAsYHQ/s0/Blog%2BBanner%2BGoogle%2BDeveloper_v05.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;With a surge of new gamers and an increase in time spent playing games in the last year, it’s more important than ever for game developers to delight and engage players. To help developers with this opportunity, the games teams at Google are back to announce the return of the &lt;strong&gt;&lt;a href="https://developersonair.withgoogle.com/events/game-dev-summit-2021"&gt;Google for Games Developer Summit 2021&lt;/a&gt; on July 12th-13th. &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Hear from experts across Google about new game solutions they’re building to make it easier for you to continue creating great games, connecting with players, and scaling your business.  Registration is free and open to all game developers. &lt;/p&gt;&lt;p&gt;Register for the free online event at &lt;a href="https://g.co/gamedevsummit"&gt;g.co/gamedevsummit&lt;/a&gt; to get more details in the coming weeks.  We can’t wait to share our latest innovations with the developer community. &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/2zrVU4HsGUg" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/7707414227263277208/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/05/join-us-for-google-for-games-developer-summit-2021.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/7707414227263277208" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/7707414227263277208" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/2zrVU4HsGUg/join-us-for-google-for-games-developer-summit-2021.html" title="Join us for Google for Games Developer Summit 2021" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-htcCXbiQpKs/YKaqWGDPlZI/AAAAAAAAKOQ/4nqejdqiREwlhE7vkHbVSNlLZuOduNVIQCLcBGAsYHQ/s72-c/Blog%2BBanner%2BGoogle%2BDeveloper_v05.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/05/join-us-for-google-for-games-developer-summit-2021.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-3768086998626176283</id><published>2021-05-20T16:53:00.002-07:00</published><updated>2021-05-21T17:31:27.839-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="#GoogleIO" /><category scheme="http://www.blogger.com/atom/ns#" term="Android App Development" /><category scheme="http://www.blogger.com/atom/ns#" term="Android Studio" /><category scheme="http://www.blogger.com/atom/ns#" term="featured" /><category scheme="http://www.blogger.com/atom/ns#" term="foldables" /><category scheme="http://www.blogger.com/atom/ns#" term="Jetpack Compose" /><category scheme="http://www.blogger.com/atom/ns#" term="Kotlin" /><category scheme="http://www.blogger.com/atom/ns#" term="Large Screens" /><category scheme="http://www.blogger.com/atom/ns#" term="Latest" /><category scheme="http://www.blogger.com/atom/ns#" term="Platform_Update" /><category scheme="http://www.blogger.com/atom/ns#" term="Tablets" /><category scheme="http://www.blogger.com/atom/ns#" term="Wear OS" /><title type="text">What's new for Android developers at Google I/O</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-b1_n6tOHvWU/YKMssWEjo-I/AAAAAAAAQjk/vIJQsAPUpRQKxR44GoCbm3CtRgr8tVBKACLcBGAsYHQ/s0/Android_NewForDevelopers_1024x512_updated.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-b1_n6tOHvWU/YKMssWEjo-I/AAAAAAAAQjk/vIJQsAPUpRQKxR44GoCbm3CtRgr8tVBKACLcBGAsYHQ/s0/Android_NewForDevelopers_1024x512_updated.png"&gt; &lt;p&gt;&lt;em&gt;Cross-posted on the &lt;a href="https://android-developers.googleblog.com/2021/05/whats-new-for-android-developers-at.html"&gt;Android Developers blog&lt;/a&gt; by Karen Ng, Director, Product Management &amp; Jacob Lehrbaum, Director of Developer Relations, Android &amp; Play &lt;/em&gt;&lt;p&gt;  &lt;p&gt;As Android developers, we are all driven by building experiences that delight people around the world. And with people depending on your apps more than ever, expectations are higher and your jobs as developers aren’t getting easier. Today, at &lt;a href="https://events.google.com/io/?lng=en"&gt;Google I/O&lt;/a&gt;, we covered a few ways that we’re trying to help out, whether it be through &lt;strong&gt;Android 12&lt;/strong&gt; - one of the biggest design changes ever, Jetpack, Jetpack Compose, Android Studio, and Kotlin to &lt;strong&gt;help you build beautiful high quality apps&lt;/strong&gt;. We’re also helping when it comes to extending your apps wherever your users go, like through &lt;strong&gt;wearables and larger-screened devices&lt;/strong&gt;. You can watch the &lt;a href="https://events.google.com/io/session/52ad33ce-1363-411e-bfdc-41250e2fa9bc?lng=en"&gt;full Developer Keynote&lt;/a&gt;, but here are a few highlights:  &lt;/p&gt;&lt;p&gt;&lt;h2&gt;Android 12: one of the biggest design updates ever. &lt;/h2&gt;&lt;/p&gt;&lt;p&gt;The first Beta of &lt;a href="http://d.android.com/12"&gt;Android 12&lt;/a&gt; just started rolling out, and it’s packed with lots of cool stuff. From new user safety features like permissions for bluetooth and approximate location, enhancements to performance like expedited jobs and start up animations, to delightful experiences with more interactive widgets and stretch overscrolling, this release is one of the biggest design updates to Android ever. You can &lt;a href="https://android-developers.googleblog.com/2021/05/android-12-beta-1.html"&gt;read more about what’s in Android 12 Beta 1 here&lt;/a&gt;, so you can start preparing your apps for the consumer release coming out later this year. &lt;a href="https://developer.android.com/about/versions/12"&gt;Download the Beta&lt;/a&gt; and try it with your apps today! &lt;/p&gt;&lt;p&gt;     &lt;center&gt; &lt;a href=" https://1.bp.blogspot.com/-73nbn4r0Imk/YKMtQF8ZPlI/AAAAAAAAQjs/TzvtHpXiFNcQJUM-ltLvyFRv7ezLwpWugCLcBGAsYHQ/s0/Untitled.jpeg  " imageanchor="1" &gt;&lt;img style="width:100%" alt="Android 12 visual" id=imgFull border="0" src=" https://1.bp.blogspot.com/-73nbn4r0Imk/YKMtQF8ZPlI/AAAAAAAAQjs/TzvtHpXiFNcQJUM-ltLvyFRv7ezLwpWugCLcBGAsYHQ/s0/Untitled.jpeg " data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;/center&gt;           &lt;/p&gt;&lt;p&gt;&lt;h2&gt;Jetpack Compose: get ready for 1.0 in July! &lt;/h2&gt;&lt;/p&gt;&lt;p&gt;For the last few years, we’ve been hard at work modernizing the Android development experience, listening to your feedback to keep the openness–a hallmark of Android, but becoming more opinionated about the right way to do things. You can see this throughout, from Android Studio, a performant IDE that can keep up with you, to Kotlin, a programming language that enables you to do more with less code, to Jetpack libraries that solve the hardest problems on mobile with backward compatibility. &lt;/p&gt;&lt;p&gt;The next step in this offering is &lt;a href="http://d.android.com/jetpack/compose"&gt;Jetpack Compose&lt;/a&gt; - our modern UI toolkit to easily build beautiful apps for all Android devices. We announced Compose here at Google I/O two years ago and since then have been building it in the open, listening to your feedback to make sure we got it right. With the Compose Beta earlier this year, developers around the world have created some truly beautiful, innovative experiences &lt;a href="https://android-developers.googleblog.com/2021/05/mercari-improves-ui-development.html "&gt;in half the time&lt;/a&gt;, and the response to the &lt;a href="https://android-developers.googleblog.com/2021/05/androiddevchallenge-its-wrap.html"&gt;#AndroidDevChallenge&lt;/a&gt; blew our socks off!  &lt;/p&gt;&lt;p&gt;With the forthcoming update of Material You (which &lt;a href="https://material.io/blog/announcing-material-you"&gt;you can read more about here&lt;/a&gt;), we’ll be adding new Material components as well as further support for building for large screens, making it fast and easy to build a gorgeous UI. We’re pressure testing the final bits in Compose and will release 1.0 Stable in July—so get ready! &lt;/p&gt;  &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/9AAmOcgdA2s" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt; &lt;/center&gt;    &lt;p&gt;&lt;h2&gt;Android Studio Arctic Fox: Design, Devices, &amp; Developer Productivity! &lt;/h2&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://developer.android.com/studio"&gt;Android Studio&lt;/a&gt; Arctic Fox (2020.3.1) Beta, the latest release of the official powerful Android IDE, is out today to help you build quality apps easier and faster. We have delivered and updated the suite of tools to empower three major themes: accelerate your UI design, extend your app to new devices, and boost your developer productivity. With this latest release you can create modern UIs with Compose tooling, see test results across multiple devices, and optimize debugging databases and background tasks with the App Inspector. We’re also making your apps more accessible with the Accessibility Scanner and more performant with Memory Profiler. And for faster build speeds, we have the Android Gradle plugin 7.0, new DSL, and variant APIs. You can learn &lt;a href="https://android-developers.googleblog.com/2021/05/android-studio-arctic-fox-beta.html"&gt;more about the Android Studio updates here&lt;/a&gt;. &lt;/p&gt;  &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-NsTkrrFxpck/YKMrRS-FztI/AAAAAAAAQjU/WrTD3H36zMQ8Un6SSbKWan3fJvLFFCH0gCLcBGAsYHQ/s0/StudioGif.gif" imageanchor="1" &gt;&lt;img style="width:100%" alt= "Android Studio Arctic Fox"  id=imgFull border="0" src="https://1.bp.blogspot.com/-NsTkrrFxpck/YKMrRS-FztI/AAAAAAAAQjU/WrTD3H36zMQ8Un6SSbKWan3fJvLFFCH0gCLcBGAsYHQ/s0/StudioGif.gif" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;/center&gt;     &lt;p&gt;&lt;h2&gt;Kotlin: the most used language by professional Android devs&lt;/h2&gt;&lt;/p&gt; &lt;p&gt; &lt;a href="https://developer.android.com/kotlin"&gt;Kotlin&lt;/a&gt; is now the most used primary language by professional Android developers according to our recent surveys; in fact, over 1.2M apps in the Play Store use Kotlin, including 80% of the top 1000 apps. And here at Google, we love it too: 70+ Google apps like Drive, Home, Maps and Play use Kotlin. And with a brand-new native solution to annotation processing for Kotlin built from the ground up, Kotlin Symbol Processing is available today, a powerful and yet simple API for parsing Kotlin code directly, showing speeds up to 2x faster with libraries like Room. &lt;/p&gt; &lt;p&gt;&lt;h2&gt;Android Jetpack: write features, not boilerplate &lt;/h2&gt;&lt;/p&gt;&lt;p&gt;With &lt;a href="https://developer.android.com/jetpack"&gt;Android Jetpack&lt;/a&gt;, we built a suite of libraries to help reduce boilerplate code so you can focus on the code you care about. Over 84% of the top 10,000 apps are now using a Jetpack library. And today, we’re unpacking some new releases for Jetpack, including Jetpack Macrobenchmark (Alpha) to capture large interactions that affect your app startup and jank before your app is released, as well as a new Kotlin Coroutines API for persisting data more efficiently via Jetpack DataStore (Beta). You can &lt;a href="https://android-developers.googleblog.com/2021/05/whats-new-in-jetpack.html"&gt;read about all the updates in Android Jetpack here&lt;/a&gt;.  &lt;/p&gt; &lt;h2&gt;Now is the time: a big step for Wear &lt;/h2&gt; &lt;p&gt;The best thing about modern Android development is that these tools have been purpose built to help make it easy for you to build for the next era of Android, which is all about enabling devices connected to your phone–TVs, cars, watches, tablets–to work better together.  &lt;/p&gt;&lt;p&gt;Starting today, we take &lt;a href="https://developer.android.com/wear"&gt;a huge step forward with wearables&lt;/a&gt;. First, we introduced a unified platform built jointly with Samsung, combining the best of Wear and Tizen. Second, we shared a new consumer experience with revamped Google apps. And third, a world-class health and fitness service from Fitbit is coming to the platform. As an Android developer, it means you’ll have more reach, and you’ll be able to use all of your existing skills, tools, and APIs that make your mobile apps great, to build for a single wearables platform used by people all over the world.  &lt;/p&gt;&lt;p&gt;Whether it’s new Jetpack APIs for Wear tailored for small screens and designed to optimize battery life, to the &lt;a href="https://developer.android.com/training/articles/wear-tiles"&gt;Jetpack Tiles API&lt;/a&gt;, so you can create a custom Tile for all the devices in the Wear ecosystem, there are a number of new features to help you build on Wear. And with a &lt;a href="https://developer.android.com/training/wearables/health-services"&gt;new set of APIs for Health and Fitness&lt;/a&gt;, created in collaboration with Samsung, data collection from sensors and metrics computation is streamlined, consistent, and accurate–like heart rate to calories to daily distance–from one trusted source. All this comes together in new tooling, with the release of Android Studio Arctic Fox Beta, like easier pairing to test apps, and even a virtual heart rate sensor in the emulator. And when your app is ready, users will have a much easier time discovering the world of Wear apps on Google Play, with some big updates to discoverability. You can &lt;a href="https://android-developers.googleblog.com/2021/05/wear-os-at-io.html  "&gt;read more about all of the Wear updates here&lt;/a&gt;.  &lt;/p&gt; &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/URx8_ZRR7ls" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt; &lt;/center&gt;    &lt;p&gt;&lt;h2&gt;Tapping the momentum of larger screens, like tablets, Chrome OS and foldables&lt;/h2&gt;&lt;/p&gt;&lt;p&gt;When it comes to larger screens -- tablets, foldables, and Chrome OS laptops-- there is huge momentum. People are increasingly relying on large screen devices to stay connected with family and friends, go to school, or work remotely. In fact, there are over 250 million active large screen Android devices. Last year, Chrome OS grew +92% year over year–5 times the rate of the PC market, making Chrome OS the fastest growing and the second-most popular desktop OS. To help you take advantage of this momentum, we’re giving you APIs and tools to make optimizing that  experience easier: like having your content resize automatically to more space by using &lt;a href="https://developer.android.com/jetpack/androidx/releases/slidingpanelayout#1.2.0-alpha02"&gt;SlidingpaneLayout 1.2.0 &lt;/a&gt;and a new vertical navigation rail component, Max widths on components to avoid stretched UIs, as well as updates to the platform, Chrome OS, and Jetpack windowmanager, so apps work better by default. &lt;a href="https://android-developers.googleblog.com/2021/05/whats-new-in-foldables-tablets-and.html"&gt;You can learn more here&lt;/a&gt;.  &lt;/p&gt;  &lt;center&gt; &lt;a href=" https://1.bp.blogspot.com/-lCV9hv82PwI/YKMr5noyVpI/AAAAAAAAQjc/mKzieJLkumwJPwVp-psyuSnzGlTASlTXwCLcBGAsYHQ/s0/unnamed%2B%25281%2529.png " imageanchor="1" &gt;&lt;img style="width:100%" alt= "Google Duo's optimized experience for foldable devices" id=imgFull border="0" src=" https://1.bp.blogspot.com/-lCV9hv82PwI/YKMr5noyVpI/AAAAAAAAQjc/mKzieJLkumwJPwVp-psyuSnzGlTASlTXwCLcBGAsYHQ/s0/unnamed%2B%25281%2529.png " data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt;   &lt;p id="imgCaption"&gt; &lt;a href="https://developer.android.com/stories/apps/google-duo?hl=en"&gt;Google Duo's&lt;/a&gt; optimized experience for foldable devices  &lt;/p&gt; &lt;/center&gt;   &lt;p&gt;This is just a taste of some of the new ways we’re making it easier for you to build high quality Android apps. Later today, we’ll be releasing more than 20 technical sessions on Android and Play, covering a wide range of topics such as background tasks, privacy, and Machine Learning on Android, or the top 12 tips to get you ready for Android 12. If building for cars, TVs, and wearables is your thing, we got that covered, too. You can find all these sessions - and more - on &lt;a href="https://events.google.com/io/program/content?4=topic_android&amp;lng=en"&gt;the I/O website&lt;/a&gt;. Beyond the sessions and news, there’s a number of fun ways to virtually connect with Googlers and other developers at this year’s Google I/O.  You can check out the Android dome in &lt;a href="http://g.co/io/adventure"&gt;I/O Adventure&lt;/a&gt;, where you can see new blog posts, videos, codelabs, and more. Maybe even test out your Jetpack Compose skills or take a virtual tour of the cars inside our dome!  &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/C-tG8-Xcm9M" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/3768086998626176283/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/05/whats-new-for-android-developers-at.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/3768086998626176283" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/3768086998626176283" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/C-tG8-Xcm9M/whats-new-for-android-developers-at.html" title="What's new for Android developers at Google I/O" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-b1_n6tOHvWU/YKMssWEjo-I/AAAAAAAAQjk/vIJQsAPUpRQKxR44GoCbm3CtRgr8tVBKACLcBGAsYHQ/s72-c/Android_NewForDevelopers_1024x512_updated.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/05/whats-new-for-android-developers-at.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-145138340766159114</id><published>2021-05-19T11:00:00.001-07:00</published><updated>2021-05-19T11:10:28.888-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="Flutter developers" /><category scheme="http://www.blogger.com/atom/ns#" term="Flutter plugin" /><category scheme="http://www.blogger.com/atom/ns#" term="google pay" /><category scheme="http://www.blogger.com/atom/ns#" term="google pay api" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Pay Developers" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play Developers" /><category scheme="http://www.blogger.com/atom/ns#" term="online payments" /><category scheme="http://www.blogger.com/atom/ns#" term="payment request api" /><category scheme="http://www.blogger.com/atom/ns#" term="Web payments" /><title type="text">Google Pay introduces a Flutter plugin for payments</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-RKtP5hWon8g/YKMPRt6kFtI/AAAAAAAAKMk/a-TCBZBCeFk_cUg4CkBw9X8oBmHbX2UngCLcBGAsYHQ/s0/Google_ConsumerFlutter-02.png"&gt;  &lt;img style="display:none" src="https://1.bp.blogspot.com/-RKtP5hWon8g/YKMPRt6kFtI/AAAAAAAAKMk/a-TCBZBCeFk_cUg4CkBw9X8oBmHbX2UngCLcBGAsYHQ/s0/Google_ConsumerFlutter-02.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Jose Ugia, Developer Programs Engineer, Google Pay and Anthony Panissidi, Technical Writer, Google Developer Studio&lt;/em&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-xbvT3fwdGss/YKKj75u6XUI/AAAAAAAAKJk/Efhqxzq4cbEssjLbZIVc77cAwOMwQF95ACLcBGAsYHQ/s0/Flutter%2Bx%2BGoogle%2BPay%2Bupdated.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Flutter and Firebase logos" border="0" data-original-height="213" data-original-width="1146" src="https://1.bp.blogspot.com/-xbvT3fwdGss/YKKj75u6XUI/AAAAAAAAKJk/Efhqxzq4cbEssjLbZIVc77cAwOMwQF95ACLcBGAsYHQ/s0/Flutter%2Bx%2BGoogle%2BPay%2Bupdated.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;We made it easier than ever to integrate Google Pay in Flutter apps! &lt;/p&gt;&lt;p&gt;Our open source Flutter plugin simplifies the addition of payments to Flutter apps on iOS and Android. &lt;/p&gt;&lt;p&gt;The plugin gives you the ability to add functionality to your apps across platforms with a single and familiar codebase written in Dart.  &lt;/p&gt;&lt;p&gt;It adapts common steps required to facilitate payments that adhere to how Flutter constructs components, works with the user interface of the app, and exchanges information between the native and Dart ends. &lt;/p&gt;&lt;p&gt;Now, as a Flutter developer, you can easily reap the benefits of Google Pay, which lets you provide users with a secure and fast checkout experience that increases conversions, and frees you from the need to manage credit cards and payments.  &lt;/p&gt;&lt;h2&gt;How it works&lt;/h2&gt;  &lt;p&gt;To use the plugin, add &lt;code&gt;pay&lt;/code&gt; as a dependency in your &lt;code&gt;pubspec.yaml&lt;/code&gt; file. For more information, see &lt;a href="https://flutter.dev/docs/development/packages-and-plugins/using-packages#adding-a-package-dependency-to-an-app"&gt;Adding a package dependency to an app&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;To configure a payment, load a payment profile with the desired configuration, either with a local file or one retrieved from a remote server. For a complete list of all configuration options, see &lt;a href="https://developers.google.com/pay/api/android/reference/request-objects#PaymentDataRequest"&gt;the PaymentDataRequest object&lt;/a&gt;.  &lt;/p&gt;&lt;p&gt;Here's an example of a JSON file that defines payment options: &lt;/p&gt;&lt;h3&gt;sample_payment_configuration.json&lt;/h3&gt;   &lt;pre&gt;&lt;code class=”language-json”&gt;{&lt;br /&gt;  "provider": "google_pay",&lt;br /&gt;  "data": {&lt;br /&gt;    "environment": "TEST",&lt;br /&gt;    "apiVersion": 2,&lt;br /&gt;    "apiVersionMinor": 0,&lt;br /&gt;    "allowedPaymentMethods": [{&lt;br /&gt;      "type": "CARD",&lt;br /&gt;      "tokenizationSpecification": {&lt;br /&gt;        "type": "PAYMENT_GATEWAY",&lt;br /&gt;        "parameters": {&lt;br /&gt;          "gateway": "example",&lt;br /&gt;          "gatewayMerchantId": "gatewayMerchantId"&lt;br /&gt;        }&lt;br /&gt;      },&lt;br /&gt;      "parameters": {&lt;br /&gt;        "allowedCardNetworks": ["VISA", "MASTERCARD"],&lt;br /&gt;        "allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],&lt;br /&gt;        "billingAddressRequired": true,&lt;br /&gt;        "billingAddressParameters": {&lt;br /&gt;          "format": "FULL",&lt;br /&gt;          "phoneNumberRequired": true&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    }],&lt;br /&gt;    "merchantInfo": {&lt;br /&gt;      "merchantId": "01234567890123456789",&lt;br /&gt;      "merchantName": "Example Merchant Name"&lt;br /&gt;    },&lt;br /&gt;    "transactionInfo": {&lt;br /&gt;      "countryCode": "US",&lt;br /&gt;      "currencyCode": "USD"&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;For more examples of JSON files that define payment options, take a look at the &lt;code&gt;example/assets/&lt;/code&gt; folder. &lt;/p&gt;&lt;p&gt;Now you can use this configuration to add the Google Pay button to your app and forward the payment method selected by your users.  &lt;/p&gt;&lt;p&gt;Here's an example of a Dart file: &lt;/p&gt; &lt;pre&gt;&lt;code class=”language-dart”&gt;import 'package:pay/pay.dart';&lt;br /&gt; &lt;br /&gt;const _paymentItems = [&lt;br /&gt;  PaymentItem(&lt;br /&gt;    label: 'Total',&lt;br /&gt;    amount: '99.99',&lt;br /&gt;    status: PaymentItemStatus.final_price,&lt;br /&gt;  )&lt;br /&gt;];&lt;br /&gt; &lt;br /&gt;// In your Widget build() method&lt;br /&gt;GooglePayButton(&lt;br /&gt;  paymentConfigurationAsset: 'sample_payment_configuration.json',&lt;br /&gt;  paymentItems: _paymentItems,&lt;br /&gt;  style: GooglePayButtonStyle.black,&lt;br /&gt;  type: GooglePayButtonType.pay,&lt;br /&gt;  onPaymentResult: onGooglePayResult,&lt;br /&gt;),&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;// In your Stateless Widget class or State&lt;br /&gt;void onGooglePayResult(paymentResult) {&lt;br /&gt;  // Send the resulting Google Pay token to your server or PSP&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt; &lt;h2&gt;How to use it&lt;/h2&gt;  &lt;p&gt;The best part of this news is that you can use the plugin today. To get started with it, check out &lt;a href="http://goo.gle/pay-flutter-plugin"&gt;the pay package on pub.dev&lt;/a&gt;. We also want to hear your thoughts and feature requests, and look forward to your contributions &lt;a href="https://github.com/google-pay/flutter-plugin"&gt;on GitHub&lt;/a&gt;. &lt;/p&gt; &lt;h2&gt;Learn more&lt;/h2&gt;  &lt;p&gt;Want to learn more about Google Pay? Here's what you can do:  &lt;/p&gt;&lt;ul&gt; &lt;li&gt;To get started with Google Pay, see &lt;a href="http://g.co/pay/api"&gt;our developer documentation&lt;/a&gt;.   &lt;li&gt;To integrate with Google Pay, visit &lt;a href="http://goo.gle/pay-console"&gt;Google Pay's Business Console&lt;/a&gt;.   &lt;li&gt;Follow &lt;a href="https://twitter.com/GooglePayDevs?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor"&gt;@GooglePayDevs&lt;/a&gt; on Twitter for future updates. If you have questions, tag @GooglePayDevs and include #AskGooglePayDevs in your tweets.&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/Zet2fcbSst0" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/145138340766159114/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/05/google-pay-introduces-flutter-plugin-for-payments.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/145138340766159114" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/145138340766159114" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/Zet2fcbSst0/google-pay-introduces-flutter-plugin-for-payments.html" title="Google Pay introduces a Flutter plugin for payments" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-RKtP5hWon8g/YKMPRt6kFtI/AAAAAAAAKMk/a-TCBZBCeFk_cUg4CkBw9X8oBmHbX2UngCLcBGAsYHQ/s72-c/Google_ConsumerFlutter-02.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/05/google-pay-introduces-flutter-plugin-for-payments.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-2071251168376102644</id><published>2021-05-19T10:00:00.002-07:00</published><updated>2021-05-20T07:53:15.049-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="developer library" /><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><title type="text">A new open source content library from Google</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-3-NcJxr5_3o/YKQB2ey_BUI/AAAAAAAAKOE/gpNt5ZCwD5YcFZhc2S8-gDHeXNNuvP6BgCLcBGAsYHQ/s0/Site%2BScroll.gif"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-3-NcJxr5_3o/YKQB2ey_BUI/AAAAAAAAKOE/gpNt5ZCwD5YcFZhc2S8-gDHeXNNuvP6BgCLcBGAsYHQ/s0/Site%2BScroll.gif"&gt; &lt;p&gt;&lt;em&gt;Posted by Sebastian Trzcinski-Clément, Program Manager, Developer Relations&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Developers around the world are constantly creating open source tools and tutorials but have a hard time getting them discovered. The content published often spanned many different sites - from GitHub to Medium.  Therefore we decided to create a space where we can highlight the best projects related to Google technologies in one place - introducing the &lt;a href="https://devlibrary.withgoogle.com"&gt;Developer Library&lt;/a&gt;.  &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-3-NcJxr5_3o/YKQB2ey_BUI/AAAAAAAAKOE/gpNt5ZCwD5YcFZhc2S8-gDHeXNNuvP6BgCLcBGAsYHQ/s0/Site%2BScroll.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="GIF scrolling through Developer Library" border="0" data-original-height="750" data-original-width="1587" src="https://1.bp.blogspot.com/-3-NcJxr5_3o/YKQB2ey_BUI/AAAAAAAAKOE/gpNt5ZCwD5YcFZhc2S8-gDHeXNNuvP6BgCLcBGAsYHQ/s0/Site%2BScroll.gif"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;The platform showcases blog posts and open source tools with easy-to-use navigation. Content is categorized by product areas; Machine Learning, Flutter, Firebase, Angular, Cloud, Android, with more to come.  &lt;/p&gt;&lt;p&gt;What makes the Developer Library unique is that each piece featured on the site is reviewed, in detail, by a team of Google experts for accuracy and relevancy, so you know when you view the content on the site it has the stamp of approval from Google.  &lt;/p&gt;&lt;p&gt;To demonstrate the breadth of content on the site here are some examples of published content pieces and video interviews with the developers who authored these posts: &lt;/p&gt;&lt;ul&gt; &lt;li&gt;A blood cell detection &lt;a href="https://devlibrary.withgoogle.com/products/ml/repos/sayakpaul-Blood-Cell-Detection-using-TFOD-API"&gt;code sample&lt;/a&gt; using TensorFlow's Object Detection API and interview with author &lt;a href="https://devlibrary.withgoogle.com/authors/sayakpaul"&gt;Sayak Paul&lt;/a&gt; &lt;li&gt;&lt;a href="https://devlibrary.withgoogle.com/authors/vanessamarely"&gt;Blog posts&lt;/a&gt; in Spanish on how to use Angular and interview with author &lt;a href="https://devlibrary.withgoogle.com/authors/vanessamarely"&gt;Vanessa Aristizabal&lt;/a&gt; &lt;li&gt;A &lt;a href="https://devlibrary.withgoogle.com/products/ml/repos/opensource9ja-danfojs"&gt;Javascript package&lt;/a&gt; built on TensorFlow.js that provides easy-to-use data structures for manipulating and processing data and interview with author &lt;a href="https://devlibrary.withgoogle.com/authors/risenW"&gt;Rising Odegua&lt;/a&gt; &lt;li&gt;Coding tips on how to make efficient &lt;a href="https://devlibrary.withgoogle.com/authors/wal33d"&gt;API calls in Flutter&lt;/a&gt; using a test-driven approach and interview with author &lt;a href="https://devlibrary.withgoogle.com/authors/wal33d"&gt;Waleed Arshad&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;There are two ways you can help us grow the Developer Library. &lt;/p&gt;&lt;p&gt;Firstly, If you have great content that you would like to see published on the Developer Library, please submit it for review &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScvcMrUQlp6YizvT0N18_0KLjDOz26apRpSabLKh64to4qxyA/viewform?usp=send_form"&gt;here&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;Secondly, the team welcomes feedback, so if you have anything you’d like to see added or changed on the Developer Library site, do complete this short &lt;a href="https://forms.gle/2JoN6csvyvnDC8Nd9"&gt;feedback form&lt;/a&gt; or just file an issue on &lt;a href="https://github.com/google/devlibrary"&gt;GitHub&lt;/a&gt;.  &lt;/p&gt;&lt;p&gt;We can't wait to see what you build together! &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/GzFH4RTVGy0" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/2071251168376102644/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/05/a-new-open-source-content-library-from-google.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2071251168376102644" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2071251168376102644" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/GzFH4RTVGy0/a-new-open-source-content-library-from-google.html" title="A new open source content library from Google" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-3-NcJxr5_3o/YKQB2ey_BUI/AAAAAAAAKOE/gpNt5ZCwD5YcFZhc2S8-gDHeXNNuvP6BgCLcBGAsYHQ/s72-c/Site%2BScroll.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/05/a-new-open-source-content-library-from-google.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-5222046047928930032</id><published>2021-05-18T13:00:00.008-07:00</published><updated>2021-05-18T13:39:44.657-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="google assistant" /><title type="text">New for I/O: Assistant tools and features for Android apps and Smart Displays</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-Gg8JkI1xGV4/YJ7fFpPKzWI/AAAAAAAAKIs/Dsel_SjNircR56RxodBQeZPKll5aNUmhwCLcBGAsYHQ/s0/BlogHeader_New_Assistant.jpg"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-Gg8JkI1xGV4/YJ7fFpPKzWI/AAAAAAAAKIs/Dsel_SjNircR56RxodBQeZPKll5aNUmhwCLcBGAsYHQ/s0/BlogHeader_New_Assistant.jpg"&gt; &lt;p&gt;&lt;em&gt;Posted by Rebecca Nathenson, Director of Product for the Google Assistant Developer Platform&lt;/em&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-Gg8JkI1xGV4/YJ7fFpPKzWI/AAAAAAAAKIs/Dsel_SjNircR56RxodBQeZPKll5aNUmhwCLcBGAsYHQ/s0/BlogHeader_New_Assistant.jpg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="New Assistant tools at Google IO header" border="0" data-original-height="968" data-original-width="3249" src="https://1.bp.blogspot.com/-Gg8JkI1xGV4/YJ7fFpPKzWI/AAAAAAAAKIs/Dsel_SjNircR56RxodBQeZPKll5aNUmhwCLcBGAsYHQ/s0/BlogHeader_New_Assistant.jpg"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Today at I/O, we shared some exciting new product announcements to help you more easily bring Google Assistant to your Android apps and create more engaging content on smart displays. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Assistant development made easy with new Android APIs&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://developers.google.com/assistant/app/overview"&gt;App Actions&lt;/a&gt; helps you easily bring Google Assistant to your Android app and complete user queries of all kinds, from booking a ride to posting a message on social media. Companies such as MyFitnessPal and Twitter are already using App Actions to help their users get things done, just by using their voice. You can enable App Actions in &lt;a href="https://developer.android.com/studio"&gt;Android Studio&lt;/a&gt; by mapping built-in intents to specific features and experiences within your apps. Here are new ways you can help users easily navigate your content through voice queries and proactive suggestions. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Better support for Assistant built-in intents with Capabilities &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://developer.android.com/guide/topics/ui/shortcuts/adding-capabilities"&gt;Capabilities&lt;/a&gt; is a new framework API available in beta today that lets you declare support for common tasks defined by &lt;a href="https://developers.google.com/assistant/app/reference/built-in-intents"&gt;built-in intents&lt;/a&gt;. By leveraging pre-built requests from our catalog of intents, you can offer users ways to jump to specific activities within your app. &lt;/p&gt;&lt;p&gt;For example, the Yahoo Finance app uses Capabilities to let users jump directly to the Verizon stock page just by saying “Hey Google, show me Verizon’s stock on Yahoo Finance.” Similarly, Snapchat users can use their voice to add filters and send them to friends: “Hey Google, send a snap with my Curry sneakers.” &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Improved user discoverability with Shortcuts in Android 12&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://developers.googleblog.com/2020/10/google-assistant-developer-day-new.html"&gt;App shortcuts&lt;/a&gt; are already a popular way to automate most common tasks on Android. Thanks to the new APIs for &lt;a href="https://developers.google.com/assistant/app/dynamic-shortcuts"&gt;Shortcuts&lt;/a&gt; in Android 12, it’s now easier to find all the Assistant queries that are supported with apps. If you build an Android Shortcut, it will automatically show up in the Assistant Shortcuts gallery, so users can choose to set up a personal voice command in your app, when they say “Hey Google, shortcuts.”  &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-WGEG-HNc1l8/YKL01y4mqEI/AAAAAAAAKL8/_W3cMtKltyMAd4M8py4mmdxnPlFucgxdACLcBGAsYHQ/s0/Screen%2BShot%2B2021-05-14%2Bat%2B1.52.44%2BPM.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="3 phones showing shortcuts from Assistant" border="0" data-original-height="988" data-original-width="1494" src="https://1.bp.blogspot.com/-WGEG-HNc1l8/YKL01y4mqEI/AAAAAAAAKL8/_W3cMtKltyMAd4M8py4mmdxnPlFucgxdACLcBGAsYHQ/s0/Screen%2BShot%2B2021-05-14%2Bat%2B1.52.44%2BPM.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Google Assistant can also suggest relevant shortcuts to help drive traffic to your app. For example, when using the eBay app, people will see a suggested Google Assistant Shortcut appear on the screen and have the option to create a shortcut for "show my bids." &lt;/p&gt;&lt;p&gt;We also introduced the &lt;a href="https://developers.google.com/assistant/app/dynamic-shortcuts"&gt;Google Shortcuts Integration library&lt;/a&gt;, which identifies shortcuts pushed by &lt;a href="https://developer.android.com/guide/topics/ui/shortcuts/creating-shortcuts#gsi-library"&gt;Shortcuts Jetpack Module&lt;/a&gt; and makes them available to Assistant for use in managing related voice queries. By doing so, Google Assistant can suggest relevant shortcuts to users and help drive traffic to your app.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Get immediate answers and updates right from Assistant using Widgets, coming soon &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Improvements to Android 12 also makes it easier to discover glanceable content with Widgets by mapping them to specific built-in intents using the Capabilities API. We're also looking at how to easily bring driving optimized widgets to Android Auto in the future. The integration with Assistant will enable one shot answers, quick updates and multi-step interactions with the same widget.  &lt;/p&gt;&lt;p&gt;For example, with Dunkin’s widget implementation, you can say “Hey Google, reorder from Dunkin’ to select from previous drinks and place the order. Strava’s widget helps a user track how many miles they ran in a week by saying “Hey Google, check my miles on Strava”, and it will show up right on the lock screen.  &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-Cen-IDfByGE/YKL4o9ZJ4rI/AAAAAAAAKME/x0mYJOcMu70Nl0yjmf0ICi-WgXrENDWLACLcBGAsYHQ/s0/Screen%2BShot%2B2021-05-17%2Bat%2B4.05.45%2BPM.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Strava widget showing how many miles ran in a week" border="0" data-original-height="914" data-original-width="1048" src="https://1.bp.blogspot.com/-Cen-IDfByGE/YKL4o9ZJ4rI/AAAAAAAAKME/x0mYJOcMu70Nl0yjmf0ICi-WgXrENDWLACLcBGAsYHQ/s0/Screen%2BShot%2B2021-05-17%2Bat%2B4.05.45%2BPM.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;h3&gt;&lt;strong&gt;Build high quality Conversational Actions for smart displays&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Last year, we introduced a number of improvements to the Assistant platform for smart displays, such as &lt;a href="https://developers.google.com/assistant/console/builder"&gt;Actions Builder&lt;/a&gt;, &lt;a href="https://developers.google.com/assistant/conversational/quickstart"&gt;Actions SDK&lt;/a&gt; and new built-in intents to improve the experience for both developers and users. Here are more improvements rolling out soon to make building conversational actions on smart displays even better. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;New features to improve the developer experience&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://developers.google.com/assistant/interactivecanvas"&gt;Interactive Canvas&lt;/a&gt; helps you build touch- and voice-controlled games and storytelling experiences for the Assistant using web technologies like HTML, CSS, and JavaScript. Companies such as CoolGames, Zynga, and GC Turbo have already used Canvas to &lt;a href="https://developers.google.com/assistant/games"&gt;build games for smart displays&lt;/a&gt;.  &lt;/p&gt;&lt;p&gt;Since launch, we've gotten great feedback from developers that it would be simpler and faster to implement core logic in web code. To enable this, the &lt;a href="https://developers.google.com/assistant/interactivecanvas/preview"&gt;Interactive Canvas API&lt;/a&gt; will soon provide access to text-to-speech (TTS), natural language understanding (NLU), and storage APIs that will allow developers to trigger these capabilities from client-side code. These APIs will provide experienced web developers with a familiar development flow and enable more responsive Canvas actions.  &lt;/p&gt;&lt;p&gt;We’re also giving you a wider set of options around how to release your actions. Coming soon, in the &lt;a href="https://console.actions.google.com/"&gt;Actions Console&lt;/a&gt;, you will be able to manage your releases by launching in stages. For example, you can launch to one country first and then expand to more later, or you can launch to just a smaller percentage and gradually roll out over time. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Improving the user experience on smart displays&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;You'll also see improvements that will enhance visual experiences on the smart display. For example, you can now &lt;a href="https://developers.google.com/assistant/interactivecanvas/web-apps#enable_full-screen_mode"&gt;remove the persistent header&lt;/a&gt;, which allows you to utilize full real estate of the device and provide users with fully immersive experiences. &lt;/p&gt;&lt;p&gt;Before Interactive Canvas brought customized touch interfaces to the Smart Display, we provided a simple way to stop TTS from playing by tapping anywhere on the screen of the device. However, with more multi-modal experiences being released on Smart Displays, there are use cases where it is important to continue playing TTS while the user touches the display. Developers will soon have the option to enable persistent TTS for their actions.   &lt;/p&gt;&lt;p&gt;We’ve also added support for long-form media sessions with updates to the &lt;a href="https://developers.google.com/assistant/conversational/prompts-media"&gt;Media API&lt;/a&gt; so you can start playback from a specific moment, resume where a previous session stopped, and adapt conversational responses based on media playback context.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Easier transactions for your voice experiences &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;We know how important it is to have the tools you need to build a successful business on our platform. In October of last year, we made a commitment to make it easier for you to add seamless voice-based and display-based monetization capabilities to your experience. On-device CVC and credit card entry will soon be available on smart displays. Both of these features make &lt;a href="https://developers.google.com/assistant/transactions"&gt;on-device transactions&lt;/a&gt; much easier reducing the need to redirect users to their mobile devices.  &lt;/p&gt;&lt;p&gt;We hope you are able to leverage all these new features to build engaging experiences and reach your users easily,  both on mobile and at home. Check out our technical sessions, workshops and more from &lt;a href="http://goo.gle/io21-googleassistant"&gt;Google I/O on YouTube&lt;/a&gt; and get started with &lt;a href="https://developers.google.com/assistant/app"&gt;App Actions&lt;/a&gt; and &lt;a href="https://developers.google.com/assistant/conversational"&gt;Conversational Actions&lt;/a&gt; today!  &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/HWd67lvvpwQ" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/5222046047928930032/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/05/new-for-io-assistant-tools-and-features.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5222046047928930032" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5222046047928930032" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/HWd67lvvpwQ/new-for-io-assistant-tools-and-features.html" title="New for I/O: Assistant tools and features for Android apps and Smart Displays" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-Gg8JkI1xGV4/YJ7fFpPKzWI/AAAAAAAAKIs/Dsel_SjNircR56RxodBQeZPKll5aNUmhwCLcBGAsYHQ/s72-c/BlogHeader_New_Assistant.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/05/new-for-io-assistant-tools-and-features.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-5241470174672012656</id><published>2021-05-18T13:00:00.007-07:00</published><updated>2021-05-18T13:00:24.077-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ARCore" /><category scheme="http://www.blogger.com/atom/ns#" term="augmented reality" /><category scheme="http://www.blogger.com/atom/ns#" term="I/O" /><category scheme="http://www.blogger.com/atom/ns#" term="Raw Depth" /><category scheme="http://www.blogger.com/atom/ns#" term="Recording and Playback" /><title type="text">Unlock new use cases and increase developer velocity with the latest ARCore updates</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-cHB8s9mFLP8/YKMiHSRvyXI/AAAAAAAAKM8/_81nkbwk_IgegByVqZRkMwjLqe9VlWbgQCLcBGAsYHQ/s0/Google_IO_Comp_V2.jpeg"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-cHB8s9mFLP8/YKMiHSRvyXI/AAAAAAAAKM8/_81nkbwk_IgegByVqZRkMwjLqe9VlWbgQCLcBGAsYHQ/s0/Google_IO_Comp_V2.jpeg"&gt; &lt;p&gt;&lt;em&gt;Posted by Ian Zhang, Product Manager, AR &amp;amp; Zeina Oweis, Product Manager, AR&lt;/em&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-zaJWHU6ItSk/YKMgNf3Uz3I/AAAAAAAAKM0/zczWlE-dKHIyo9x8rk2CRtBz4W58Ag7HwCLcBGAsYHQ/s0/Google_IO_Comp_V2.jpg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Two phones showing animated screens" border="0" data-original-height="1080" data-original-width="1920" src="https://1.bp.blogspot.com/-zaJWHU6ItSk/YKMgNf3Uz3I/AAAAAAAAKM0/zczWlE-dKHIyo9x8rk2CRtBz4W58Ag7HwCLcBGAsYHQ/s0/Google_IO_Comp_V2.jpg"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;ARCore was created to provide developers with simple yet powerful tools to seamlessly blend the digital and physical worlds. Over the last few years, we’ve seen developers create apps that entertain, engage, and help people in different ways–from letting fans interact with their favorite characters, to placing virtual electronics and furniture for the perfect home setup and beyond. &lt;/p&gt;&lt;p&gt;At &lt;a href="https://events.google.com/io/program/products/arcore"&gt;I/O this year,&lt;/a&gt; we continue on the mission of improving and building AR developer tools. With the launch of ARCore 1.24, we’re introducing the Raw Depth API and the Recording and Playback API. These new APIs will enable developers to create new types of AR experiences and speed up their development cycles. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Increase AR realism and precision with depth&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;When we launched the &lt;a href="https://developers.googleblog.com/2020/06/a-new-wave-of-ar-realism-with-arcore-depth-api.html"&gt;Depth API&lt;/a&gt; last year, hundreds of millions of Android devices gained the ability to generate depth maps in real time without needing specialized depth sensors. Data in these depth maps was smoothed, filling in any gaps that would otherwise occur due to missing visual information, making it easy for developers to create depth effects like occlusion.  &lt;/p&gt;&lt;p&gt;The new ARCore Raw Depth API provides more detailed representations of the geometry of objects in the scene by generating “raw” depth maps with corresponding confidence images. These raw depth maps include unsmoothed data points, and the confidence images provide the confidence of the depth estimate for each pixel in the raw depth map.  &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-CZMPVq2irDw/YKMW_NrGxxI/AAAAAAAAKMs/fOJL-iXh9gIudHxoxWp8lL1E1hjyD5icQCLcBGAsYHQ/s0/Screenshot%2B2021-05-17%2B182225.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="4 examples of ARCore Raw Depth API" border="0" data-original-height="948" data-original-width="2298" src="https://1.bp.blogspot.com/-CZMPVq2irDw/YKMW_NrGxxI/AAAAAAAAKMs/fOJL-iXh9gIudHxoxWp8lL1E1hjyD5icQCLcBGAsYHQ/s0/Screenshot%2B2021-05-17%2B182225.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Improved geometry from the Raw Depth API enables more accurate depth measurements and spatial awareness. In the ARConnect app, these more accurate measurements give users a deeper understanding of their physical surroundings. The AR Doodads app utilizes raw depth’s spatial awareness to allow users to build realistic virtual Rube Goldberg machines. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-FpTmoUycktE/YKLrEXQic7I/AAAAAAAAKK8/tAlLB1ctX10Jr08l_rxPZovNyD6glfVRgCLcBGAsYHQ/s0/final_60a2e9bd43c404004b991080_104961.gif" style="display: block; padding: 1em 0px; text-align: center;"&gt;&lt;img alt="ARConnect by PHORIA (left) and AR Doodads by Jam3 (right) use the improved geometry from the Raw Depth AP" border="0" data-original-height="720" data-original-width="1280" src="https://1.bp.blogspot.com/-FpTmoUycktE/YKLrEXQic7I/AAAAAAAAKK8/tAlLB1ctX10Jr08l_rxPZovNyD6glfVRgCLcBGAsYHQ/s0/final_60a2e9bd43c404004b991080_104961.gif" style="width: 100;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p id="imgCaption"&gt;&lt;em&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.phoria.arconnect"&gt;ARConnect by PHORIA&lt;/a&gt; (left) and &lt;a href="https://play.google.com/store/apps/details?id=com.jam3.arlabs"&gt;AR Doodads by Jam3&lt;/a&gt; (right) use the improved geometry from the Raw Depth API&lt;/em&gt;&lt;/p&gt; &lt;p&gt;The confidence image in the Raw Depth API allows developers to filter depth data in real time. For example, TikTok’s newest effect enables users to upload an image and wrap it onto real world objects. The image conforms to surfaces where there is high confidence in the underlying depth estimate. The ability for developers to filter for high confidence depth data is also essential for 3D object and scene reconstruction. This can be seen in the 3D Live Scanner app, which enables users to scan their space and create, edit, and share 3D models. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-GzENbVfj0aE/YKLtt57jBAI/AAAAAAAAKLE/n5OYE9PA2Vw5jGoXcF090GJ568td8dspQCLcBGAsYHQ/s0/final_60a2ecc35f56660052d909ab_259614.gif" style="display: block; padding: 1em 0px; text-align: center;"&gt;&lt;img alt="TikTok by TikTok Pte. Ltd. (left) and  3D Live Scanner by Lubos Vonasek Programmierung (right) use confidence images from the ARCore Raw Depth API" border="0" data-original-height="720" data-original-width="1280" src="https://1.bp.blogspot.com/-GzENbVfj0aE/YKLtt57jBAI/AAAAAAAAKLE/n5OYE9PA2Vw5jGoXcF090GJ568td8dspQCLcBGAsYHQ/s0/final_60a2ecc35f56660052d909ab_259614.gif" style="width: 100%;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p id="imgCaption"&gt;&lt;em&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.ss.android.ugc.trill&amp;amp;hl=en_US&amp;amp;gl=US"&gt;TikTok by TikTok Pte. Ltd.&lt;/a&gt; (left) and  &lt;a href="https://play.google.com/store/apps/details?id=com.lvonasek.arcore3dscanner"&gt;3D Live Scanner by Lubos Vonasek Programmierung&lt;/a&gt; (right) use confidence images from the ARCore Raw Depth API &lt;/em&gt;&lt;/p&gt; &lt;p&gt;We’re also introducing a new type of hit-test that uses the geometry from the depth map to provide more hit-test results, even in low-texture and non-planar areas. Previously, hit-test worked best on surfaces with lots of visual features. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-f0KLRFABK4Q/YKLucvHLCeI/AAAAAAAAKLM/Q73V62-bGswCnQHWHh2nBOFLUF2FhujfQCLcBGAsYHQ/s0/image%2B5.gif" style="display: block; padding: 1em 0px; text-align: center;"&gt;&lt;img alt="" border="0" data-original-height="540" data-original-width="675" src="https://1.bp.blogspot.com/-f0KLRFABK4Q/YKLucvHLCeI/AAAAAAAAKLM/Q73V62-bGswCnQHWHh2nBOFLUF2FhujfQCLcBGAsYHQ/s0/image%2B5.gif" /&gt;&lt;/a&gt;&lt;/div&gt; &lt;div align="left" dir="ltr" style="margin-left:0pt;"&gt;    &lt;table style="border: none; border-collapse: collapse; margin-left: calc(7%); width: 93%;"&gt;        &lt;tbody&gt;            &lt;tr style="height:0pt;"&gt;                &lt;td style="border-width: 1pt; border-style: solid; border-color: rgb(255, 255, 255); vertical-align: top; padding: 5pt; overflow: hidden; overflow-wrap: break-word; width: 58.5888%;"&gt;                    &lt;p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"&gt;&lt;span style="font-size:9pt;font-family:'Google Sans',sans-serif;color:#121215;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"&gt;Hit Results with&lt;/span&gt;&lt;span style="font-size:9pt;font-family:'Google Sans',sans-serif;color:#666666;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:9pt;font-family:'Google Sans',sans-serif;color:#34a853;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"&gt;Planes (left)&lt;/span&gt;&lt;/p&gt;                    &lt;p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"&gt;&lt;span style="font-size:9pt;font-family:'Google Sans',sans-serif;color:#121215;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"&gt;Works best on horizontal, planar surfaces with&amp;nbsp;&lt;/span&gt;&lt;/p&gt;                    &lt;p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"&gt;&lt;span style="font-size:9pt;font-family:'Google Sans',sans-serif;color:#121215;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"&gt;good texture&lt;/span&gt;&lt;/p&gt;                &lt;/td&gt;                &lt;td style="border-width: 1pt; border-style: solid; border-color: rgb(255, 255, 255); vertical-align: top; padding: 5pt; overflow: hidden; overflow-wrap: break-word; width: 41.2857%;"&gt;                    &lt;p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"&gt;&lt;span style="font-size:9pt;font-family:'Google Sans',sans-serif;color:#121215;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"&gt;Hit Results with&lt;/span&gt;&lt;span style="font-size:9pt;font-family:'Google Sans',sans-serif;color:#666666;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:9pt;font-family:'Google Sans',sans-serif;color:#e94235;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"&gt;Depth (right)&lt;/span&gt;&lt;/p&gt;                    &lt;p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"&gt;&lt;span style="font-size:9pt;font-family:'Google Sans',sans-serif;color:#121215;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"&gt;Gives more results, even on non-planar or&lt;/span&gt;&lt;span style="font-size:9pt;font-family:'Google Sans',sans-serif;color:#121215;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="font-size:9pt;font-family:'Google Sans',sans-serif;color:#121215;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"&gt;low-texture areas&lt;/span&gt;&lt;/p&gt;                &lt;/td&gt;            &lt;/tr&gt;        &lt;/tbody&gt;    &lt;/table&gt;&lt;/div&gt; &lt;p&gt;The lifeAR app uses this improved hit-test to bring AR to video calls. Users see accurate virtual annotations on the real-world objects as they tap into the expertise of their social circle for instant help to tackle everyday problems. &lt;/p&gt; &lt;center&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-caAZAbEdfww/YKLwOUB2FSI/AAAAAAAAKLU/TLkfOmWW9pY7oW9pznrKtZS30jE20TY0wCLcBGAsYHQ/s0/image%2B6.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:50%" alt="" border="0" data-original-height="1260" data-original-width="620" src="https://1.bp.blogspot.com/-caAZAbEdfww/YKLwOUB2FSI/AAAAAAAAKLU/TLkfOmWW9pY7oW9pznrKtZS30jE20TY0wCLcBGAsYHQ/s0/image%2B6.gif"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/center&gt;&lt;p id="imgCaption"&gt;&lt;em&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.teamviewer.lifear"&gt;lifeAR by TeamViewer&lt;/a&gt; uses the improved depth hit-test&lt;/em&gt;&lt;/p&gt; &lt;p&gt;As with the previous Depth API, these updates leverage depth from motion, making them available on hundreds of millions of Android devices without relying on specialized sensors. Although depth sensors such as time-of-flight (ToF) sensors are not required, having them will further improve the quality of your experiences. &lt;/p&gt;&lt;p&gt;In addition to these apps, the &lt;a href="https://github.com/googlesamples/arcore-depth-lab"&gt;ARCore Depth Lab&lt;/a&gt; has been updated with examples of both the Raw Depth API and the depth hit-test. You can find those and more on the &lt;a href="https://developers.google.com/ar/develop/java/depth/overview"&gt;Depth API documentation page&lt;/a&gt; and start building with Android and Unity today.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Increase developer velocity and post-capture AR&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;A recurring pain point for AR developers is the need to continually test in specific places and scenarios. Developers may not always have access to the location, lighting will change, and sensors won’t catch the exact same information during every live camera session. &lt;/p&gt;&lt;p&gt;The new ARCore Recording and Playback API addresses this by enabling developers to record not just video footage, but also IMU and depth sensor data. On playback, this same data can be accessed, enabling developers to duplicate the exact same scenario and test the experience from the comfort of their workspace. &lt;/p&gt;&lt;p&gt;DiDi used the Recording and Playback API to build and test AR directions in their DiDi-Rider app. They were able to save 25% on R&amp;D and testing costs, 60% on travel costs, and accelerated their development cycle by 6 months. &lt;/p&gt; &lt;center&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-NckdYGIymME/YKLxGe5fouI/AAAAAAAAKLc/QeEU15BL1Q4fdkcktFu-6Xp6nX-Lz1RkgCLcBGAsYHQ/s0/image%2B7.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:50%" alt="DiDi-Rider by Didi Chuxing saves on development resources with the Recording and Playback API" border="0" data-original-height="1260" data-original-width="620" src="https://1.bp.blogspot.com/-NckdYGIymME/YKLxGe5fouI/AAAAAAAAKLc/QeEU15BL1Q4fdkcktFu-6Xp6nX-Lz1RkgCLcBGAsYHQ/s0/image%2B7.gif"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/center&gt;&lt;p id="imgCaption"&gt;&lt;em&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.didiglobal.passenger&amp;hl=en_US&amp;gl=US"&gt;DiDi-Rider by Didi Chuxing&lt;/a&gt; saves on development resources with the Recording and Playback API&lt;/em&gt;&lt;/p&gt; &lt;p&gt;In addition to increasing developer velocity, recording and playback unlocks opportunities for new AR experiences, such as post-capture AR. Using videos enables asynchronous AR experiences that remove time and place constraints. For instance, when visualizing AR furniture, users no longer have to be in their home. They can instead pull up a video of their home and accurately place AR assets, enabling them to “take AR anywhere”.  &lt;/p&gt;&lt;p&gt;Jump AR by SK Telecom uses the Recording and Playback API to transport scenes from South Korea right into users’ homes to augment with culturally relevant volumetric and 3D AR content.  &lt;/p&gt; &lt;center&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-fJJ9FQhZc_w/YKLxrKQg9AI/AAAAAAAAKLk/wDXLBg92Rfobyek6zzuipZ7XUbOE_eQXQCLcBGAsYHQ/s0/image%2B8.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:50%" alt="JumpAR by SKT uses Recording and Playback to bring SouthKorea to your home" border="0" data-original-height="540" data-original-width="405" src="https://1.bp.blogspot.com/-fJJ9FQhZc_w/YKLxrKQg9AI/AAAAAAAAKLk/wDXLBg92Rfobyek6zzuipZ7XUbOE_eQXQCLcBGAsYHQ/s0/image%2B8.gif"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/center&gt;&lt;p id="imgCaption"&gt;&lt;em&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.skt.massivear"&gt;JumpAR by SKT&lt;/a&gt; uses Recording and Playback to bring SouthKorea to your home&lt;/em&gt;&lt;/p&gt; &lt;p&gt;VoxPlop! by Nexus Studios is experimenting with the notion of Spatial Video co-creation, where users can reach in and interact with a recorded space rather than simply placing content on top of a video. The Recording and Playback API enables users to record videos, drop in 3D characters and messages, and share them with family and friends. &lt;/p&gt; &lt;center&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-q3zmsRTPa-c/YKLyF699xpI/AAAAAAAAKLs/DCNiXihvVLM7s7iixeTtZSB3AnS0cRU_gCLcBGAsYHQ/s0/image%2B9.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:50%" alt="VoxPlop! by Nexus Studios uses the Recording and Playback API to experiment with Spatial Video co-creation" border="0" data-original-height="540" data-original-width="405" src="https://1.bp.blogspot.com/-q3zmsRTPa-c/YKLyF699xpI/AAAAAAAAKLs/DCNiXihvVLM7s7iixeTtZSB3AnS0cRU_gCLcBGAsYHQ/s0/image%2B9.gif"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/center&gt;&lt;p id="imgCaption"&gt;&lt;em&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.NexusStudios.voxplop"&gt;VoxPlop! by Nexus Studios&lt;/a&gt; uses the Recording and Playback API to experiment with Spatial Video co-creation&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Learn more and get started with the &lt;a href="https://developers.google.com/ar/develop/java/recording-and-playback"&gt;Recording and Playback API docs&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Get started with ARCore today&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;These latest ARCore updates round out a robust set of powerful developer tools for creating engaging and realistic AR experiences. With over a billion lifetime installs and 850 million compatible devices, ARCore makes augmented reality accessible to nearly everyone with a smartphone. We're looking forward to seeing how you innovate and reach more users with ARCore. To learn more and get started with the new APIs, visit the &lt;a href="https://developers.google.com/ar/develop"&gt;ARCore developer website&lt;/a&gt;. &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/foS6QQINJBM" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/5241470174672012656/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/05/unlock-use-cases-and-increase-developer-velocity-with-new-capabilities-in-arcore.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5241470174672012656" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5241470174672012656" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/foS6QQINJBM/unlock-use-cases-and-increase-developer-velocity-with-new-capabilities-in-arcore.html" title="Unlock new use cases and increase developer velocity with the latest ARCore updates" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-cHB8s9mFLP8/YKMiHSRvyXI/AAAAAAAAKM8/_81nkbwk_IgegByVqZRkMwjLqe9VlWbgQCLcBGAsYHQ/s72-c/Google_IO_Comp_V2.jpeg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/05/unlock-use-cases-and-increase-developer-velocity-with-new-capabilities-in-arcore.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-4606426050125091398</id><published>2021-05-18T11:30:00.010-07:00</published><updated>2021-05-19T15:22:45.142-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="google pay" /><category scheme="http://www.blogger.com/atom/ns#" term="google pay api" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Pay Developers" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play Developers" /><category scheme="http://www.blogger.com/atom/ns#" term="online payments" /><category scheme="http://www.blogger.com/atom/ns#" term="payment request api" /><category scheme="http://www.blogger.com/atom/ns#" term="Web payments" /><title type="text">Google Pay integration patterns that drive conversions on Android</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-jAFuRzGpjDI/YKKn54sjg5I/AAAAAAAAKKc/CIT0MCq3-dc8aDb67nAy7xbYMBAAgARzQCLcBGAsYHQ/s0/Google_GooglePayForAndroid-V3.png"&gt;  &lt;img style="display:none" src="https://1.bp.blogspot.com/-jAFuRzGpjDI/YKKn54sjg5I/AAAAAAAAKKc/CIT0MCq3-dc8aDb67nAy7xbYMBAAgARzQCLcBGAsYHQ/s0/Google_GooglePayForAndroid-V3.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Jose Ugia, Developer Relations Engineer, Google Pay &amp; Anthony Panissidi, Technical Writer, Google Developer Studio&lt;/em&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-jAFuRzGpjDI/YKKn54sjg5I/AAAAAAAAKKc/CIT0MCq3-dc8aDb67nAy7xbYMBAAgARzQCLcBGAsYHQ/s0/Google_GooglePayForAndroid-V3.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="How to drive conversions with Google Pay for Android" border="0" data-original-height="1067" data-original-width="2134" src="https://1.bp.blogspot.com/-jAFuRzGpjDI/YKKn54sjg5I/AAAAAAAAKKc/CIT0MCq3-dc8aDb67nAy7xbYMBAAgARzQCLcBGAsYHQ/s0/Google_GooglePayForAndroid-V3.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;What do Gilt, MTS, Panera Bread, and SpotHero have in common? &lt;/p&gt;&lt;p&gt;At first glance, you probably only see four totally different businesses: &lt;/p&gt;&lt;ul&gt; &lt;li&gt;Gilt is an online shopping and lifestyle website.  &lt;li&gt;MTS is a mobile network operator with 80 million users in Armenia, Belarus, and Russia.  &lt;li&gt;Panera Bread is a chain of more than 2,000 fast-casual bakery-cafe restaurants in the US and Canada.  &lt;li&gt;SpotHero is a digital parking marketplace that lets drivers reserve and pay for parking spots in more than 300 cities in the US and Canada. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;However, all four businesses partnered with us to identify and adopt integration patterns that drive the most conversions on Google Pay for Android. In this blog post, we share these proven integration practices so that you can get the most out of Google Pay in your Android apps, as well as additional security tips that you can use to further secure your payment flows. &lt;/p&gt;&lt;h2&gt;UI and UX patterns&lt;/h2&gt;  &lt;p&gt;Take a look at the following strategies to improve user experience in your app: &lt;/p&gt;&lt;ul&gt; &lt;li&gt;Payment-method selection  &lt;li&gt;Express checkout  &lt;li&gt;Guest checkout  &lt;li&gt;Payment notifications &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Payment-method selection&lt;/h3&gt;  &lt;p&gt;If you set Google Pay as a default payment option for ready-to-pay users, your users only need to click or tap twice to complete their transactions, so they enjoy a more-seamless payment experience and they're less likely to abandon their carts. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-5Xgd5D8wujc/YKKcBXOCwzI/AAAAAAAAKJU/AvC_gNrzLFgWKCyqIxYnykQ-39QPCvtjACLcBGAsYHQ/s0/Untitled.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Phone with Gilt user interface" border="0" data-original-height="646" data-original-width="1142" src="https://1.bp.blogspot.com/-5Xgd5D8wujc/YKKcBXOCwzI/AAAAAAAAKJU/AvC_gNrzLFgWKCyqIxYnykQ-39QPCvtjACLcBGAsYHQ/s0/Untitled.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Our partners who implemented this pattern reported a significant increase in their success metrics. For example, at Gilt, 34% of total Google Pay checkouts were net-new Gilt member conversions and 57% of total Google Pay checkouts were reactivations of lapsed Gilt members.&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-p22duFt0U3I/YKKcXxoGwAI/AAAAAAAAKJc/DoP9budWXbcSZnrqi9i3PekxZYfFNgDgwCLcBGAsYHQ/s0/image%2B2.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Gilt member conversions increase" border="0" data-original-height="641" data-original-width="1129" src="https://1.bp.blogspot.com/-p22duFt0U3I/YKKcXxoGwAI/AAAAAAAAKJc/DoP9budWXbcSZnrqi9i3PekxZYfFNgDgwCLcBGAsYHQ/s0/image%2B2.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;h3&gt;Express checkout&lt;/h3&gt;  &lt;p&gt;This feature lets your users purchase an item directly from the item's detail page without adding it to a cart, which shortens their path to purchase completion.  &lt;/p&gt;&lt;p&gt;For example, Gilt integrated this feature into their checkout process so its users can complete the checkout process with only a few clicks or taps. The Google Pay button on their product page lets users move directly to checkout with Google Pay set as a default payment option. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-fYWlizq8XXo/YKKk6a7LRII/AAAAAAAAKJs/Mn_gu_qw2c8RQm_jO86mKkbrW0qU4D9uwCLcBGAsYHQ/s0/image%2B3.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Gilt Google Pay Integration" border="0" data-original-height="646" data-original-width="1141" src="https://1.bp.blogspot.com/-fYWlizq8XXo/YKKk6a7LRII/AAAAAAAAKJs/Mn_gu_qw2c8RQm_jO86mKkbrW0qU4D9uwCLcBGAsYHQ/s0/image%2B3.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;h3&gt;Guest checkout&lt;/h3&gt;  &lt;p&gt;This feature makes it easier for your users to complete purchases and convert, and more likely to create an account and engage again later. &lt;/p&gt;&lt;p&gt;To enable guest checkout, add Google Pay as an option to continue with the payment process alongside your account-creation elements.  &lt;/p&gt;&lt;p&gt;For example, Panera Bread enabled guest checkout, and found a 7% increase in order value and 30% increase in wallet share. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-rm7nVtaOumc/YKKlvIpZWVI/AAAAAAAAKJ0/VnjZ8GfCcaUsHNlis6gZ6bsXkNtDC9pUQCLcBGAsYHQ/s0/image_4%2B%25281%2529.jpeg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Panera increase in order value and wallet share" border="0" data-original-height="720" data-original-width="1280" src="https://1.bp.blogspot.com/-rm7nVtaOumc/YKKlvIpZWVI/AAAAAAAAKJ0/VnjZ8GfCcaUsHNlis6gZ6bsXkNtDC9pUQCLcBGAsYHQ/s0/image_4%2B%25281%2529.jpeg"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;As another example, SpotHero enabled guest checkout, and found that its sales funnel increased by 20 times while 87% of total checkouts were completed with Google Pay.&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-P86L6aa3wCU/YKKmYNjrTFI/AAAAAAAAKJ8/ndW_q_IKbQEGBdtWhatZVsUIDfn89tsGACLcBGAsYHQ/s0/Untitled_%25284%2529.jpeg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="SpotHero increase in sales and total checkouts" border="0" data-original-height="720" data-original-width="1280" src="https://1.bp.blogspot.com/-P86L6aa3wCU/YKKmYNjrTFI/AAAAAAAAKJ8/ndW_q_IKbQEGBdtWhatZVsUIDfn89tsGACLcBGAsYHQ/s0/Untitled_%25284%2529.jpeg"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;h3&gt;Payment notifications&lt;/h3&gt;  &lt;p&gt;This feature lets your users pay directly from notifications, which reduces friction in the payment process and further increases conversions.  &lt;/p&gt;&lt;p&gt;Users sometimes receive payment notifications that they expect, such as after they abandon carts, make donations, or need to add credit to a prepaid card. They typically find these transactions simple and familiar, so they're ready to pay quickly with a little nudge. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-kk8Z8yO4nDo/YKKmrv3_3pI/AAAAAAAAKKE/5phA65KDxqMvJiefhOmXY_Bm6OCApNmdQCLcBGAsYHQ/s0/Untitled%2B%25285%2529.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="MTS credit adding option interface" border="0" data-original-height="649" data-original-width="1141" src="https://1.bp.blogspot.com/-kk8Z8yO4nDo/YKKmrv3_3pI/AAAAAAAAKKE/5phA65KDxqMvJiefhOmXY_Bm6OCApNmdQCLcBGAsYHQ/s0/Untitled%2B%25285%2529.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;MTS adopted this pattern to let their customers add credit to their accounts directly from notifications and experienced a 80% increase in conversions.&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-grIo8Cgc0oU/YKKtlCTyHXI/AAAAAAAAKKk/6aphbeXGNwQ5qXoEZ0KOum_doo6SbZEOgCLcBGAsYHQ/s0/Screen%2BShot%2B2021-05-17%2Bat%2B10.49.58%2BAM.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="MTS users in Russia and increase in conversions" border="0" data-original-height="814" data-original-width="1466" src="https://1.bp.blogspot.com/-grIo8Cgc0oU/YKKtlCTyHXI/AAAAAAAAKKk/6aphbeXGNwQ5qXoEZ0KOum_doo6SbZEOgCLcBGAsYHQ/s0/Screen%2BShot%2B2021-05-17%2Bat%2B10.49.58%2BAM.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;h4&gt;Learn more&lt;/h4&gt;  &lt;p&gt;For more information about how to implement these UI and UX patterns, see our &lt;a href="https://github.com/google-pay/android-quickstart/tree/notifications"&gt;sample open source app&lt;/a&gt; and &lt;a href="http://goo.gle/pay-integration-patterns"&gt;developer documentation&lt;/a&gt;. &lt;/p&gt;&lt;h2&gt;Security tips&lt;/h2&gt;  &lt;p&gt;Before we go, we also want to share these security tips to further secure your payment flows: &lt;/p&gt;&lt;ul&gt; &lt;li&gt;Use SSL for all connections between your apps and backend services over the public internet.  &lt;li&gt;Do not collect or store payment data, or any other sensitive information in the clear within your app.  &lt;li&gt;Order price can be calculated on the client side to show it in your UI and keep the user informed, but only allow for payments with calculations applied in your backend services.&lt;/li&gt;&lt;/ul&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-bQEtpt0vRSM/YKKnYW2EzMI/AAAAAAAAKKU/zYtIqdeTpUcVqWm6W-3kmSlgKK8L8ZCXwCLcBGAsYHQ/s0/image%2B10.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Security Basics" border="0" data-original-height="642" data-original-width="1143" src="https://1.bp.blogspot.com/-bQEtpt0vRSM/YKKnYW2EzMI/AAAAAAAAKKU/zYtIqdeTpUcVqWm6W-3kmSlgKK8L8ZCXwCLcBGAsYHQ/s0/image%2B10.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;h2&gt;Learn more&lt;/h2&gt;  &lt;p&gt;Want to learn more about Google Pay? Here's what you can do:  &lt;/p&gt;&lt;ul&gt; &lt;li&gt;To get started with Google Pay, see &lt;a href="http://g.co/pay/api"&gt;our developer documentation&lt;/a&gt;.   &lt;li&gt;To integrate with Google Pay, visit &lt;a href="https://pay.google.com/business/console?utm_source=gdev-blogger&amp;utm_medium=blog&amp;utm_campaign=integration"&gt;Google Pay's Business Console&lt;/a&gt;.  &lt;li&gt;Follow &lt;a href="https://twitter.com/GooglePayDevs?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor"&gt;@GooglePayDevs&lt;/a&gt; on Twitter for future updates. If you have questions, tag &lt;a href="https://twitter.com/GooglePayDevs?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor"&gt;@GooglePayDevs&lt;/a&gt; and include #AskGooglePayDevs in your tweets.&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/r2hxTcMn794" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/4606426050125091398/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/05/google-pay-integration-patterns-that-drive-conversions-on-android.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/4606426050125091398" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/4606426050125091398" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/r2hxTcMn794/google-pay-integration-patterns-that-drive-conversions-on-android.html" title="Google Pay integration patterns that drive conversions on Android" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-jAFuRzGpjDI/YKKn54sjg5I/AAAAAAAAKKc/CIT0MCq3-dc8aDb67nAy7xbYMBAAgARzQCLcBGAsYHQ/s72-c/Google_GooglePayForAndroid-V3.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/05/google-pay-integration-patterns-that-drive-conversions-on-android.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-5827007595633336014</id><published>2021-05-18T10:30:00.003-07:00</published><updated>2021-05-19T14:37:19.459-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="google pay" /><category scheme="http://www.blogger.com/atom/ns#" term="google pay api" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Pay Developers" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play Developers" /><category scheme="http://www.blogger.com/atom/ns#" term="online payments" /><category scheme="http://www.blogger.com/atom/ns#" term="payment request api" /><category scheme="http://www.blogger.com/atom/ns#" term="Web payments" /><title type="text">Updated Google Pay app offers more consumer touchpoints</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-Fq1b8rmUvEI/YKLhCQlBOvI/AAAAAAAAKKs/Iji4DpVYflYDoUGlwzmP4T4i8iJDr73SgCLcBGAsYHQ/s0/Google_SCAcompliant-02.png"&gt;  &lt;img style="display:none" src="https://1.bp.blogspot.com/-Fq1b8rmUvEI/YKLhCQlBOvI/AAAAAAAAKKs/Iji4DpVYflYDoUGlwzmP4T4i8iJDr73SgCLcBGAsYHQ/s0/Google_SCAcompliant-02.png"&gt;  &lt;p&gt;&lt;em&gt;Posted by Soc Sieng, Developer Advocate, Payments &amp;amp; Ola Ben Har, Payments DevRel Lead&lt;/em&gt;&lt;/p&gt;    &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-Fq1b8rmUvEI/YKLhCQlBOvI/AAAAAAAAKKs/Iji4DpVYflYDoUGlwzmP4T4i8iJDr73SgCLcBGAsYHQ/s0/Google_SCAcompliant-02.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="What's new in Google Pay header" border="0" data-original-height="1025" data-original-width="2048" src="https://1.bp.blogspot.com/-Fq1b8rmUvEI/YKLhCQlBOvI/AAAAAAAAKKs/Iji4DpVYflYDoUGlwzmP4T4i8iJDr73SgCLcBGAsYHQ/s0/Google_SCAcompliant-02.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;We redesigned the Google Pay app to boost user engagement with your business. &lt;/p&gt;&lt;p&gt;The redesigned app makes it easy for users to find your business and provides you with a branded surface that lets you build relationships with your customers at scale. &lt;/p&gt;&lt;p&gt;The app is available in the App Store and Google Play Store in the US, India, and Singapore with availability in more markets on the way. In this blog post, we focus on features available in the US version of the app. &lt;/p&gt;&lt;h2&gt;New in Google Pay&lt;/h2&gt;  &lt;p&gt;The Google Pay app focuses on users' relationships with people, businesses, and other everyday essentials. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-P1x_8rUR4J4/YKPxjGSHZoI/AAAAAAAAKNM/BB4fZB-a9J41unVQl_6zFlyyHla-SYu2QCLcBGAsYHQ/s0/IO21_360_What%2527s%2Bnew%2Bin%2BGoogle%2BPay_slide.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Centers around your relationships" border="0" data-original-height="1152" data-original-width="2048" src="https://1.bp.blogspot.com/-P1x_8rUR4J4/YKPxjGSHZoI/AAAAAAAAKNM/BB4fZB-a9J41unVQl_6zFlyyHla-SYu2QCLcBGAsYHQ/s0/IO21_360_What%2527s%2Bnew%2Bin%2BGoogle%2BPay_slide.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;The app lets users send money, save money, and see spending insights. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-WeLNBtaHt5g/YKPycPo24qI/AAAAAAAAKNc/iJhw5ObkhSIDHVAI-ZSZHUCVQ7afQRXngCLcBGAsYHQ/s0/IO21_360_What%2527s%2Bnew%2Bin%2BGoogle%2BPay_slide%2B%25281%2529.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Understand and organize money" border="0" data-original-height="1152" data-original-width="2048" src="https://1.bp.blogspot.com/-WeLNBtaHt5g/YKPycPo24qI/AAAAAAAAKNc/iJhw5ObkhSIDHVAI-ZSZHUCVQ7afQRXngCLcBGAsYHQ/s0/IO21_360_What%2527s%2Bnew%2Bin%2BGoogle%2BPay_slide%2B%25281%2529.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;It makes it easy for users to save money at their favorite businesses and discover new ones.&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-9O8gWAOunMo/YKPytczfWKI/AAAAAAAAKNk/2zj11CSRFcEpTVHt7D-cEXM1iQ3u-w1aACLcBGAsYHQ/s0/IO21_360_What%2527s%2Bnew%2Bin%2BGoogle%2BPay_slide%2B%25282%2529.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Save money and discover businesses" border="0" data-original-height="1152" data-original-width="2048" src="https://1.bp.blogspot.com/-9O8gWAOunMo/YKPytczfWKI/AAAAAAAAKNk/2zj11CSRFcEpTVHt7D-cEXM1iQ3u-w1aACLcBGAsYHQ/s0/IO21_360_What%2527s%2Bnew%2Bin%2BGoogle%2BPay_slide%2B%25282%2529.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;It also provides your brand with another surface to initiate meaningful reengagement with your customers. The branded experience is automatically created when customers check out with Google Pay or a Google Pay-enrolled card in the app, in stores, or online. This dedicated space for your business is also where customers can redeem offers, sign up for loyalty rewards, and view their transaction histories.&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-tU9Ifqs1gq4/YKPy9KuZCII/AAAAAAAAKNs/kPQpzbgrBeoOz8oa8g_XbstgGw_R1JTjwCLcBGAsYHQ/s0/IO21_360_What%2527s%2Bnew%2Bin%2BGoogle%2BPay_slide%2B%25283%2529.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Branded experience" border="0" data-original-height="1152" data-original-width="2048" src="https://1.bp.blogspot.com/-tU9Ifqs1gq4/YKPy9KuZCII/AAAAAAAAKNs/kPQpzbgrBeoOz8oa8g_XbstgGw_R1JTjwCLcBGAsYHQ/s0/IO21_360_What%2527s%2Bnew%2Bin%2BGoogle%2BPay_slide%2B%25283%2529.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;h2&gt;How it works&lt;/h2&gt;  &lt;p&gt;Google Pay's new features are only part of the story. &lt;/p&gt;&lt;p&gt;Behind the scenes, we worked on the Google Pay APIs and developer tools to enable those experiences, help you acquire new customers, and better serve existing ones.  &lt;/p&gt;&lt;h3&gt;Google Pay APIs for Web and Android &lt;/h3&gt;  &lt;p&gt;Google Pay APIs for Web and Android enable your transaction history within your branded experience on Google Pay in addition to contactless payments in store. After a user makes a purchase with Google Pay or a Google Pay-enrolled card, they can search for your brand and view their transaction history in Google Pay.   &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-36dGfSdW1QQ/YKMHP6DfR3I/AAAAAAAAKMM/DQ89RRUcITgge7U_tRjAvBRmXxcOTi-ggCLcBGAsYHQ/s0/Screen%2BShot%2B2021-05-17%2Bat%2B4.29.28%2BPM.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Two phones showing inside your app and inside google pay" border="0" data-original-height="620" data-original-width="1101" src="https://1.bp.blogspot.com/-36dGfSdW1QQ/YKMHP6DfR3I/AAAAAAAAKMM/DQ89RRUcITgge7U_tRjAvBRmXxcOTi-ggCLcBGAsYHQ/s0/Screen%2BShot%2B2021-05-17%2Bat%2B4.29.28%2BPM.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;When you integrate with the Google Pay APIs, you're not only providing a convenient and secure checkout option in your app or on your website, but you also let your users track their transactions, independent of the channel, in one central place. Your brand becomes searchable for millions of active Google Pay users, which provides you with more reengagement opportunities. &lt;/p&gt;&lt;h3&gt;Loyalty Enrollment and Sign-in API&lt;/h3&gt;  &lt;p&gt;The Loyalty Enrollment and Sign-in API lets users discover, and sign up or sign in to your loyalty program from your branded experience with a few taps in Google Pay.  &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-NSvuuvEfY_M/YKPzQa-UXaI/AAAAAAAAKN0/p0jAqLK4K_4oPhGWAAoY4iq_iAxlEjKKQCLcBGAsYHQ/s0/IO21_360_What%2527s%2Bnew%2Bin%2BGoogle%2BPay_slide%2B%25284%2529.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Loyalty enrollment and sign-in API" border="0" data-original-height="1152" data-original-width="2048" src="https://1.bp.blogspot.com/-NSvuuvEfY_M/YKPzQa-UXaI/AAAAAAAAKN0/p0jAqLK4K_4oPhGWAAoY4iq_iAxlEjKKQCLcBGAsYHQ/s0/IO21_360_What%2527s%2Bnew%2Bin%2BGoogle%2BPay_slide%2B%25284%2529.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;When users sign up, they provide their consent and Google Pay securely shares sign-up details with your loyalty program’s sign-up process. They can use information that they already saved to their Google Accounts, which makes the sign-up process a snap. Afterward, users can easily access their loyalty passes at checkout. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-6xtNmKn0XfE/YKPzeHEaJgI/AAAAAAAAKN4/SBUloMTcQZcEMRuGPsskaibEjsao8oscwCLcBGAsYHQ/s0/IO21_360_What%2527s%2Bnew%2Bin%2BGoogle%2BPay_slide%2B%25285%2529.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="4 phones" border="0" data-original-height="1152" data-original-width="2048" src="https://1.bp.blogspot.com/-6xtNmKn0XfE/YKPzeHEaJgI/AAAAAAAAKN4/SBUloMTcQZcEMRuGPsskaibEjsao8oscwCLcBGAsYHQ/s0/IO21_360_What%2527s%2Bnew%2Bin%2BGoogle%2BPay_slide%2B%25285%2529.png"/&gt;&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;That does it for now, but these updates are only the beginning, so stay tuned for more news in this space!&lt;/p&gt;&lt;h2&gt;Learn more&lt;/h2&gt;&lt;p&gt;Want to learn more about Google Pay? Here's what you can do:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;To get started with Google Pay, see &lt;a href="http://g.co/pay/api"&gt;our developer documentation&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;To integrate with Google Pay, visit &lt;a href="https://pay.google.com/business/console?utm_source=gdev-blogger&amp;amp;utm_medium=blog&amp;amp;utm_campaign=whats%20new"&gt;Google Pay's Business Console&lt;/a&gt;. &lt;li&gt;Follow &lt;a href="https://twitter.com/GooglePayDevs?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor"&gt;@GooglePayDevs&lt;/a&gt; on Twitter for future updates. If you have questions, tag &lt;a href="https://twitter.com/GooglePayDevs?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor"&gt;@GooglePayDevs&lt;/a&gt; and include #AskGooglePayDevs in your tweets.&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/xR4xJcssKCQ" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/5827007595633336014/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/05/updated-google-pay-app-offers-more-consumer-touchpoints.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5827007595633336014" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5827007595633336014" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/xR4xJcssKCQ/updated-google-pay-app-offers-more-consumer-touchpoints.html" title="Updated Google Pay app offers more consumer touchpoints" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-Fq1b8rmUvEI/YKLhCQlBOvI/AAAAAAAAKKs/Iji4DpVYflYDoUGlwzmP4T4i8iJDr73SgCLcBGAsYHQ/s72-c/Google_SCAcompliant-02.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/05/updated-google-pay-app-offers-more-consumer-touchpoints.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-7597302702738312297</id><published>2021-05-04T09:00:00.005-07:00</published><updated>2021-05-04T09:00:16.224-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Badges" /><category scheme="http://www.blogger.com/atom/ns#" term="Dashboard" /><category scheme="http://www.blogger.com/atom/ns#" term="Developer Dashboard" /><category scheme="http://www.blogger.com/atom/ns#" term="Developer Profile" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Developer Profiles" /><title type="text">New Dashboard in Google Developer Profiles</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-H1MF5pmtUes/YJFu52YOKSI/AAAAAAAAKHc/BRDsSNDYNaQLhGMNMArEsobud0_vf86ZwCLcBGAsYHQ/s0/Google-Developer-Profile-Dashboard_%25281%2529.jpeg"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-H1MF5pmtUes/YJFu52YOKSI/AAAAAAAAKHc/BRDsSNDYNaQLhGMNMArEsobud0_vf86ZwCLcBGAsYHQ/s0/Google-Developer-Profile-Dashboard_%25281%2529.jpeg"&gt; &lt;p&gt;&lt;em&gt;Posted by &lt;a href="https://twitter.com/chrisdemeke"&gt;Chris Demeke&lt;/a&gt;, Product Manager; Amani Newton, Technical Writer&lt;/em&gt;&lt;/p&gt;&lt;a name='more'&gt;&lt;/a&gt; &lt;p&gt;The last time you signed into your Google Developer Profile, you may have noticed a change. Now, after signing-in, you’re invited to view your personal dashboard.&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-DoI1HOk3RCM/YH8TB0dQm-I/AAAAAAAAKEY/55MpMrhnGNUaeKNwHDYMZZ6nd0wON8VkgCLcBGAsYHQ/s0/Google-Developer-Profile-Dashboard.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Google Developer Profile dashboard" border="0" data-original-height="1047" data-original-width="1600" src="https://1.bp.blogspot.com/-DoI1HOk3RCM/YH8TB0dQm-I/AAAAAAAAKEY/55MpMrhnGNUaeKNwHDYMZZ6nd0wON8VkgCLcBGAsYHQ/s0/Google-Developer-Profile-Dashboard.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;This feature provides a personalized view of your activity and learning content across Google &lt;a href="https://developers.google.com/"&gt;Developers&lt;/a&gt;, &lt;a href="https://firebase.google.com/"&gt;Firebase&lt;/a&gt;, and &lt;a href="https://developer.android.com/"&gt;Android&lt;/a&gt; (more to come soon). With the Developer Dashboard, you can see a history of your earned badges and other activity, continue any in-progress codelabs or pathways, or start a new pathway. &lt;/p&gt;&lt;p&gt;This feature is just the latest step in Google’s ongoing plan to maintain a thriving ecosystem for developers and provide more tailored experiences. Here’s what’s new: &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Create and organize a personalized list of developer pages that you care about &lt;/strong&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-We5h22J2R8c/YH8TXGl1XUI/AAAAAAAAKEg/D9RVG-v9T2QzIAzGPClFuFPSjKZRGqgWwCLcBGAsYHQ/s0/Saved-Pages-animation-1320x743.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Animation of saved pages" border="0" data-original-height="743" data-original-width="1320" src="https://1.bp.blogspot.com/-We5h22J2R8c/YH8TXGl1XUI/AAAAAAAAKEg/D9RVG-v9T2QzIAzGPClFuFPSjKZRGqgWwCLcBGAsYHQ/s0/Saved-Pages-animation-1320x743.gif"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Quickly access the pages you visit frequently using the Saved Pages feature. By selecting the bookmark icon next to any developer reference page, you can add it to your Saved Pages, and open them &lt;a href="https://developers.google.com/profile/u/me/saved-pages"&gt;here&lt;/a&gt; at a later date. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Keep track of what you learn across  &lt;a href="http://developers.google.com"&gt;Google Developers&lt;/a&gt;, &lt;a href="https://firebase.google.com/"&gt;Firebase&lt;/a&gt;, and &lt;a href="https://developer.android.com/"&gt;Android&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-cpdPeHI1Isg/YH8TtEm3kOI/AAAAAAAAKEo/MFKAsnpS6g0ChUX_LlwKTq8rAq6zYypPQCLcBGAsYHQ/s0/Profile-keep-track.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="image showing how to keep track of what you learn on your developer profile" border="0" data-original-height="744" data-original-width="1320" src="https://1.bp.blogspot.com/-cpdPeHI1Isg/YH8TtEm3kOI/AAAAAAAAKEo/MFKAsnpS6g0ChUX_LlwKTq8rAq6zYypPQCLcBGAsYHQ/s0/Profile-keep-track.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Your dashboard will keep track of your in-progress &lt;a href="https://codelabs.developers.google.com/"&gt;codelabs&lt;/a&gt; and &lt;a href="https://developers.google.com/learn/pathways"&gt;pathways&lt;/a&gt; for you, eliminating the trouble of forgetting to bookmark. You can view a history of all of your developer achievements and activities, across &lt;a href="https://developers.google.com/"&gt;Google Developers&lt;/a&gt;, &lt;a href="https://firebase.google.com/"&gt;Firebase&lt;/a&gt;, and &lt;a href="https://developer.android.com/"&gt;Android&lt;/a&gt;.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Collect badges and share your achievements&lt;/strong&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-2ohI8HmAcXA/YH8UEFU0jnI/AAAAAAAAKEw/KlI7_m_aaHgeEjaLKNbpH9EXjJSvPmNWwCLcBGAsYHQ/s0/Profile-earn-badges.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="3 examples of badges you can earn" border="0" data-original-height="744" data-original-width="1320" src="https://1.bp.blogspot.com/-2ohI8HmAcXA/YH8UEFU0jnI/AAAAAAAAKEw/KlI7_m_aaHgeEjaLKNbpH9EXjJSvPmNWwCLcBGAsYHQ/s0/Profile-earn-badges.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Show off your familiarity with the latest technologies by passing short assessments, and earn badges that you can share on LinkedIn, Twitter, or Facebook.  &lt;/p&gt;&lt;p&gt;&lt;a href="https://developers.google.com/profile/u/me"&gt;Sign in&lt;/a&gt; today to view your personal dashboard, or to get started, head to developer.google.com/profile and click &lt;strong&gt;Create profile&lt;/strong&gt;.  &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/ghEX1iR9SRs" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/7597302702738312297/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/05/new-dashboard-in-google-developer-profiles.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/7597302702738312297" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/7597302702738312297" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/ghEX1iR9SRs/new-dashboard-in-google-developer-profiles.html" title="New Dashboard in Google Developer Profiles" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-H1MF5pmtUes/YJFu52YOKSI/AAAAAAAAKHc/BRDsSNDYNaQLhGMNMArEsobud0_vf86ZwCLcBGAsYHQ/s72-c/Google-Developer-Profile-Dashboard_%25281%2529.jpeg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/05/new-dashboard-in-google-developer-profiles.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-8596221689867595555</id><published>2021-05-03T09:00:00.006-07:00</published><updated>2021-05-04T14:14:16.481-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="google pay" /><category scheme="http://www.blogger.com/atom/ns#" term="google pay api" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Pay Developers" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play Developers" /><category scheme="http://www.blogger.com/atom/ns#" term="online payments" /><category scheme="http://www.blogger.com/atom/ns#" term="payment request api" /><category scheme="http://www.blogger.com/atom/ns#" term="Web payments" /><title type="text">Updated Google Pay button increases click-through rates</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-ZtWL2_0v0zw/YInlX6B1wqI/AAAAAAAAKGk/H97PUNZqE-EC11cOBlwnAwmgFWQwvwOfACLcBGAsYHQ/s0/google-pay-improved-button-increases-checkout-with-Google-Pay-header-R2.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-ZtWL2_0v0zw/YInlX6B1wqI/AAAAAAAAKGk/H97PUNZqE-EC11cOBlwnAwmgFWQwvwOfACLcBGAsYHQ/s0/google-pay-improved-button-increases-checkout-with-Google-Pay-header-R2.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Soc Sieng, Developer Advocate, Google Pay&lt;/em&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-ZtWL2_0v0zw/YInlX6B1wqI/AAAAAAAAKGk/H97PUNZqE-EC11cOBlwnAwmgFWQwvwOfACLcBGAsYHQ/s0/google-pay-improved-button-increases-checkout-with-Google-Pay-header-R2.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Google Pay header" border="0" data-original-height="477" data-original-width="1600" src="https://1.bp.blogspot.com/-ZtWL2_0v0zw/YInlX6B1wqI/AAAAAAAAKGk/H97PUNZqE-EC11cOBlwnAwmgFWQwvwOfACLcBGAsYHQ/s0/google-pay-improved-button-increases-checkout-with-Google-Pay-header-R2.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;An improved Google Pay button works wonders for click-through rates and the checkout experience. &lt;/p&gt;&lt;p&gt;The updated Google Pay button displays a user's card information, which makes the user 30% more likely to use it and increases conversions by 3.6%.   &lt;/p&gt;&lt;p&gt;The display of the card's type and last four digits reminds the user that they already saved a payment card to their Google Account, which makes them more likely to opt for the quick and easy checkout process that Google Pay provides.  &lt;/p&gt;&lt;h2&gt;How it works&lt;/h2&gt;  &lt;p&gt;If a user configured an eligible payment method in their Google Account at the time of purchase, the Google Pay button displays the type and last four digits of their most-recently used card. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-80NpbXTr9ek/YInlpemQMnI/AAAAAAAAKGs/QXaw32dKqUUsBdJlpD3qTE6rKtrP8gBTACLcBGAsYHQ/s0/dynamic%2Bbutton.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:30%" alt="Dynamic Google Pay button" border="0" data-original-height="164" data-original-width="964" src="https://1.bp.blogspot.com/-80NpbXTr9ek/YInlpemQMnI/AAAAAAAAKGs/QXaw32dKqUUsBdJlpD3qTE6rKtrP8gBTACLcBGAsYHQ/s0/dynamic%2Bbutton.gif"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;&lt;strong&gt;Figure 1.&lt;/strong&gt; An example of the Google Pay button with the additional information. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-OZKKu79lA2A/YInl4lACiWI/AAAAAAAAKGw/ZJiY153Bq48tS-q7Ro3XG0sJ5IzfRIbKACLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%25285%2529.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:30%" alt="Buy with Google Pay button" border="0" data-original-height="80" data-original-width="480" src="https://1.bp.blogspot.com/-OZKKu79lA2A/YInl4lACiWI/AAAAAAAAKGw/ZJiY153Bq48tS-q7Ro3XG0sJ5IzfRIbKACLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%25285%2529.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;&lt;strong&gt;Figure 2.&lt;/strong&gt; An example of the Google Pay button without the additional information. &lt;/p&gt; &lt;h2&gt;How to enable card information&lt;/h2&gt;  &lt;p&gt;If you use the &lt;code&gt;createButton&lt;/code&gt; API with default button options, your Google Pay button is automatically updated to include the user's card network and last four digits. &lt;/p&gt;&lt;p&gt;If you customized the &lt;code&gt;createButton&lt;/code&gt; API and set &lt;code&gt;buttonType&lt;/code&gt; to &lt;code&gt;plain&lt;/code&gt; or &lt;code&gt;short&lt;/code&gt;, set it to &lt;code&gt;buy&lt;/code&gt; to make your Google Pay button display the user's card information.  &lt;/p&gt;&lt;p&gt;If you haven’t integrated with the &lt;code&gt;createButton&lt;/code&gt; API yet, consider doing so now so that the user knows that their payment details are a click away. &lt;/p&gt;&lt;h2&gt;See it in action&lt;/h2&gt;  &lt;p&gt;To test the Google Pay button with other button options, check out this button-customization tool: &lt;/p&gt; &lt;iframe src="https://gpay-live-demo.web.app/customize.html" allow="payment" frameborder="0" height="680" width="100%"&gt;&lt;/iframe&gt; &lt;h2&gt;Next steps&lt;/h2&gt;  &lt;p&gt;To get started with Google Pay, visit &lt;a href="https://pay.google.com/business/console?utm_source=gdev-blogger&amp;utm_medium=blog&amp;utm_campaign=dynamic button"&gt;Google Pay's Business Console&lt;/a&gt;. Make sure to use the &lt;code&gt;createButton&lt;/code&gt; API to benefit from the new features.  If you have any questions, tweet &lt;a href="https://twitter.com/GooglePayDevs?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor"&gt;@GooglePayDevs&lt;/a&gt; on Twitter and use #AskGooglePayDevs.  &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/UWIuFHdNddI" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/8596221689867595555/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2021/05/updated-google-pay-button-increases-click-through-rates.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/8596221689867595555" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/8596221689867595555" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/UWIuFHdNddI/updated-google-pay-button-increases-click-through-rates.html" title="Updated Google Pay button increases click-through rates" /><author><name>Google Developers</name><uri>http://www.blogger.com/profile/11166847513477443177</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-ZtWL2_0v0zw/YInlX6B1wqI/AAAAAAAAKGk/H97PUNZqE-EC11cOBlwnAwmgFWQwvwOfACLcBGAsYHQ/s72-c/google-pay-improved-button-increases-checkout-with-Google-Pay-header-R2.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2021/05/updated-google-pay-button-increases-click-through-rates.html</feedburner:origLink></entry></feed>
