<?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>2020-12-07T12:20:01.064-08:00</updated><category term="Google I/O" /><category term="apis" /><category term="open source" /><category term="Fridaygram" /><category term="cloud" /><category term="android" /><category term="chrome" /><category term="app engine" /><category term="developer" /><category term="faster web" /><category term="events" /><category term="featured" /><category term="html5" /><category term="Google" /><category term="cloud platform" /><category term="developers" /><category term="google apps" /><category term="javascript" /><category term="machine learning" /><category term="google io" /><category term="TensorFlow" /><category term="analytics" /><category term="mobile" /><category term="actions on google" /><category term="oauth" /><category term="apps script" /><category term="weekly roundup" /><category term="G Suite" /><category term="AI" /><category term="Artificial Intelligence" /><category term="Google APIs" /><category term="maps" /><category term="java" /><category term="api" /><category term="games" /><category term="bigquery" /><category term="google assistant" /><category term="google code project hosting" /><category term="youtube" /><category term="conferences" /><category term="google summer of code" /><category term="python" /><category term="Who's at Google I/O" /><category term="google code" /><category term="googlenew" /><category term="hackathon" /><category term="podcast" /><category term="security" /><category term="video" /><category term="Firebase" /><category term="gwt" /><category term="opensocial" /><category term="google developers" /><category term="#io14" /><category term="devfest" /><category term="gdata" /><category term="gdl" /><category term="Udacity" /><category term="google+" /><category term="openid" /><category term="VR" /><category term="calendar" /><category term="gmail" /><category term="page speed" /><category term="IoT" /><category term="assistant" /><category term="flutter" /><category term="gsoc" /><category term="launchpad" /><category term="apps" /><category term="chrome web store" /><category term="chromium" /><category term="dart" /><category term="google visualization api" /><category term="google web toolkit" /><category term="ios" /><category term="GDD11" /><category term="Latest" /><category term="gadgets" /><category term="social" /><category term="Google Cloud" /><category term="ajax" /><category term="contest" /><category term="education" /><category term="event" /><category term="gdg" /><category term="google developer day" /><category term="google developer days" /><category term="google gears" /><category term="startup" /><category term="Edge TPU" /><category term="Google Drive" /><category term="coffee with a googler" /><category term="google data apis" /><category term="google storage" /><category term="googleio" /><category term="prediction api" /><category term="Coral" /><category term="Drive" /><category term="Google Sheets API" /><category term="Project Tango" /><category term="Smart Home" /><category term="accessibility" /><category term="ajax search" /><category term="code review" /><category term="develop" /><category term="google apps marketplace" /><category term="google pay" /><category term="#io15" /><category term="ARCore" /><category term="AdMob" /><category term="Google Cloud Platform" /><category term="Google Drive SDK" /><category term="TensorFlow Lite" /><category term="adsense" /><category term="augmented reality" /><category term="design" /><category term="enterprise" /><category term="google cast" /><category term="google chart api" /><category term="google compute engine" /><category term="linux" /><category term="performance" /><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="africa" /><category term="buzz" /><category term="code jam" /><category term="entrepreneurs" /><category term="google checkout" /><category term="google cloud storage" /><category term="google docs" /><category term="html" /><category term="mod_pagespeed" /><category term="native client" /><category term="polymer" /><category term="sdk" /><category term="search" /><category term="startups" /><category term="AR" /><category term="Ads" /><category term="GSuite" /><category term="Google Wave" /><category term="IO19" /><category term="accelerator" /><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="online payments" /><category term="oss devs" /><category term="sign-in" /><category term="student programs" /><category term="students" /><category term="#io2012" /><category term="#io2013" /><category term="AIY" /><category term="AIY Projects" /><category term="AutoML" /><category term="I/O" /><category term="MediaPipe" /><category term="Mobile web" /><category term="cast" /><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="google pay api" /><category term="grow with google" /><category term="labs" /><category term="ml" /><category term="orkut" /><category term="scholarship" /><category term="small business" /><category term="standards" /><category term="translate" /><category term="visualization" /><category term="web" /><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="Firebase Analytics" /><category term="Google Docs API" /><category term="actions" /><category term="apache" /><category term="app" /><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="developer student clubs" /><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="Go" /><category term="Google Coral" /><category term="Google Developer Groups" /><category term="Google Maps" /><category term="Google Play" /><category term="Google sheets" /><category term="I/O Extended" /><category term="Makers" /><category term="OAuth2" /><category term="SVG" /><category term="Sheets API" /><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="cloud services" /><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="google for startups" /><category term="korean" /><category term="launchpad accelerator" /><category term="machine intelligence" /><category term="open web" /><category term="osx" /><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 Things" /><category term="App Development" /><category term="Blockly" /><category term="Brazil" /><category term="Developer Communities" /><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="I/O 2017" /><category term="IO17" /><category term="India" /><category term="ML Kit" /><category term="Sceneform" /><category term="Serverless" /><category term="Women in Tech" /><category term="actionsongoogle" /><category term="ajax apis" /><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="open source blog" /><category term="oreilly" /><category term="picasa" /><category term="play services" /><category term="privacy" /><category term="rails" /><category term="random hacks of kindness" /><category term="research" /><category term="soc" /><category term="speed tracer" /><category term="testing" /><category term="web exponents" /><category term="webgl" /><category term="#GDC20" /><category term="AIYProjects" /><category term="AdWords" /><category term="Administrative APIs" /><category term="Android App Development" /><category term="Android Studio" /><category term="Audio" /><category term="Brotli" /><category term="CardDAV" /><category term="Cloud Anchors" /><category term="CocoaPods" /><category term="Crash Reporting" /><category term="Depth" /><category term="Dev Tools" /><category term="DevFest18" /><category term="DevFestStories" /><category term="Developer Preview" /><category term="EMEA" /><category term="Fabric" /><category term="Firebase Cloud Messaging" /><category term="Fonts" /><category term="GDD" /><category term="GDE" /><category term="Google AR" /><category term="Google Data Studio" /><category term="Google Developers Academy" /><category term="Google Maps Platform" /><category term="Google Slides" /><category term="Google Workspace" /><category term="Google tech talk" /><category term="Gradle" /><category term="Hangouts Chat" /><category term="Hangouts Chat API" /><category term="I/O Live" /><category term="Indie Games Accelerator" /><category term="Issue Tracker" /><category term="JS" /><category term="KDE 4.0" /><category term="Learning" /><category term="Local Home" /><category term="Local Home SDK" /><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="REST" /><category term="Remote Config" /><category term="Safety &amp; Security" /><category term="Scratch" /><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="advogato" /><category term="android developers" /><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="crisis response" /><category term="css3" /><category term="custom search api" /><category term="developer expert" /><category term="django" /><category term="doubleclick" /><category term="drupal" /><category term="eddystone" /><category term="email" /><category term="finance" /><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="notifications" /><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 request api" /><category term="payment web standard" /><category term="payments" /><category term="persistent AR" /><category term="python sprint" /><category term="reader" /><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="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="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="women developers" /><category term="yahoo" /><category term="young developers" /><category term="#AIY" /><category term="#CSEdWeek" /><category term="#GooglePlay #AndroidDevStory #PlayStore #DeveloperConsole #StoreListingExperiments" /><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="App Invites" /><category term="App dev" /><category term="Application Development" /><category term="Augmented images" /><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="Chrome OS IO" /><category term="Chrome OS IO19" /><category term="Chromebooks" /><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="DA" /><category term="DFP" /><category term="Data Compression" /><category term="Data Visualization" /><category term="Data science" /><category term="Databases" /><category term="Dataset" /><category term="Daydream" /><category term="Developer Advocate" /><category term="Developer Culture" /><category term="Developer Keynote" /><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="Error logging" /><category term="Estimator" /><category term="Ethics" /><category term="FCM" /><category term="FCP" /><category term="Fairness" /><category term="Firebase Dynamic Links" /><category term="Flutter 1.2" /><category term="Flutter 1.5" /><category term="Flutter 1.9" /><category term="Flutter Clock" /><category term="Flutter Create" /><category term="Flutter Interact" /><category term="Flutter Live" /><category term="Flutter at IO" /><category term="Flutter for desktop" /><category term="Flutter for web" /><category term="Follow Us" /><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="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 Cloud Talks" /><category term="Google Developer Experts" /><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 For Games" /><category term="Google Groups Settings" /><category term="Google Home Hub" /><category term="Google IOS Android" /><category term="Google Identity Platform" /><category term="Google Pay Developers" /><category term="Google Pay India" /><category term="Google Play Developer API" /><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 Developer" /><category term="Google in Asia" /><category term="Google technology" /><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="IWD 2020" /><category term="Image Compression" /><category term="Imara" /><category term="In-app billing" /><category term="Instagram" /><category term="International Women’s Day" /><category term="KDE" /><category term="Keras" /><category term="Kotlin" /><category term="Krakow" /><category term="Kubernetes" /><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="Marketplace" /><category term="Mexico startups" /><category term="Micronaut" /><category term="Microservices" /><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="Poly" /><category term="Pose Detection" /><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="React" /><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="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="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="UX" /><category term="Ukraine" /><category term="Update" /><category term="VUI" /><category term="Wearables" /><category term="Weave" /><category term="WhiteHouse.gov" /><category term="Winter of Code" /><category term="WomenTechmakers" /><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="apis explorer" /><category term="app design" /><category term="area 120" /><category term="artifact management" /><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="conversation design" /><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="danish linux forum" /><category term="database" /><category term="datastore" /><category term="dataviz" /><category term="deprecation" /><category term="desktop" /><category term="desktop apps" /><category term="developer features" /><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="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="fosdem" /><category term="founders" /><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="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="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="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="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="programmers" /><category term="proximity" /><category term="py3k" /><category term="releases" /><category term="reserve seats" /><category term="result snippets" /><category term="review process" /><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="silverstripe" /><category term="sitemaps" /><category term="sixapart" /><category term="small businesses" /><category term="social graph" /><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="technology" /><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" /><category term="voice kit" /><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="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>2002</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-6906177261232331185</id><published>2020-12-07T09:00:00.144-08:00</published><updated>2020-12-07T10:38:09.993-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="#CSEdWeek" /><category scheme="http://www.blogger.com/atom/ns#" term="computer science" /><category scheme="http://www.blogger.com/atom/ns#" term="Computer Science Education Week" /><category scheme="http://www.blogger.com/atom/ns#" term="Resources" /><title type="text">Celebrate #CSEdWeek with Google Developers!</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-OHWS9_Th-9s/X85v2D_fBRI/AAAAAAAAJpA/1bdZ1ASoUkYSGR43Wf0xCuKZDXBu6D5UACLcBGAsYHQ/s0/Google-dev-computer-science-education-week-social.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-OHWS9_Th-9s/X85v2D_fBRI/AAAAAAAAJpA/1bdZ1ASoUkYSGR43Wf0xCuKZDXBu6D5UACLcBGAsYHQ/s0/Google-dev-computer-science-education-week-social.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Google Developer Studio&lt;/em&gt;&lt;p&gt;&lt;center&gt;&lt;a href="https://1.bp.blogspot.com/-OHWS9_Th-9s/X85v2D_fBRI/AAAAAAAAJpA/1bdZ1ASoUkYSGR43Wf0xCuKZDXBu6D5UACLcBGAsYHQ/s0/Google-dev-computer-science-education-week-social.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img alt="Cartoon banner showing computer with graduation hat and browser window with text bubbles" id="imgFull" border="0" data-original-height="1024" data-original-width="2048" src="https://1.bp.blogspot.com/-OHWS9_Th-9s/X85v2D_fBRI/AAAAAAAAJpA/1bdZ1ASoUkYSGR43Wf0xCuKZDXBu6D5UACLcBGAsYHQ/s0/Google-dev-computer-science-education-week-social.png"/&gt;&lt;/a&gt;&lt;/center&gt;&lt;p&gt;&lt;a href="https://www.csedweek.org/"&gt;Computer Science Education Week&lt;/a&gt; kicks off on Monday, December 7th and runs through the 13th. This annual call-to-action was started in 2009 by the &lt;a href="https://www.csedweek.org/about"&gt;Computer Science Teachers Association&lt;/a&gt; (CSTA) to raise awareness about the need to encourage CS education at all levels and to highlight the importance of computing across industries. &lt;/p&gt;&lt;p&gt;&lt;a href="https://developers.google.com/"&gt;Google Developers&lt;/a&gt; strives to make learning Google technology accessible to all and works to empower developers to build good things together.  &lt;/p&gt;&lt;p&gt;Whether you’re a student or a teacher, check out our collection of introductory resources and demos below. Learn how you can get started in your developer journey or empower others to get started.  &lt;/p&gt;&lt;p&gt;&lt;em&gt;Note: Some resources may require additional background and extra knowledge&lt;/em&gt;&lt;/p&gt; &lt;h2&gt;Actions on Google&lt;/h2&gt;&lt;p&gt;The &lt;a href="https://goo.gle/aogdevsite"&gt;Google Assistant developer platform&lt;/a&gt; lets you create software to extend the functionality of the &lt;a href="https://assistant.google.com/"&gt;Google Assistant&lt;/a&gt; with “Actions”.  Actions let users get things done through a conversational interface that can range from a simple command to turn on the lights or a longer conversation, such as playing a trivia game or exploring a recipe for dinner. &lt;/p&gt;&lt;p&gt;As a developer, you can use the platform to easily create and manage unique and effective conversational experiences for your users. &lt;/p&gt;&lt;center&gt;&lt;img alt="Mobile devices showing demo Google Assistant conversation" border="0" data-original-height="549" data-original-width="1102" style="width:100%" src="https://1.bp.blogspot.com/-jArvTkiAzu8/X81ivjJ8AoI/AAAAAAAAJok/MXDY9yJcESQP_K8vsJ5h6Aaq6Z2N4iwMwCLcBGAsYHQ/s0/content-actions.png"/&gt;&lt;/center&gt;&lt;p id="imgCaption"&gt;&lt;a href="https://developers.google.com/assistant/content/overview"&gt;Actions&lt;/a&gt; auto-generated from web content.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Codelab: Build Actions for Google Assistant using Actions Builder (Level 1)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;This &lt;a href="https://goo.gle/aogcodelab1"&gt;codelab&lt;/a&gt; covers beginner-level concepts for developing with Google Assistant; you do not need any prior experience with the platform to complete it. You’ll learn how to build a simple Action for the Google Assistant that tells users their fortune as they begin their adventure in the mythical land of Gryffinberg. Continue on to level 2 if you’re ready! &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Codelab: Build Actions for Google Assistant using Actions SDK (Level 1)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;This &lt;a href="https://goo.gle/aogcodelab2"&gt;codelab&lt;/a&gt; covers beginner-level concepts for developing with the Actions SDK for Google Assistant; you do not need any prior experience with the platform to complete it.&lt;em&gt; &lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Tip: If you prefer to work with more visual tools, do the &lt;a href="https://goo.gle/aogcodelab1"&gt;Level 1 Actions Builder codelab&lt;/a&gt; instead, which creates the same Action using an in-console Actions Builder instead. View additional codelabs &lt;a href="https://goo.gle/aogcodelabs"&gt;here&lt;/a&gt;. &lt;/em&gt;&lt;/p&gt;&lt;hr class="solid"&gt;&lt;h2&gt;Android Developers&lt;/h2&gt;&lt;p&gt;Android is the world's most powerful mobile platform, with more than 2.5 billion active devices. &lt;/p&gt;&lt;p&gt;Build your first Android app by taking the free online &lt;a href="https://goo.gle/2L0tX46"&gt;Android Basics in Kotlin course&lt;/a&gt; created by Google. No programming experience is needed. You'll learn important concepts on how to build an app as well as the fundamentals of programming in Kotlin, the recommended programing language for developers who are new to Android. Start with the first unit: &lt;a href="https://goo.gle/37xacsC"&gt;Kotlin Basics for Android&lt;/a&gt;!   &lt;/p&gt;&lt;center&gt;&lt;iframe id="imgFull" width="560" height="315" src="https://www.youtube.com/embed/OpQ3VzzgE0g" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;/center&gt;&lt;p&gt;Once you’re ready to take your app development to the next level, check out &lt;a href="https://goo.gle/37DsbO2"&gt;Android Basics: Unit 2&lt;/a&gt; where you’ll where you'll build a tip calculator app and an app with a scrollable list of images. You can customize these apps or start building your own Android apps! &lt;/p&gt;&lt;center&gt;&lt;iframe id="imgFull" width="560" height="315" src="https://www.youtube.com/embed/JJLNvVXPYYw" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;/center&gt;&lt;p&gt;You can find more resources such as courses and documentation on &lt;a href="https://goo.gle/33Hee0f"&gt;developer.android.com&lt;/a&gt;. Stay up-to-date on the latest educational resources from the Android engineering team by following our &lt;a href="https://goo.gle/34qdA6Z"&gt;YouTube channel&lt;/a&gt;, &lt;a href="https://goo.gle/37FAHMs"&gt;Twitter account&lt;/a&gt;, and subscribing to our &lt;a href="https://goo.gle/3863IPO"&gt;newsletter&lt;/a&gt;. &lt;/p&gt;&lt;hr class="solid"&gt;&lt;h2&gt;Developer Student Clubs (DSC)&lt;/h2&gt;&lt;p&gt;&lt;a href="http://g.co/dev/dsc"&gt;Developer Student Clubs&lt;/a&gt; are university based community groups for students interested in Google developer technologies.  &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;a href="https://goo.gle/solutionchallenge"&gt;DSC Solution Challenge&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;For two years, DSC has challenged students to solve problems in their local communities using technology. Learn the steps to get started on a real life project with tips from Arman Hezarkhani. Get inspired by the 2020 Solution Challenge winners and see what they built &lt;a href="https://developers.googleblog.com/2020/07/dsc-global-students-solutions-with-code.html"&gt;here&lt;/a&gt;.  &lt;/p&gt;&lt;p&gt;If you’re a university student interested in joining or leading a DSC near you, click &lt;a href="http://g.co/dev/dsc"&gt;here&lt;/a&gt; to learn more. &lt;/p&gt;&lt;center&gt;&lt;img alt="Developer Student Clubs logo" border="0" style="width:50%" data-original-height="147" data-original-width="1600" src="https://1.bp.blogspot.com/-wvPF_ldWa-M/X81rHGwcJCI/AAAAAAAAJow/VLiyHL3kpK8eCj9uALjA6c_zg1Of56luQCLcBGAsYHQ/s0/gd_dsc_lockup_horizontal_color.png"/&gt;&lt;/center&gt;&lt;hr class="solid"&gt;&lt;h2&gt;Firebase&lt;/h2&gt;&lt;p&gt;Firebase is a mobile and web applications development platform that allows you to manage and solve key challenges across the app lifecycle with its full suite of tools for building, quality, and business.  &lt;/p&gt;&lt;center&gt;&lt;iframe id="imgFull" width="560" height="315" src="https://www.youtube.com/embed/O17OWyx08Cg" 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;strong&gt;Codelab: Get to know Firebase for web&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;In this introductory &lt;a href="https://goo.gle/fbcodelab1"&gt;codelab&lt;/a&gt;, you'll learn some of the basics of Firebase to create interactive web applications. Learn how to build and deploy an event RSVP and guestbook chat app using several Firebase products.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Codelab: Firebase web codelab&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Following “Get to Know Firebase for web”, take this next &lt;a href=" https://goo.gle/fbcodelab2"&gt;codelab&lt;/a&gt; and you'll learn how to use Firebase to easily create web applications by implementing and deploying a chat client using Firebase products and services. &lt;/p&gt;&lt;p&gt;Get all the latest educational resources from the Firebase engineering team by following our &lt;a href="https://goo.gle/fbyt-csw"&gt;YouTube channel&lt;/a&gt;, &lt;a href="https://goo.gle/fbtwitter-csw"&gt;Twitter account&lt;/a&gt;, and visiting the &lt;a href="https://goo.gle/fbcommunitypage-csw"&gt;website&lt;/a&gt;. &lt;/p&gt;&lt;hr class="solid"&gt;&lt;h2&gt;Flutter&lt;/h2&gt;&lt;p&gt;Do you want to learn how to build natively compiled apps for mobile, web, and desktop from a single codebase? If the answer is yes, we have some great resources for you.  &lt;/p&gt;&lt;p&gt;&lt;a href="https://flutter.dev/docs/get-started/codelab"&gt;This is a guide&lt;/a&gt; to creating your first Flutter app. If you are familiar with object-oriented code and basic programming concepts such as variables, loops, and conditionals, you can complete this tutorial. You don’t need previous experience with Dart, mobile, or web programming. &lt;/p&gt;&lt;p&gt;Check out this &lt;a href="https://www.udacity.com/course/build-native-mobile-apps-with-flutter--ud905"&gt;free course from Google and Udacity&lt;/a&gt;, which is the perfect course if you’re brand new to Flutter.  &lt;/p&gt;&lt;hr class="solid"&gt;&lt;h2&gt;Google Cloud Platform&lt;/h2&gt;&lt;p&gt;Google Cloud Platform helps you build what's next with secure infrastructure, developer tools, APIs, data analytics and machine learning. &lt;/p&gt;&lt;iframe id="imgFull" width="560" height="315" src="https://www.youtube.com/embed/JtUIQz_EkUw" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;p&gt;&lt;strong&gt;Cloud OnBoard: Core Infrastructure&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;In this &lt;a href="https://cloudonair.withgoogle.com/events/cloud-onboard-core-infrastructure?utm_source=google&amp;utm_medium=blog&amp;utm_campaign=FY20-Q4-global-onair-onlineevent-er-dev_mktg_cob_ondemand_core_infra&amp;utm_content=gds_computer_science_education_week&amp;utm_term=-"&gt;training&lt;/a&gt;, learn the fundamentals of Google Cloud and how it can boost your flexibility and efficiency. During sessions and demos, you'll see the ins and outs of some of Google Cloud's most impactful tools, discover how to maximize your VM instances, and explore the best ways to approach your container strategy. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Google Cloud Codelabs and Challenges&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Complete a &lt;a href="https://codelabs.developers.google.com/cloud"&gt;codelab&lt;/a&gt; and coding challenge on Google Cloud topics such as Google Cloud Basics, Compute, Data, Mobile, Monitoring, Machine Learning and Networking.  &lt;/p&gt;&lt;p&gt;For in-depth Google Cloud tutorials and the latest Google Cloud news, tune into our Google Cloud Platform &lt;a href="https://www.youtube.com/googlecloudplatform"&gt;YouTube channel&lt;/a&gt;! &lt;/p&gt; &lt;hr class="solid"&gt;&lt;h2&gt;Google Pay&lt;/h2&gt;&lt;p&gt;Google Pay lets your customers pay with the press of a button — using payment methods saved to their Google Account. Learn how to integrate the Google Pay APIs for web and Android.  &lt;/p&gt;&lt;ol&gt;&lt;li&gt;Get started integrating Google Pay APIs for &lt;a href="https://goo.gle/Google-Pay-Android-API"&gt;Android&lt;/a&gt;. &lt;li&gt;Get started integrating Google Pay APIs for &lt;a href="http://goo.gle/Pay-API-Overview"&gt;Web&lt;/a&gt;.  &lt;/li&gt;&lt;/ol&gt;&lt;hr class="solid"&gt;&lt;h2&gt;Google Workspace Developers&lt;/h2&gt;&lt;p&gt;Google Workspace, formerly known as G Suite, includes all of the productivity apps you know and love—Gmail, Calendar, Drive, Docs, Sheets, Slides, Meet, and many more. &lt;/p&gt;&lt;p&gt;The &lt;strong&gt;Google Workspace Developer Platform&lt;/strong&gt; is a collection of tools and resources that let you customize, extend, and integrate with Google Workspace. Low-code tools such as Apps Script enables you to build customizations that automate routine tasks, and professional resources such as Add-ons and APIs enable software vendors to build applications that extend and integrate with Google Workspace. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Learn Apps Script fundamentals with codelabs&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;If you're new to Apps Script, you can learn the basics using our Fundamentals of Apps Script with this Google Sheets codelab playlist.  &lt;/p&gt;&lt;ol&gt; &lt;li&gt;&lt;a href="https://codelabs.developers.google.com/codelabs/apps-script-fundamentals-1"&gt;Fundamentals of Apps Script with Google Sheets #1: Macros &amp; Custom Functions&lt;/a&gt; &lt;li&gt;&lt;a href="https://codelabs.developers.google.com/codelabs/apps-script-fundamentals-2"&gt;Fundamentals of Apps Script with Google Sheets #2: Spreadsheets, Sheets, and Ranges&lt;/a&gt; &lt;li&gt;&lt;a href="https://codelabs.developers.google.com/codelabs/apps-script-fundamentals-3"&gt;Fundamentals of Apps Script with Google Sheets #3: Working with Data&lt;/a&gt; &lt;li&gt;&lt;a href="https://codelabs.developers.google.com/codelabs/apps-script-fundamentals-4"&gt;Fundamentals of Apps Script with Google Sheets #4: Data Formatting&lt;/a&gt; &lt;li&gt;&lt;a href="https://codelabs.developers.google.com/codelabs/apps-script-fundamentals-5"&gt;Fundamentals of Apps Script with Google Sheets #5: Chart and Present Data in Slides&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Stay updated on the newest Google Workspace developer tools and tutorials by following us on our &lt;a href="https://www.youtube.com/googleworkspace"&gt;YouTube channel&lt;/a&gt; and &lt;a href="https://twitter.com/workspacedevs"&gt;Twitter&lt;/a&gt;! &lt;/p&gt; &lt;hr class="solid"&gt;&lt;h2&gt;Material Design&lt;/h2&gt;&lt;p&gt;Material Design is a design system, created by Google and backed by open-source code, that helps teams build high-quality digital experiences. Whether you’re building for Android, Flutter, or the web we have guidelines, code, and resources to help you build beautiful products, faster. We’ve compiled the best beginner resources here:  &lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="https://goo.gle/39KGKSS"&gt;Learn how to choose the right navigation for your app&lt;/a&gt;&lt;li&gt;&lt;a href="https://goo.gle/36IeZbn"&gt;Building Beautiful Transitions with Material Motion for Android&lt;/a&gt;&lt;li&gt;&lt;a href="https://goo.gle/3lI5rkY"&gt;Get Started with Material Components for Android&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;If you’re interested in learning more about Material Design &lt;a href="https://goo.gle/MaterialDesign-YouTube"&gt;subscribe to the brand new YouTube channel &lt;/a&gt;for updates, and Q&amp;A format videos.  &lt;/p&gt;&lt;hr class="solid"&gt;&lt;h2&gt;TensorFlow&lt;/h2&gt;&lt;p&gt;TensorFlow is an open source platform for machine learning to help you solve challenging, real-world problems with an entire ecosystem of tools, libraries and community resources. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Teachable Machine&lt;/strong&gt;&lt;/p&gt;&lt;center&gt;&lt;iframe id="imgFull" width="560" height="315" src="https://www.youtube.com/embed/T2qQGqZxkD0" 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;a href="http://goo.gle/teachablemachine"&gt;Teachable Machine&lt;/a&gt; is a web tool that makes creating machine learning models fast, easy, and accessible to everyone. See how you can write a machine learning model without writing any code, save models, and use them in your &lt;em&gt;own&lt;/em&gt; future projects. The models you make with are real &lt;a href="https://goo.gle/tfjs-csedweek"&gt;TensorFlow.js models&lt;/a&gt; that work anywhere &lt;a href="https://en.wikipedia.org/wiki/JavaScript"&gt;JavaScript&lt;/a&gt; runs.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Machine Learning Foundations:&lt;/strong&gt;&lt;/p&gt;&lt;center&gt;&lt;iframe id="imgFull" width="560" height="315" src="https://www.youtube.com/embed/_Z9TRANg4c0" 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;a href="https://goo.gle/tf-mlfoundations"&gt;Machine Learning Foundations&lt;/a&gt; is a free training course where you’ll learn the fundamentals of building machine learned models using TensorFlow. Heads up! You will need to know a little bit of &lt;a href="https://en.wikipedia.org/wiki/Python_(programming_language)"&gt;Python&lt;/a&gt;.  &lt;/p&gt;&lt;p&gt;Subscribe to our &lt;a href="https://goo.gle/tfyt-csw"&gt;YouTube channel&lt;/a&gt; and &lt;a href="https://goo.gle/tftw-csw"&gt;Twitter account &lt;/a&gt;for all the latest in machine learning.  &lt;/p&gt;&lt;hr class="solid"&gt;&lt;br&gt;&lt;br&gt;&lt;h2&gt;Celebrate more with Google&lt;/h2&gt;&lt;p&gt;Here are other ways our friends within the ecosystem are supporting #CSEdWeek.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Google for Education&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt; &lt;li&gt;&lt;b&gt;&lt;a href="https://csfirst.withgoogle.com/s/en/home"&gt;CS First Unplugged&lt;/a&gt;:&lt;/b&gt; A free computer science curriculum designed by teachers that makes coding easy to teach and fun to learn in a wide range of classrooms. Check out the &lt;a href="https://csfirst.withgoogle.com/s/en/teachers"&gt;website&lt;/a&gt; to collect more teacher resources from CS First.  &lt;li&gt;&lt;b&gt;&lt;a href="https://csfirst.withgoogle.com/s/en/hourofcode"&gt;Teach an Hour of Code:&lt;/a&gt;&lt;/b&gt; Flexible one-hour coding activities that can be completed online with a device, or offline and unplugged. Get started with a &lt;a href="https://storage.googleapis.com/files.cs-first.com/Unplugged/CSFirstUnplugged_Booklet_Color.pdf"&gt;printable booklet&lt;/a&gt; with computational thinking activities for students to learn about how computer science helps us communicate and stay connected with people around the world. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Experiments with Google &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;A &lt;a href="https://experiments.withgoogle.com/"&gt;collection&lt;/a&gt; of innovative projects using Chrome, Android, AI, AR, Web, and more, along with helpful tools and resources to inspire others to create new experiments. New projects are added weekly, like this machine learning &lt;a href="https://experiments.withgoogle.com/infinite-bad-guy"&gt;collaboration&lt;/a&gt; between Billie Eilish, YouTube Music and &lt;a href="https://experiments.withgoogle.com/search?q=google%20creative%20lab"&gt;Google Creative Lab&lt;/a&gt;.  &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/1QO_sppUWWQ" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/6906177261232331185/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/12/cs-education-week-2020.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/6906177261232331185" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/6906177261232331185" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/1QO_sppUWWQ/cs-education-week-2020.html" title="Celebrate #CSEdWeek with Google Developers!" /><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/-OHWS9_Th-9s/X85v2D_fBRI/AAAAAAAAJpA/1bdZ1ASoUkYSGR43Wf0xCuKZDXBu6D5UACLcBGAsYHQ/s72-c/Google-dev-computer-science-education-week-social.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/12/cs-education-week-2020.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-2725065865125989447</id><published>2020-12-01T15:13:00.001-08:00</published><updated>2020-12-01T15:13:28.095-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Dev Tools" /><category scheme="http://www.blogger.com/atom/ns#" term="featured" /><category scheme="http://www.blogger.com/atom/ns#" term="Gradle" /><category scheme="http://www.blogger.com/atom/ns#" term="Latest" /><title type="text">AGP 7.0: Next major release for the Android Gradle plugin </title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-V_Z0XIQokGM/X8afs3RR--I/AAAAAAAAP50/KVRo9j43uoQP--wfD2qL8iP2HagX9DucwCLcBGAsYHQ/s0/1_idoNj7WMAAZecVB0j6OL0A%2B%25281%2529.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-V_Z0XIQokGM/X8afs3RR--I/AAAAAAAAP50/KVRo9j43uoQP--wfD2qL8iP2HagX9DucwCLcBGAsYHQ/s0/1_idoNj7WMAAZecVB0j6OL0A%2B%25281%2529.png"&gt; &lt;p&gt;&lt;em&gt;Posted by &lt;a href="https://twitter.com/yenerm?lang=en"&gt;Murat Yener&lt;/a&gt;, Developer Advocate  &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/-V_Z0XIQokGM/X8afs3RR--I/AAAAAAAAP50/KVRo9j43uoQP--wfD2qL8iP2HagX9DucwCLcBGAsYHQ/s0/1_idoNj7WMAAZecVB0j6OL0A%2B%25281%2529.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="" border="0" data-original-height="560" data-original-width="2000" src="https://1.bp.blogspot.com/-V_Z0XIQokGM/X8afs3RR--I/AAAAAAAAP50/KVRo9j43uoQP--wfD2qL8iP2HagX9DucwCLcBGAsYHQ/s0/1_idoNj7WMAAZecVB0j6OL0A%2B%25281%2529.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;     &lt;p&gt;Today marks the release of the first Canary version of &lt;a href="https://android-developers.googleblog.com/2020/12/announcing-android-studio-arctic-fox.html"&gt;Android Studio Arctic Fox (2020.3.1)&lt;/a&gt;, together with Android Gradle plugin (AGP) version 7.0.0-alpha01. With this release we are adjusting the version numbering for our Gradle plugin and decoupling it from the Android Studio versioning scheme. In this blog post we'll explain the reasons for the change, as well as give a preview of some important changes we're making to our new, incubating &lt;a href="https://medium.com/androiddevelopers/new-apis-in-the-android-gradle-plugin-f5325742e614"&gt;Android Gradle plugin APIs and DSL&lt;/a&gt;.  &lt;/p&gt;   &lt;h3&gt;New versioning scheme&lt;/h3&gt;  &lt;p&gt;With AGP 7.0.0 we are adopting the principles of &lt;a href="https://semver.org/"&gt;semantic versioning&lt;/a&gt;. What this means is that only major version changes will break API compatibility. We intend to release one major version each year, right after Gradle introduces its own yearly major release.  &lt;/p&gt;&lt;p&gt;Moreover, in the case of a breaking change, we will ensure that the removed API is marked with &lt;code&gt;@Deprecated&lt;/code&gt; about a year in advance and that its replacement is available at the same time. This will give developers roughly a year to migrate and test their plugins with the new API before the old API is removed. &lt;/p&gt;&lt;p&gt;Alignment with &lt;a href="https://gradle.org/releases/"&gt;Gradle's version&lt;/a&gt; is also why we're skipping versions 5 and 6, and moving directly to AGP 7.0.0. This alignment indicates that AGP 7.x is meant to work with Gradle 7.x APIs. While it may also run on Gradle 8.x, this is not guaranteed and will depend on whether 8.x removes APIs that AGP relies on. &lt;/p&gt;&lt;p&gt;With this change, the AGP version number will be decoupled from the Android Studio version number. However we will keep releasing Android Studio and Android Gradle plugin together for the foreseeable future. &lt;/p&gt;&lt;p&gt;Compatibility between Android Studio and Android Gradle plugin remains unchanged. As a general rule, projects that use &lt;strong&gt;stable versions&lt;/strong&gt; of AGP can be opened with newer versions of Android Studio.  &lt;/p&gt;&lt;h3&gt;Java 11 requirement&lt;/h3&gt;  &lt;p&gt;You can still use Java programming language version 8 with AGP 7.0.0-alpha01 but we are changing the minimum required Java programming language version to Java 11, starting with AGP 7.0.0-alpha02. We are announcing this early in the Canary schedule and many months ahead of the stable release to allow developers time to get ready.  &lt;/p&gt;&lt;h3&gt;Incubating APIs and important API changes&lt;/h3&gt;  &lt;p&gt;This release of AGP also introduces some API changes. As a reminder, a number of APIs that were introduced in AGP 4.1 were marked as incubating and were subject to change. In fact, in AGP 4.2 some of these APIs have changed. The APIs that are currently incubating do not follow the deprecation cycle that we explain above.  &lt;/p&gt;&lt;p&gt;Here is a summary of some important API changes. &lt;/p&gt;&lt;ul&gt; &lt;li&gt;The &lt;code&gt;onVariants&lt;/code&gt;, &lt;code&gt;onProperties&lt;/code&gt; and &lt;code&gt;onVariantProperties&lt;/code&gt; blocks are removed in version 4.2 beta.  &lt;li&gt;These APIs are replaced with  &lt;code&gt;beforeVariants&lt;/code&gt; and &lt;code&gt;onVariants&lt;/code&gt; in the new &lt;code&gt;&lt;a href="https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/extension/AndroidComponentsExtension"&gt;androidComponents&lt;/a&gt;&lt;/code&gt; block. Both &lt;code&gt;beforeVariants&lt;/code&gt; and &lt;code&gt;onVariants&lt;/code&gt; can optionally use a &lt;code&gt;VariantSelector&lt;/code&gt; to reduce the number of variants the callback will run on, based on build type, name or flavor by using &lt;code&gt;withBuildType&lt;/code&gt;, &lt;code&gt;withName&lt;/code&gt; and &lt;code&gt;withFlavor&lt;/code&gt; accordingly. The lambda &lt;code&gt;onVariants&lt;/code&gt; and &lt;code&gt;beforeVariants&lt;/code&gt; receives is executed after AGP computes variant combinations in &lt;code&gt;afterEvaluate&lt;/code&gt;. Nesting properties inside &lt;code&gt;onVariants&lt;/code&gt; is removed.  &lt;li&gt;Similar APIs are added to &lt;a href="https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/extension/AndroidComponentsExtension"&gt;androidComponents&lt;/a&gt; to allow separate blocks for UnitTests (&lt;code&gt;beforeUnitTest&lt;/code&gt; and &lt;code&gt;unitTest&lt;/code&gt;) and AndroidTests (&lt;code&gt;beforeAndroidTest&lt;/code&gt; and &lt;code&gt;androidTest&lt;/code&gt;) instead of nesting tests inside variants.  &lt;li&gt;Two classes used by both the old and new way of registering actions for variants were renamed. &lt;code&gt;Variant&lt;/code&gt; is now &lt;code&gt;VariantBuilder&lt;/code&gt;, and it is used in the &lt;code&gt;beforeVariants&lt;/code&gt; phase. &lt;code&gt;VariantProperties&lt;/code&gt; is now &lt;code&gt;Variant&lt;/code&gt; and it is passed to the new &lt;code&gt;onVariants&lt;/code&gt; block.  &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Let’s take a look at some of these changes. Here is a sample &lt;code&gt;onVariants&lt;/code&gt; block which targets the release build&lt;code&gt;. &lt;/code&gt;The &lt;code&gt;onVariants&lt;/code&gt;  block Is changed to &lt;code&gt;beforeVariants&lt;/code&gt; and uses a variant selector in the following example. &lt;/p&gt;   &lt;pre class="prettyprint"&gt;```&lt;br /&gt;android {&lt;br /&gt;   …&lt;br /&gt;   //onVariants.withName("release") {&lt;br /&gt;   //   ...&lt;br /&gt;   //}&lt;br /&gt;   …&lt;br /&gt;}&lt;br /&gt;androidComponents {&lt;br /&gt;   val release = selector().withBuildType("release")&lt;br /&gt;   beforeVariants(release) { variant -&gt;&lt;br /&gt;      ...&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;```&lt;/pre&gt;  &lt;p&gt;Similarly&lt;code&gt; onVariantProperties &lt;/code&gt;block  is changed to&lt;code&gt; onVariants.&lt;/code&gt;&lt;/p&gt;   &lt;pre class="prettyprint"&gt;```&lt;br /&gt;android {&lt;br /&gt;   ...&lt;br /&gt;   //onVariantProperties {&lt;br /&gt;   //   ... &lt;br /&gt;   //}&lt;br /&gt;   …&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;androidComponents.onVariants { variant -&gt;&lt;br /&gt;      ... &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;```&lt;/pre&gt;  &lt;p&gt;Note, this customization is typically done in a plugin and should not be located in build.gradle. We are moving away from using functions with receivers which suited the DSL syntax but are not necessary in the plugin code. &lt;/p&gt;&lt;p&gt;We are planning to make these APIs stable with AGP 7.0.0 and all plugin authors must  migrate to the new androidComponents. If you want to avoid dealing with such changes, make sure your plugins only use stable APIs and do not depend on APIs marked as incubating. &lt;/p&gt;&lt;p&gt;If you want to learn more about other changes coming with this release, make sure to take a look at the &lt;a href="https://developer.android.com/studio/preview/features#2020.3.1"&gt;release notes&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;    &lt;/p&gt;&lt;p&gt;&lt;em&gt;Java is a registered trademark of Oracle and/or its affiliates.&lt;/em&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/I6Buzz57RW0" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/2725065865125989447/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/12/agp-70-next-major-release-for-android.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2725065865125989447" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2725065865125989447" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/I6Buzz57RW0/agp-70-next-major-release-for-android.html" title="AGP 7.0: Next major release for the Android Gradle plugin " /><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/-V_Z0XIQokGM/X8afs3RR--I/AAAAAAAAP50/KVRo9j43uoQP--wfD2qL8iP2HagX9DucwCLcBGAsYHQ/s72-c/1_idoNj7WMAAZecVB0j6OL0A%2B%25281%2529.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/12/agp-70-next-major-release-for-android.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-4774705097574248226</id><published>2020-12-01T15:12:00.002-08:00</published><updated>2020-12-01T17:23:35.663-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android Studio" /><category scheme="http://www.blogger.com/atom/ns#" term="Android Tools" /><category scheme="http://www.blogger.com/atom/ns#" term="androidstudio" /><category scheme="http://www.blogger.com/atom/ns#" term="Dev Tools" /><category scheme="http://www.blogger.com/atom/ns#" term="featured" /><category scheme="http://www.blogger.com/atom/ns#" term="Gradle" /><category scheme="http://www.blogger.com/atom/ns#" term="Latest" /><title type="text">Announcing Android Studio Arctic Fox (2020.3.1) &amp; Android Gradle plugin 7.0</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-fl_E3FcJWTk/X8aDwEsSl6I/AAAAAAAAP44/FLRzAJ8D_3EHia79Vi93dlX6bu2hsasMQCLcBGAsYHQ/s0/compose_preview%2B%25281%2529.gif"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-fl_E3FcJWTk/X8aDwEsSl6I/AAAAAAAAP44/FLRzAJ8D_3EHia79Vi93dlX6bu2hsasMQCLcBGAsYHQ/s0/compose_preview%2B%25281%2529.gif"&gt; &lt;p&gt;&lt;em&gt;Posted by &lt;a href="https://twitter.com/jamaleason"&gt;Jamal Eason&lt;/a&gt;, Product Manager &lt;/em&gt;&lt;p&gt; &lt;a href="https://1.bp.blogspot.com/-LgTa-xDiknI/X4EflN56boI/AAAAAAAAPuk/24YyKnqiGkwRS9-_9suPKkfsAwO4wHYEgCLcBGAsYHQ/s0/image9.png" imageanchor="1"&gt;&lt;img alt="Android Studio logo" border="0" data-original-height="1217" data-original-width="1197" id="floatRight" src="https://1.bp.blogspot.com/-LgTa-xDiknI/X4EflN56boI/AAAAAAAAPuk/24YyKnqiGkwRS9-_9suPKkfsAwO4wHYEgCLcBGAsYHQ/s0/image9.png" style="width: 35%;"/&gt;&lt;/a&gt; &lt;p&gt;Today marks the release of the first version of Android Studio Arctic Fox (2020.3.1) on the canary channel, together with Android Gradle plugin (AGP) version 7.0.0-alpha01. With this release, we are adjusting the version numbering of Android Studio and our Gradle plugin. This change decouples the Gradle plugin from the Android Studio versioning scheme and brings more clarity to which year and IntelliJ version Android Studio aligns with for each release. &lt;/p&gt; &lt;h3&gt;New versioning scheme - Android Studio&lt;/h3&gt;  &lt;p&gt;With Android Studio Arctic Fox (2020.3.1) we are moving to a year-based system that is more closely aligned with IntelliJ IDEA, the IDE upon which Android Studio is built. We are changing the version numbering scheme to encode a number of important attributes: the year, the version of IntelliJ it is based on, plus feature and patch level.  WIth this name change you can quickly figure out which version of the IntelliJ platform you are using in Android Studio. In addition,  each major version will have a canonical codename, starting with Arctic Fox, and then proceeding alphabetically to help make it easy to see which version is newer. &lt;/p&gt;&lt;p&gt;We recommend that you use the latest version of Android Studio so that you have access to the latest features and quality improvements. To make it easier to stay up to date, we made the version change to clearly de-couple Android Studio from your Android Gradle Plugin version. An important detail to keep in mind is that there is no impact to the way the build system compiles and packages your app when you update the IDE. In contrast, app build process changes and APK/Bundles are dictated by your project AGP version. Therefore, it is safe to update your Android Studio version, even late in your development cycle, because your project AGP version can be updated in a different cadence than your Android Studio version. Lastly, with the new version system it is even easier than before for you or your team to run both the stable and preview versions of Android Studio at the &lt;a href="https://developer.android.com/studio/preview/install-preview"&gt;same time&lt;/a&gt; on your app project as long as you keep the AGP version on a stable release.  &lt;/p&gt;&lt;p&gt;In the previous numbering system, this release would have been Android Studio 4.3. With the new numbering system, it is now Android Studio Arctic Fox (2020.3.1) Canary 1 or just, Arctic Fox. &lt;/p&gt;  &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-slq6xg2pRmE/X8aDA3R0LUI/AAAAAAAAP4w/vplqs6aknvYd4X532vMr8xVzTW1-HDamACLcBGAsYHQ/s0/Screen%2BShot%2B2020-12-01%2Bat%2B12.45.26%2BPM.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="" border="0" data-original-height="184" data-original-width="1400" src="https://1.bp.blogspot.com/-slq6xg2pRmE/X8aDA3R0LUI/AAAAAAAAP4w/vplqs6aknvYd4X532vMr8xVzTW1-HDamACLcBGAsYHQ/s0/Screen%2BShot%2B2020-12-01%2Bat%2B12.45.26%2BPM.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;  &lt;p&gt;Going forward, here is how the Android Studio version number scheme will work: &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;lt;Year of IntelliJ Version&gt;.&amp;lt;IntelliJ major version&gt;.&amp;lt;Studio major version&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt; &lt;li&gt;The first two number groups represent the version of the final IntellIj platform that a particular Android Studio release is based on (earlier canaries may still be on the earlier version). For this release, this is 2020.3.  &lt;li&gt;The third number group represents the Studio major version, starting at 1 and incrementing by one for every major release.  &lt;li&gt;To make it easier to refer to each version, we are also giving major releases a code name, incrementing from A to Z based on animal names. This initial release name is Arctic Fox.   &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;New versioning scheme - Android Gradle plugin&lt;/h3&gt;  &lt;p&gt;With AGP 7.0.0 we are adopting the principles of &lt;a href="https://semver.org/"&gt;semantic versioning&lt;/a&gt;, and aligning with the Gradle version that AGP requires. Compatibility between Android Studio and Android Gradle plugin remains unchanged. Projects that use &lt;strong&gt;stable versions&lt;/strong&gt; of AGP can be opened with newer versions of Android Studio.  &lt;/p&gt;&lt;p&gt;We will publish &lt;a href="https://android-developers.googleblog.com/2020/12/announcing-android-gradle-plugin.html"&gt;another post&lt;/a&gt; soon with more details about our AGP versioning philosophy and what is new in AGP 7.0.&lt;br&gt;&lt;/p&gt;&lt;h3&gt;What is new in Android Studio Arctic Fox&lt;/h3&gt;  &lt;p&gt;We are in early days in the feature development phase for Arctic Fox, but we have invested much of our time in addressing over 200 quality improvements and bugs across a wide range of areas in the IDE from the code editor, app inspection tools, layout editor to the embedded emulator. Check out the &lt;a href="https://developer.android.com/studio/releases"&gt;release notes &lt;/a&gt;for the specific bug fixes.  &lt;/p&gt;&lt;p&gt;For those trying out &lt;a href="https://developer.android.com/jetpack/compose"&gt;Jetpack Compose&lt;/a&gt;, we have a host of new updates, like deploy &lt;code&gt;@Preview&lt;/code&gt; composables to device/emulator: &lt;/p&gt; &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-fl_E3FcJWTk/X8aDwEsSl6I/AAAAAAAAP44/FLRzAJ8D_3EHia79Vi93dlX6bu2hsasMQCLcBGAsYHQ/s0/compose_preview%2B%25281%2529.gif" imageanchor="1" &gt;&lt;img id=imgFull border="0" src="https://1.bp.blogspot.com/-fl_E3FcJWTk/X8aDwEsSl6I/AAAAAAAAP44/FLRzAJ8D_3EHia79Vi93dlX6bu2hsasMQCLcBGAsYHQ/s0/compose_preview%2B%25281%2529.gif" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt;   &lt;p id="imgCaption"&gt; Deploy preview composable&lt;/p&gt; &lt;/center&gt;    &lt;p&gt;Also try out the new Layout Validation Tool in Arctic Fox to see how your layout responds to various screens sizes, font sizes, and Android Color Correction/Color Blind Modes. You can access this via the &lt;strong&gt;Layout Validation&lt;/strong&gt; tool window when you are using the Layout Editor.  &lt;/p&gt;  &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-xpAxvNafTsM/X8aEhKO-j4I/AAAAAAAAP5I/3J5sKNy_DZsmPb69juG7figtqIxsP71sQCLcBGAsYHQ/s0/layout_validation_adv.gif" imageanchor="1" &gt;&lt;img id=imgFull border="0" src="https://1.bp.blogspot.com/-xpAxvNafTsM/X8aEhKO-j4I/AAAAAAAAP5I/3J5sKNy_DZsmPb69juG7figtqIxsP71sQCLcBGAsYHQ/s0/layout_validation_adv.gif" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt;   &lt;p id="imgCaption"&gt; Layout Validation &lt;/p&gt; &lt;/center&gt; &lt;p&gt;Lastly, for those running MacOS (other platforms are coming soon) with the latest Android Platform tools and an Android 11 device, you can try out the IDE integration for the &lt;a href="https://developer.android.com/studio/command-line/adb#wireless-adb-android-11"&gt;Wireless ADB&lt;/a&gt; feature by going to the &lt;strong&gt;Run&lt;/strong&gt; device selection dialogue → &lt;strong&gt;Pair Devices Using Wi-Fi&lt;/strong&gt;.    &lt;/p&gt;  &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-K8AC-KTs0NI/X8aE-AKoZyI/AAAAAAAAP5Q/tI1nOlJDvaYgTlGt_nwzDtIWM0BFQ5pwQCLcBGAsYHQ/s0/Untitled%2B%25283%2529.png " imageanchor="1" &gt;&lt;img id=imgFull border="0" src="https://1.bp.blogspot.com/-K8AC-KTs0NI/X8aE-AKoZyI/AAAAAAAAP5Q/tI1nOlJDvaYgTlGt_nwzDtIWM0BFQ5pwQCLcBGAsYHQ/s0/Untitled%2B%25283%2529.png " data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt;   &lt;p id="imgCaption"&gt; Menu to access Wireless ADB feature &lt;/p&gt; &lt;/center&gt;    &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-tA1_CjFUZUk/X8aGt_KCmoI/AAAAAAAAP5c/yLgjCLvm5YYLbTo8tUYQLvF7n79qh5qkQCLcBGAsYHQ/s0/unnamed%2B%25287%2529.png" imageanchor="1" &gt;&lt;img style="width:450px" id=imgFull border="0" src="https://1.bp.blogspot.com/-tA1_CjFUZUk/X8aGt_KCmoI/AAAAAAAAP5c/yLgjCLvm5YYLbTo8tUYQLvF7n79qh5qkQCLcBGAsYHQ/s0/unnamed%2B%25287%2529.png " data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt;   &lt;p id="imgCaption"&gt; Wireless ADB Setup Window &lt;/p&gt; &lt;/center&gt;     &lt;h3&gt;What’s Next &lt;/h3&gt;  &lt;p&gt;If you want to learn more about other detailed changes coming with this release for both Android Studio and the Android Gradle plugin, make sure to take a look at the &lt;a href="https://developer.android.com/studio/releases"&gt;release notes&lt;/a&gt;. &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/VorT4cdvy3o" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/4774705097574248226/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/12/announcing-android-studio-arctic-fox.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/4774705097574248226" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/4774705097574248226" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/VorT4cdvy3o/announcing-android-studio-arctic-fox.html" title="Announcing Android Studio Arctic Fox (2020.3.1) &amp; Android Gradle plugin 7.0" /><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/-fl_E3FcJWTk/X8aDwEsSl6I/AAAAAAAAP44/FLRzAJ8D_3EHia79Vi93dlX6bu2hsasMQCLcBGAsYHQ/s72-c/compose_preview%2B%25281%2529.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/12/announcing-android-studio-arctic-fox.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-208169354691239063</id><published>2020-12-01T10:03:00.001-08:00</published><updated>2020-12-01T10:04:53.379-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="machine learning" /><category scheme="http://www.blogger.com/atom/ns#" term="TensorFlow" /><title type="text">Aligning thousands of Billie Eilish covers in an infinite music video experiment</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-s-4kQ0la5II/X708Q929yxI/AAAAAAAAJmQ/lBcC1dZCWbM_-OVARUItD0etbW2mvzwrwCLcBGAsYHQ/s0/Untitled.gif"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-s-4kQ0la5II/X708Q929yxI/AAAAAAAAJmQ/lBcC1dZCWbM_-OVARUItD0etbW2mvzwrwCLcBGAsYHQ/s0/Untitled.gif"&gt; &lt;p&gt;&lt;em&gt;Posted by Google Creative Lab&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/-s-4kQ0la5II/X708Q929yxI/AAAAAAAAJmQ/lBcC1dZCWbM_-OVARUItD0etbW2mvzwrwCLcBGAsYHQ/s0/Untitled.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width: 400px" alt="Billie Eilish gif" border="0" data-original-height="640" data-original-width="640" src="https://1.bp.blogspot.com/-s-4kQ0la5II/X708Q929yxI/AAAAAAAAJmQ/lBcC1dZCWbM_-OVARUItD0etbW2mvzwrwCLcBGAsYHQ/s0/Untitled.gif"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;   &lt;p&gt;“Bad Guy” by Billie Eilish is one of the most-covered songs on YouTube, inspiring thousands of fans to upload their own versions. To celebrate all these covers, YouTube and Google Creative Lab built an AI experiment to combine all of them seamlessly in the world’s first infinite music video: &lt;a href="http://billie.withyoutube.com"&gt;Infinite Bad Guy&lt;/a&gt;. The experience aligns every cover to the same beat, no matter its genre, language, or instrumentation. &lt;/p&gt; &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/OqY_IV3gj7E" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt; &lt;/center&gt;   &lt;h2&gt;Finding all the covers&lt;/h2&gt; &lt;p&gt;How do you find “Bad Guy” covers amidst all the billions of videos on YouTube? Just searching for “Bad Guy” would result in false positives, like videos of Billie being interviewed about the song, or miss covers that didn’t use the song name in their titles. YouTube’s &lt;a href="https://support.google.com/youtube/answer/2797370?hl=en"&gt;ContentID system&lt;/a&gt; allows us to find videos that match the musical composition “Bad Guy” and also allows us to narrow our search to videos that appear to be performances or creative interpretations of the song. That way, we can also avoid videos where “Bad Guy” was just background music. We continue to run this search daily, collecting an ever-expanding list of potential covers to use in the experience.  &lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-4zRTor17pqs/X708yXn-PRI/AAAAAAAAJmY/1cszekjEPJoJqxnhiG-ZjxJsGOTTUr_6ACLcBGAsYHQ/s0/Untitled%2B%25282%2529.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Finding all the covers" border="0" data-original-height="900" data-original-width="1600" src="https://1.bp.blogspot.com/-4zRTor17pqs/X708yXn-PRI/AAAAAAAAJmY/1cszekjEPJoJqxnhiG-ZjxJsGOTTUr_6ACLcBGAsYHQ/s0/Untitled%2B%25282%2529.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;    &lt;h2&gt;Aligning all the covers to the same beat&lt;/h2&gt; &lt;p&gt;A key part of the experience is being able to jump from cover to cover seamlessly. But fan covers of “Bad Guy” vary widely. Some might be similar to the original, like a&lt;a href="https://www.youtube.com/watch?v=QC7iMA2CoQk"&gt; dance video&lt;/a&gt; set to Billie’s track. Some might vary more in tempo and instrumentation, like a &lt;a href="https://www.youtube.com/watch?v=ri8jxt0JWS8"&gt;heavy metal cover&lt;/a&gt;. And others might diverge greatly from the original, like a &lt;a href="https://www.youtube.com/watch?v=7cKlGj7buvE"&gt;clarinet version with no lyrics&lt;/a&gt;. How can you get all these covers on the same beat? After trying several approaches like dynamic time warping and chord recognition, we’ve found the most success with a recurrent neural network trained to recognize sections and beats of “Bad Guy.” We collaborated with our friends at IYOYO on cover alignment and they have &lt;a href="https://iyoiyo.medium.com/creating-infinite-bad-guy-6a3c0d6afc02"&gt;a great writeup about the process&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/-WB6oQcLTwJs/X709ShcK4QI/AAAAAAAAJmg/3gNnWzryh3w35zrjppOPripW1G_NZ1i-wCLcBGAsYHQ/s0/Untitled%2B%25281%2529.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Aligning all the covers to the same beat" border="0" data-original-height="480" data-original-width="853" src="https://1.bp.blogspot.com/-WB6oQcLTwJs/X709ShcK4QI/AAAAAAAAJmg/3gNnWzryh3w35zrjppOPripW1G_NZ1i-wCLcBGAsYHQ/s0/Untitled%2B%25281%2529.gif"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;    &lt;h2&gt;Building the experience&lt;/h2&gt; &lt;p&gt;Finding and aligning the covers is a fascinating research problem, but the crucial final step is making them explorable to everyone. We’ve tried to make it intuitive and fun to navigate all the infinite combinations, while keeping latency low so the song never drops a beat. &lt;/p&gt;   &lt;p&gt;The experience centers around three YouTube players, a number we settled on after a lot of experimentation. Initially we thought more players would be more interesting, but the experience got chaotic and slow. Around the players we’ve added discoverable features like the hashtag drawer and stats page. Video game interfaces have been a big inspiration for us, as they combine multiple interactions in a single dashboard. We’ve also added an autoplay mode for users who want to just sit back and be taken through an ever-changing mix of covers. &lt;/p&gt; &lt;p&gt;We’re excited about how &lt;a href="https://billie.withyoutube.com/"&gt;Infinite Bad Guy&lt;/a&gt; showcases the incredibly diverse talent of YouTube and the potential machine learning can have for music and creativity. Give it a try and see what beautiful, strange, and brilliant covers you can find.  &lt;/p&gt; &lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/FQXBokjKV1U" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/208169354691239063/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/11/aligning-thousands-of-billie-eilish-covers-in-an-infinite-music-video-experiment.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/208169354691239063" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/208169354691239063" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/FQXBokjKV1U/aligning-thousands-of-billie-eilish-covers-in-an-infinite-music-video-experiment.html" title="Aligning thousands of Billie Eilish covers in an infinite music video experiment" /><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/-s-4kQ0la5II/X708Q929yxI/AAAAAAAAJmQ/lBcC1dZCWbM_-OVARUItD0etbW2mvzwrwCLcBGAsYHQ/s72-c/Untitled.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/11/aligning-thousands-of-billie-eilish-covers-in-an-infinite-music-video-experiment.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-1678959804520477171</id><published>2020-11-30T05:53:00.000-08:00</published><updated>2020-11-30T05:53:32.617-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="App Development" /><category scheme="http://www.blogger.com/atom/ns#" term="Artificial Intelligence" /><category scheme="http://www.blogger.com/atom/ns#" term="featured" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><category scheme="http://www.blogger.com/atom/ns#" term="Latest" /><category scheme="http://www.blogger.com/atom/ns#" term="machine learning" /><category scheme="http://www.blogger.com/atom/ns#" term="TensorFlow" /><category scheme="http://www.blogger.com/atom/ns#" term="women developers" /><category scheme="http://www.blogger.com/atom/ns#" term="Women in Tech" /><category scheme="http://www.blogger.com/atom/ns#" term="women techmakers" /><title type="text">Irem from Turkey shares her groundbreaking work in TensorFlow and advice for the community</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-RtYM683I4Tk/X8T3Bn0jOtI/AAAAAAAAJn8/HzQxMJC_SakzDfp3ddeU_3xHByLFaRcQgCLcBGAsYHQ/s0/IMG-20180427-WA0054%2B%25281%2529.jpg"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-RtYM683I4Tk/X8T3Bn0jOtI/AAAAAAAAJn8/HzQxMJC_SakzDfp3ddeU_3xHByLFaRcQgCLcBGAsYHQ/s0/IMG-20180427-WA0054%2B%25281%2529.jpg"&gt; &lt;p&gt;&lt;em&gt;Posted by Jennifer Kohl, Global Program Manager, Google Developer Groups &lt;/em&gt;&lt;p&gt;    &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-RtYM683I4Tk/X8T3Bn0jOtI/AAAAAAAAJn8/HzQxMJC_SakzDfp3ddeU_3xHByLFaRcQgCLcBGAsYHQ/s0/IMG-20180427-WA0054%2B%25281%2529.jpg" imageanchor="1" &gt;&lt;img style= "width:100%" id=imgFull border="0" src="https://1.bp.blogspot.com/-RtYM683I4Tk/X8T3Bn0jOtI/AAAAAAAAJn8/HzQxMJC_SakzDfp3ddeU_3xHByLFaRcQgCLcBGAsYHQ/s0/IMG-20180427-WA0054%2B%25281%2529.jpg" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt;   &lt;p id="imgCaption"&gt;Irem presenting at a Google Developer Group event&lt;/p&gt; &lt;/center&gt;   &lt;p&gt;We recently caught up with Irem Komurcu, a TensorFlow developer and researcher at &lt;a href="https://www.google.com/search?q=Istanbul+Technical+University&amp;ludocid=5343688407989556761&amp;lsig=AB86z5VV6faGSxdKbSOLqkFAgn8C&amp;sa=X&amp;ved=2ahUKEwiH89HDp5ntAhUQxVkKHVWvCW0Q8G0oADARegQIExAB"&gt;Istanbul Technical University&lt;/a&gt; in Turkey. Irem has been a long-serving member of &lt;a href="https://developers.google.com/community/gdg/"&gt;Google Developer Groups&lt;/a&gt; (GDG) Düzce and also serves as a &lt;a href="https://www.womentechmakers.com/"&gt;Women Techmakers&lt;/a&gt; (WTM) ambassador. Her work with TensorFlow has received several accolades, including being named a &lt;a href="https://www.ulukayagirisimi.com/en/index.html"&gt;Hamdi Ulukaya Girişimi fellow.&lt;/a&gt; As one one of twenty-four young entrepreneurs selected, she was flown to New York City last year to learn more about business and receive professional development.  &lt;/p&gt;&lt;p&gt;With all this experience to share, we wanted you to hear how she approaches pursuing a career in tech, hones her TensorFlow skills with the GDG community, and thinks about how upcoming programmers can best position themselves for success. Check out the full interview below for more.  &lt;/p&gt; &lt;strong&gt;What inspired you to pursue a career in technology?&lt;/strong&gt;  &lt;p&gt;I first became interested in tech when I was in high school and went on to study computer engineering. At university, I had an eye-opening experience when I traveled from Turkey to the &lt;a href="https://developers.google.com/events/gdd-europe"&gt;Google Developer Day&lt;/a&gt; event in India. It was here where I observed various code languages, products, and projects that were new to me. &lt;/p&gt;&lt;p&gt;In particular, I saw &lt;a href="https://www.tensorflow.org/learn"&gt;TensorFlow&lt;/a&gt; in action for the first time. Watching the powerful machine learning tool truly sparked my interest in deep learning and project development.  &lt;/p&gt; &lt;strong&gt;Can you describe your work with TensorFlow and Machine Learning? &lt;/strong&gt;  &lt;p&gt;I have studied many different aspects of Tensorflow and ML. My first work was on voice recognition and deep learning. However, I am now working as a computer vision researcher conducting various segmentation, object detection, and classification processes with Tensorflow. In my free time, I write various &lt;a href="https://medium.com/@iremkomurcubm"&gt;articles&lt;/a&gt; about best practices and strategies to leverage TensorFlow in ML.  &lt;/p&gt; &lt;strong&gt;What has been a useful learning resource you have used in your career? &lt;/strong&gt;  &lt;p&gt;I kicked off my studies on deep learning on &lt;a href="https://www.tensorflow.org/"&gt;tensorflow.org.&lt;/a&gt; It’s a basic first step, but a powerful one. There were so many blogs, codes, examples, and tutorials for me to dive into. Both the Google Developer Group and TensorFlow communities also offered chances to bounce questions and ideas off other developers as I learned.  &lt;/p&gt; &lt;p&gt;Between these technical resources and the person-to-person support, I was lucky to start working with the GDG community while also taking the first steps of my career. There were so many opportunities to meet people and grow all around.  &lt;/p&gt; &lt;strong&gt;What is your favorite part of the Google Developer Group community?&lt;/strong&gt;  &lt;p&gt;I love being in a large community with technology-oriented people. GDG is a network of professionals who support each other, and that enables people to develop. I am continuously sharing my knowledge with other programmers as they simultaneously mentor me. The chance for us to collaborate together is truly fulfilling.  &lt;/p&gt; &lt;strong&gt;What is unique about being a developer in your country/region?&lt;/strong&gt;  &lt;p&gt;The number of women supported in science, technology, engineering, and mathematics (STEM) is low in Turkey. To address this, I partner with &lt;a href="https://www.womentechmakers.com/"&gt;Women Techmakers&lt;/a&gt; (WTM) to give educational talks on TensorFlow and machine learning to women who want to learn how to code in my country. So many women are interested in ML, but just need a friendly, familiar face to help them get started. With WTM, I’ve already given over 30 talks to women in STEM.  &lt;/p&gt; &lt;strong&gt;What advice would you give to someone who is trying to grow their career as a developer?&lt;/strong&gt;  &lt;p&gt;Keep researching new things. Read everything you can get your eyes on. Technology has been developing rapidly, and it is necessary to make sure your mind can keep up with the pace. That’s why I recommend communities like GDG that help make sure you’re up to date on the newest trends and learnings.   &lt;/p&gt; &lt;br&gt;   &lt;p&gt;Want to work with other developers like Irem? Then find the right Google Developer Developer Group for you, &lt;a href="https://gdg.community.dev/"&gt;here&lt;/a&gt;.  &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/7uUXZQq9gG4" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/1678959804520477171/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/11/irem-from-turkey-shares-her.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/1678959804520477171" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/1678959804520477171" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/7uUXZQq9gG4/irem-from-turkey-shares-her.html" title="Irem from Turkey shares her groundbreaking work in TensorFlow and advice for the community" /><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/-RtYM683I4Tk/X8T3Bn0jOtI/AAAAAAAAJn8/HzQxMJC_SakzDfp3ddeU_3xHByLFaRcQgCLcBGAsYHQ/s72-c/IMG-20180427-WA0054%2B%25281%2529.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/11/irem-from-turkey-shares-her.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-3161906313087259891</id><published>2020-11-25T10:26:00.003-08:00</published><updated>2020-11-30T06:51:00.808-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="augmented reality" /><category scheme="http://www.blogger.com/atom/ns#" term="developer student clubs" /><category scheme="http://www.blogger.com/atom/ns#" term="featured" /><category scheme="http://www.blogger.com/atom/ns#" term="Latest" /><category scheme="http://www.blogger.com/atom/ns#" term="machine learning" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title type="text">Irene from Spain inspires others to learn Google technologies with her new podcast and more </title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-7d2xRsdjYLQ/X76cgdmUYgI/AAAAAAAAJm0/1aYI84Rfj8s_XzmtM8E7GN4bsbK6L20RQCLcBGAsYHQ/s0/1_nFmewGiSKDs2e8ugx4lUHg%2B%25281%2529.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-7d2xRsdjYLQ/X76cgdmUYgI/AAAAAAAAJm0/1aYI84Rfj8s_XzmtM8E7GN4bsbK6L20RQCLcBGAsYHQ/s0/1_nFmewGiSKDs2e8ugx4lUHg%2B%25281%2529.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Erica Hanson, Global Program Manager, Google Developer Student Clubs &lt;/em&gt;&lt;p&gt;  &lt;center&gt; &lt;a href=" https://1.bp.blogspot.com/-7d2xRsdjYLQ/X76cgdmUYgI/AAAAAAAAJm0/1aYI84Rfj8s_XzmtM8E7GN4bsbK6L20RQCLcBGAsYHQ/s0/1_nFmewGiSKDs2e8ugx4lUHg%2B%25281%2529.png " imageanchor="1" &gt;&lt;img id=imgFull border="0" src="https://1.bp.blogspot.com/-7d2xRsdjYLQ/X76cgdmUYgI/AAAAAAAAJm0/1aYI84Rfj8s_XzmtM8E7GN4bsbK6L20RQCLcBGAsYHQ/s0/1_nFmewGiSKDs2e8ugx4lUHg%2B%25281%2529.png " data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt; (Irene (left) and her DSC team from the Polytechnic University of Cartagena (photo prior to COVID-19) &lt;/p&gt; &lt;/center&gt;    &lt;p&gt;Irene Ruiz Pozo is a former &lt;a href="https://developers.google.com/community/dsc"&gt;Google Developer Student Club&lt;/a&gt; (DSC) Lead at the Polytechnic University of Cartagena in Murcia, Spain. As one of the founding members, Irene has seen the club grow from just a few student developers at her university to hosting multiple learning events across Spain. Recently, we spoke with Irene to understand more about the unique ways in which her team helped local university students learn more about Google technologies.  &lt;/p&gt; &lt;h2&gt;Real world ML and AR learning opportunities  &lt;/h2&gt; &lt;p&gt;Irene mentioned two fascinating projects that she had the chance to work on through her DSC at the Polytechnic University of Cartagena. The first was a learning lab that helped students understand how to use 360º cameras and 3D scanners for machine learning.  &lt;/p&gt;  &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-HMcupHLMgvA/X76dHA5c9qI/AAAAAAAAJnA/_5sBrdNriacgu-gHmia63e3WALoQIJHhwCLcBGAsYHQ/s0/0_hcjkbdCeHINm3TIH%2B%25281%2529.jpeg" imageanchor="1" &gt;&lt;img id=imgFull border="0" src="https://1.bp.blogspot.com/-HMcupHLMgvA/X76dHA5c9qI/AAAAAAAAJnA/_5sBrdNriacgu-gHmia63e3WALoQIJHhwCLcBGAsYHQ/s0/0_hcjkbdCeHINm3TIH%2B%25281%2529.jpeg" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt; (A DSC member giving a demo of a 360º camera to students at the National Museum of Underwater Archeology in Cartagena) &lt;/p&gt; &lt;/center&gt;    &lt;p&gt;The second was a partnership with the National Museum of Underwater Archeology, where Irene and her team created an augmented reality game that let students explore a digital rendition of the museum’s exhibitions.  &lt;/p&gt;   &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-5FSbPmcgz2U/X76dbLMgNyI/AAAAAAAAJnI/s-C-3sWR1ToXABnDHgI8GWgzuJphtREnQCLcBGAsYHQ/s0/Sumerian%2BConsole%2B-%2BGoogle%2BChrome%2B01_06_2019%2B12_32_51.png " imageanchor="1" &gt;&lt;img id=imgFull border="0" src="https://1.bp.blogspot.com/-5FSbPmcgz2U/X76dbLMgNyI/AAAAAAAAJnI/s-C-3sWR1ToXABnDHgI8GWgzuJphtREnQCLcBGAsYHQ/s0/Sumerian%2BConsole%2B-%2BGoogle%2BChrome%2B01_06_2019%2B12_32_51.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt; (An image from the augmented reality game created for the National Museum of Underwater Archeology) &lt;/p&gt; &lt;/center&gt;     &lt;p&gt;In the above AR experience created by Irene’s team, users can create their own character and move throughout the museum and explore different virtual renditions of exhibits in a video game-like setting.  &lt;/p&gt; &lt;h2&gt;Hash Code competition and experiencing the Google work culture &lt;/h2&gt; &lt;p&gt;One particularly memorable experience for Irene and her DSC was participating in Google’s annual programming competition, &lt;a href="https://codingcompetitions.withgoogle.com/hashcode/"&gt;Hash Code&lt;/a&gt;. As Irene explained, the event allowed developers to share their skills and connect in small teams of two to four programmers. They would then come together to tackle engineering problems like how to best &lt;a href="https://storage.googleapis.com/coding-competitions.appspot.com/HC/2015/hashcode2015_qualification_task.pdf"&gt;design the layout of a Google data center&lt;/a&gt;, create the &lt;a href="https://storage.googleapis.com/coding-competitions.appspot.com/HC/2017/hashcode2017_qualification_task.pdf"&gt;perfect video streaming experience on YouTube&lt;/a&gt;, or establish the best practices for &lt;a href="https://storage.googleapis.com/coding-competitions.appspot.com/HC/2019/hashcode2019_final_task.pdf"&gt;compiling code at Google scale&lt;/a&gt;. &lt;/p&gt;  &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/--sewbo9Jd60/X76eCVXa50I/AAAAAAAAJnU/fbj2PB-C7DEFryYPprcDuIybbGNj1BnfQCLcBGAsYHQ/s0/1_BCgNvxwVNGO28C-ktU7B3Q%2B%25281%2529.png" imageanchor="1" &gt;&lt;img id=imgFull border="0" src="https://1.bp.blogspot.com/--sewbo9Jd60/X76eCVXa50I/AAAAAAAAJnU/fbj2PB-C7DEFryYPprcDuIybbGNj1BnfQCLcBGAsYHQ/s0/1_BCgNvxwVNGO28C-ktU7B3Q%2B%25281%2529.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt; (Students working on the Hash Code competition (photo taken prior to COVID-19) &lt;/p&gt; &lt;/center&gt;   &lt;p&gt;To Irene, the experience felt like a live look at being a software engineer at Google. The event taught her and her DSC team that while programming skills are important, communication and collaboration skills are what really help solve problems. For Irene, the experience truly bridged the gap between theory and practice.  &lt;/p&gt; &lt;h2&gt;Expanding knowledge with a podcast for student developers &lt;/h2&gt;  &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-pqyw75EZg8w/X76eZ_DkTQI/AAAAAAAAJnc/ON7N6eJ2w0cjP5Rm8mkcLgCleJe3KC7YgCLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252820%2529.png" imageanchor="1" &gt;&lt;img id=imgFull border="0" src=" https://1.bp.blogspot.com/-pqyw75EZg8w/X76eZ_DkTQI/AAAAAAAAJnc/ON7N6eJ2w0cjP5Rm8mkcLgCleJe3KC7YgCLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252820%2529.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt; (Irene’s team working with other student developers (photo taken before COVID-19) &lt;/p&gt; &lt;/center&gt;  &lt;p&gt;After the event, Irene felt that if a true mentorship network was established among other DSCs in Europe, students would feel more comfortable partnering with one another to talk about common problems they faced. Inspired, she began to build out her mentorship program which included a &lt;a href="https://youtu.be/cTqTK4Su2OI"&gt;podcast&lt;/a&gt; where student developers could collaborate on projects together.  &lt;/p&gt;&lt;p&gt;The podcast, which just released its &lt;a href="https://www.youtube.com/watch?v=WFKOWW_VrUQ"&gt;second episode&lt;/a&gt;, also highlights upcoming opportunities for students. In the most recent episode, Irene and friends dive into how to apply for Google Summer of Code Scholarships and talk about other upcoming open source project opportunities. Organizing these types of learning experiences for the community was one of the most fulfilling parts of working as a DSC Lead, according to Irene. She explained that the podcast has been an exciting space that allows her and other students to get more experience presenting ideas to an audience. Through this podcast, Irene has already seen many new DSC members eager to join the conversation and collaborate on new ideas.  &lt;/p&gt;&lt;p&gt;As Irene now looks out on her future, she is excited for all the learning and career development that awaits her from the entire Google Developer community. Having graduated from university, Irene is now a &lt;a href="https://developers.google.com/community/gdg/"&gt;Google Developer Groups&lt;/a&gt; (GDG) Lead - a program similar to DSC, but created for the professional developer community. In this role, she is excited to learn new skills and make professional connections that will help her start her career.  &lt;/p&gt;&lt;p&gt;Are you also a student with a passion for code? Then join a local Google Developer Student Club near you, &lt;a href="https://developers.google.com/community/dsc"&gt;here.&lt;/a&gt;  &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/yG9JQNcGphk" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/3161906313087259891/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/11/passionate-former-dsc-lead-irene.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/3161906313087259891" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/3161906313087259891" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/yG9JQNcGphk/passionate-former-dsc-lead-irene.html" title="Irene from Spain inspires others to learn Google technologies with her new podcast and more " /><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/-7d2xRsdjYLQ/X76cgdmUYgI/AAAAAAAAJm0/1aYI84Rfj8s_XzmtM8E7GN4bsbK6L20RQCLcBGAsYHQ/s72-c/1_nFmewGiSKDs2e8ugx4lUHg%2B%25281%2529.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/11/passionate-former-dsc-lead-irene.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-8146879799949039759</id><published>2020-11-20T00:30:00.004-08:00</published><updated>2020-11-20T12:49:18.861-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Black Consciousness Day" /><category scheme="http://www.blogger.com/atom/ns#" term="Brazil" /><category scheme="http://www.blogger.com/atom/ns#" term="celebrating" /><category scheme="http://www.blogger.com/atom/ns#" term="developers" /><category scheme="http://www.blogger.com/atom/ns#" term="Dia da Consciência Negra" /><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="stories" /><category scheme="http://www.blogger.com/atom/ns#" term="technology" /><title type="text">Celebrating devs from Brazil on Black Consciousness Day</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-leEjyIuvF8I/X7bi-9b__KI/AAAAAAAAJl4/2cUSI8Vu5zUEP90DCnSuvVNBs6H6Fg2NgCLcBGAsYHQ/s0/BCD_Thumbnail%2B-%2Bmain%2Bfilm.jpg"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-leEjyIuvF8I/X7bi-9b__KI/AAAAAAAAJl4/2cUSI8Vu5zUEP90DCnSuvVNBs6H6Fg2NgCLcBGAsYHQ/s0/BCD_Thumbnail%2B-%2Bmain%2Bfilm.jpg"&gt;  &lt;p&gt;&lt;em&gt;Posted by Patricia Correa - Director, Global Developer Marketing &lt;/em&gt;&lt;p&gt; &lt;p&gt;&lt;i&gt;Editor's note: Last night, on the eve of the Black Consciousness Day in Brazil, a Black man, João Alberto Silveira Freitas, died after being beaten at a supermarket in Porto Alegre, in the south of the country. We would like to express our sentiments to the Black community in Brazil.&lt;/i&gt; &lt;/p&gt;      &lt;p&gt;Today is Black Consciousness Day in Brazil, a country where over 55% of the population identifies as Black. To commemorate, we are showcasing local developers who create apps, games and websites. Watch this video to hear about their journeys, tips and passions.  &lt;/p&gt;  &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/k5J-XamMhGI" 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;strong&gt;Meet the founders &amp; developers &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Vitor Eleotério, Software Engineer at &lt;a href="https://play.google.com/store/apps/details?id=br.com.brainweb.ifood&amp;hl=en"&gt;iFood&lt;/a&gt;&lt;/strong&gt;, a popular food delivery app in Brazil. As much as he liked technology, his colleagues used to mock and discourage him. Vitor heard many times that he would be a great security man as he is tall and strong. People kept saying that IT was only for rich people.  With his passion and hard work, he proved them all wrong. Now, he wants to motivate others to also follow their dreams. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Priscila Aparecida Ferreira Theodoro, Software Engineer at &lt;a href="https://www.centauro.com.br/"&gt;Centauro&lt;/a&gt;&lt;/strong&gt;, a large sports goods retailer in Brazil. Her first contact with technology happened while working at an organization that teaches programming. At 38 years old, Priscila decided to completely change careers and learn how to code. She now teaches programming to women, mentors youths, and is involved in a podcast project for women developers.  &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Marcos Pablo, Co-founder &amp; CTO at &lt;a href="http://www.g4services.com.br/"&gt;G4IT Solutions&lt;/a&gt;&lt;/strong&gt;,&lt;strong&gt; &lt;/strong&gt;a platform that helps companies to manage and automate the work schedules of off-site teams. It was his mother who encouraged him to enter the tech world when he was in high school. By the time he was 19 years old, he was already managing a small tech company. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Iago Silva Dos Santos, Co-founder &amp; CEO of &lt;a href="https://www.trazfavela.com.br/"&gt;Trazfavela Delivery&lt;/a&gt;&lt;/strong&gt;, a platform for deliveries to and from favelas. He wanted to help his community, including drivers, retailers and people who wanted easier access to goods. TrazFavela is one of the first companies to receive investment from the &lt;a href="https://www.campus.co/sao-paulo/black-founders-fund/"&gt;Google for Startups Black Founders Fund&lt;/a&gt; in Brazil.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tiago Santos, Founder &amp; CEO of &lt;a href="https://husky.io/"&gt;Husky&lt;/a&gt;&lt;/strong&gt;, an app for Brazilian professionals to receive international payments. As a software developer working with international clients, Tiago had experienced first hand how difficult it was to get payments from abroad. With his friend Mauricio Carvalho  he created the app so professionals can focus on their careers instead of wasting  time with bureaucratic tasks.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Ronaldo Valentino da Cruz, Co-founder &amp; CEO of &lt;a href="https://www.oktagon.com.br/"&gt;Oktagon&lt;/a&gt;&lt;/strong&gt;,&lt;strong&gt; &lt;/strong&gt;a games studio that produces indie titles and games for clients. He learned how to program when he was 14 and started working with game development in 2002 at the Universidade Federal Tecnológica do Paraná. So far, the company has launched well-received mid-core titles and worked with publishers and clients all over the world. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Nohoa Arcanjo Allgayer, Co-founder &amp; CMO of &lt;a href="https://creators.llc/"&gt;Creators.LLC&lt;/a&gt;&lt;/strong&gt;, a network that connects creative talent with potential clients. For Nohoa, it was not an easy decision to quit her previous comfortable corporate job to set up this startup. Now she is proud of the risk she took, as it opened up a world of opportunity and endless learning. She took part in the &lt;a href="https://www.campus.co/google-for-startups-residency/"&gt;Google for Startups Residency Program&lt;/a&gt;. Creators.LLC was one of the first startups to receive capital from the &lt;a href="https://www.campus.co/sao-paulo/black-founders-fund/"&gt;Google for Startups Black Founders Fund&lt;/a&gt; in Brazil.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Samuel Matias, Software Engineer at &lt;a href="https://play.google.com/store/apps/details?id=br.com.brainweb.ifood&amp;hl=pt_BR"&gt;iFood&lt;/a&gt;. &lt;/strong&gt;He became a developer in 2015 and is very active in the Flutter community. He frequently shares his learnings through online articles and talks.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Aline Bezzoco, Founder &amp; Developer of &lt;a href="https://play.google.com/store/apps/details?id=com.ionicframework.tatudobemapp&amp;hl=pt_BR"&gt;Ta tudo bem?&lt;/a&gt;&lt;/strong&gt; - a suicide prevention app . She feels that the best thing about technology is being able to create solutions to help people. Her app aids those struggling with mental health problems to feel calmer, less anxious and ask for help. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Egio Arruda Junior, Co-founder &amp; CEO of &lt;a href="https://easycredito.com.br/home"&gt;EasyCrédito&lt;/a&gt;, &lt;/strong&gt;a platform that facilitates loans. The main focus is to help those who don’t even have bank accounts. Egio is passionate about innovation and is always looking to create something new. He took part in two Google for Startups programs - &lt;a href="https://www.campus.co/google-for-startups-residency/"&gt;Residency&lt;/a&gt; and &lt;a href="https://www.campus.co/google-for-startups-accelerator-global/"&gt;Accelerator&lt;/a&gt;.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Márcio Dos Santos, Co-founder &amp; CTO at &lt;a href="http://www.facio.com.br"&gt;Facio&lt;/a&gt;&lt;/strong&gt;, a platform that provides loans and financial education to employees in Brazil. Amongst his family and friends, there was no one who had completed a higher education degree. He decided to study Computer Science because he was a video game fan. At University, a professor selected him to do an internship in the United States. Currently based in Seattle, USA, Márcio likes to be approached for advice by those at the beginning of their careers. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Danielle Monteiro, Data Engineer &amp; Founder of &lt;a href="https://dani.academy/"&gt;Dani.Academy&lt;/a&gt;&lt;/strong&gt;,&lt;strong&gt; &lt;/strong&gt;an educational platform with free and paid courses about data, architecture, NoSQL and infrastructure. She was the first member of her family to start and finish college. She has now won many awards in and outside Brazil, and is a Google for Startups Mentor. Dani is passionate about giving back to society by sharing her knowledge through her &lt;a href="http://db4beginners.com/"&gt;blog&lt;/a&gt;, lectures, courses and articles. &lt;/p&gt;&lt;p&gt;--- &lt;/p&gt; &lt;p&gt;These are just some of the stories that show that the tech world is not for a few but for everyone. Together we can create change and see more Black people finding opportunities in tech. Celebrate these stories by sharing the video on &lt;a href="https://twitter.com/googledevs/status/1329832130113908736"&gt;Twitter,&lt;/a&gt; Instagram, &lt;a href="https://www.facebook.com/permalink.php?story_fbid=3675411615824038&amp;id=967415219957038"&gt;Facebook&lt;/a&gt; &amp; &lt;a href="https://www.linkedin.com/posts/googleplaydev_today-is-black-consciousness-day-in-brazil-activity-6735605407445737472-eSaX/"&gt;LinkedIn&lt;/a&gt;.  &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/_J15i8CkCzk" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/8146879799949039759/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/11/celebrating-devs-from-brazil-on-black.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/8146879799949039759" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/8146879799949039759" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/_J15i8CkCzk/celebrating-devs-from-brazil-on-black.html" title="Celebrating devs from Brazil on Black Consciousness Day" /><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/-leEjyIuvF8I/X7bi-9b__KI/AAAAAAAAJl4/2cUSI8Vu5zUEP90DCnSuvVNBs6H6Fg2NgCLcBGAsYHQ/s72-c/BCD_Thumbnail%2B-%2Bmain%2Bfilm.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/11/celebrating-devs-from-brazil-on-black.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-3310483705815811739</id><published>2020-11-19T14:11:00.007-08:00</published><updated>2020-11-25T10:03:17.079-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI" /><category scheme="http://www.blogger.com/atom/ns#" term="Coral" /><category scheme="http://www.blogger.com/atom/ns#" term="Coral updates" /><category scheme="http://www.blogger.com/atom/ns#" term="Edge AI" /><category scheme="http://www.blogger.com/atom/ns#" term="machine learning" /><category scheme="http://www.blogger.com/atom/ns#" term="TensorFlow" /><title type="text">Coral makes edge AI even more accessible in 2020</title><content type="html">&lt;meta name="twitter:title" content="Coral makes edge AI even more accessible in 2020"&gt;&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-O9hglHVwTi0/X7bWAqJOdII/AAAAAAAAJlU/pacZmFzeockbA9jBEWtpBs7MuNuWRXGlwCLcBGAsYHQ/s0/Coral%2BShoot1646.png"/&gt; &lt;em&gt;Posted by the Coral team&lt;/em&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-O9hglHVwTi0/X7bWAqJOdII/AAAAAAAAJlU/pacZmFzeockbA9jBEWtpBs7MuNuWRXGlwCLcBGAsYHQ/s0/Coral%2BShoot1646.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Coral Dev Board Mini and Accelerator Module feature Google's Edge TPU co-processor to accelerate AI at the edge." border="0" data-original-height="1037" data-original-width="1694" src="https://1.bp.blogspot.com/-O9hglHVwTi0/X7bWAqJOdII/AAAAAAAAJlU/pacZmFzeockbA9jBEWtpBs7MuNuWRXGlwCLcBGAsYHQ/s0/Coral%2BShoot1646.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Since we launched Coral back in March 2019, we’ve added a number of new product form factors to accommodate the many ways users are adding on-device ML to their products. We've also streamlined the ML workflow and added capabilities like model pipelining with multiple Edge TPUs for an easier and more robust developer experience. And from this, we’ve helped enable amazing use cases from &lt;a href="https://coral.ai/news/olea-edge/"&gt;smart water meters&lt;/a&gt; that prevent water loss with Olea Edge, to systems for &lt;a href="https://coral.ai/news/farmwave/"&gt;improving harvest yield&lt;/a&gt; with Farmwave, to noise cancellation in meetings in &lt;a href="https://coral.ai/news/series-one/"&gt;Google’s own Series One meeting kits&lt;/a&gt;.  &lt;/p&gt;&lt;p&gt;This week, we’ll begin shipping the &lt;a href="https://coral.ai/products/accelerator-module/"&gt;Coral Accelerator Module&lt;/a&gt;, a multi-chip module that combines the Edge TPU and it’s power circuitry into a solderable package. The module exposes PCIe and USB2 interfaces, which make it even easier to integrate Coral into custom designs. Several companies are already taking advantage of the compact size and capabilities with their new products coming to market. &lt;a href="http://coral.ai/news/coral-accelerator-module"&gt;Read more &lt;/a&gt;about how Gumstix, STD, Siana Systems and IEI are using our module.  &lt;/p&gt;&lt;p&gt;And in December, we’ll begin shipping the &lt;a href="https://coral.ai/products/dev-board-mini/"&gt;Dev Board Mini&lt;/a&gt;, a smaller, more power-efficient, and value-oriented board that brings forward a more traditional, flattened single-board computer design. The Dev Board Mini pairs a Mediatek 8167 SoC with the Coral Accelerator Module over USB 2 and is a great way to evaluate the module as the center of a project or deployment.  &lt;/p&gt;&lt;p&gt;You can see the new Dev Board Mini and Accelerator Module in action in the &lt;a href="https://www.youtube.com/watch?v=nJ8Qs_RFWZc"&gt;latest episode of Level Up&lt;/a&gt;, where Markku Lepisto controls his studio lights with speech commands.  &lt;/p&gt;&lt;p&gt;To get updates on when the board will be available for purchase and other Coral news, &lt;a href="https://coral.ai/news/signup/"&gt;sign up for our newsletter.&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;Developing for the edge, now simplified  &lt;/h2&gt;&lt;p&gt;We recently announced &lt;a href="https://coral.ai/news/updates-11-2020/"&gt;a new version&lt;/a&gt; of the Coral ML APIs and tools. This release brings the C++ API into parity with Python and makes it more modular, reusable and performant.  At the same time it eliminates unnecessary abstractions and surfaces replacing them with native TensorFlow Lite APIs. This release also graduates the Model Pipelining API out of beta and introduces a new model partitioner that automatically partitions models based on profiling and up to 10x better performance.  &lt;/p&gt;&lt;p&gt;We’ve added a pre-trained version of MobileDet — a state-of-the-art object detection model for mobile systems — into our &lt;a href="https://coral.ai/models/"&gt;models portfolio&lt;/a&gt;.  We’re migrating our model-development workflow to TensorFlow 2, and we’re including a handful of updated or new models based on the TF2 Keras framework.  For details, check out the full announcement on the &lt;a href="https://blog.tensorflow.org/2020/11/new-coral-apis-and-tools-for-ai-at-edge.html"&gt;TensorFlow blog&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;We’re also excited to see great developer tools coming from our ecosystem partners.  For example, &lt;a href="https://www.perceptilabs.com/home"&gt;PerceptiLabs&lt;/a&gt; offers a visual API for building TensorFlow models and recently published&lt;a href="https://perceptilabs.com/docs/coral_tutorial"&gt; a new demo&lt;/a&gt; which trains a machine learning model to identify sign language optimized for the edge with Coral.   &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/--12PqDlghGQ/X7bWZdLKF9I/AAAAAAAAJlc/QXu1Yz_C7mY6ub6yKYB2My4OS55wM5spACLcBGAsYHQ/s0/PGH50162.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="The MRQ design from SigFox enables prototyping at the edge for low bandwidth IoT solutions with Coral" border="0" data-original-height="1372" data-original-width="1920" src="https://1.bp.blogspot.com/--12PqDlghGQ/X7bWZdLKF9I/AAAAAAAAJlc/QXu1Yz_C7mY6ub6yKYB2My4OS55wM5spACLcBGAsYHQ/s0/PGH50162.png"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;p id="imgCaption"&gt;The MRQ design from SigFox enables prototyping at the edge for low bandwidth IoT solutions with Coral&lt;/p&gt; &lt;p&gt;And SigFox released a radio transceiver board that stacks on either the Coral Dev Board or Dev Board Mini. This allows small data payloads to be transmitted across low power, long range radio networks for use cases like smart cities, fleet management, asset tracking, agriculture and energy. The PCB design will be offered as a free download on &lt;a href="https://build.sigfox.com/login?next=/coral-edge-computing"&gt;SigFox’s website&lt;/a&gt;. Google Cloud Solutions Architect Markku Lepisto will present the new design today, in the opening keynote at &lt;a href="https://www.sigfoxconnnect.com/"&gt;SigFox Connect&lt;/a&gt;.  &lt;/p&gt;&lt;h2&gt;Customers with a Coral edge  &lt;/h2&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-wHWV7TVit4I/X7bWrpxNLQI/AAAAAAAAJlk/iLjsUC_lq84i0BhnUTy-woNHPGKhGFR0gCLcBGAsYHQ/s0/UIimagestogetherfarmwave.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="The tool, from Farmwave, includes custom-developed ML models, a harvester-mounted box with cameras, an in-cab display, and on- device AI acceleration from Coral." border="0" data-original-height="1440" data-original-width="1920" src="https://1.bp.blogspot.com/-wHWV7TVit4I/X7bWrpxNLQI/AAAAAAAAJlk/iLjsUC_lq84i0BhnUTy-woNHPGKhGFR0gCLcBGAsYHQ/s0/UIimagestogetherfarmwave.png"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;p id="imgCaption"&gt;The tool, from Farmwave, includes custom-developed ML models, a harvester-mounted box with cameras, an in-cab display, and on- device AI acceleration from Coral.&lt;/p&gt; &lt;p&gt;Just in time for harvest we wanted to share a story about how &lt;a href="http://coral.ai/news/farmwave"&gt;Farmwave&lt;/a&gt; is using Coral to improve the efficiency of farm equipment and reduce food waste. Traditional yield loss analysis involves hand-counting grains of corn left on the ground mid harvest. It’s a time and labor intensive task, and not feasible for farmers who measure the value of their half-million-dollar combines in minutes spent running them.   &lt;/p&gt;&lt;p&gt;By leveraging Coral’s on-device AI capabilities, Farmwave was able to build a system that automates the count while the machine is running. Thus allowing farmers to make real-time adjustments to harvesting machines in response to conditions in the field, which can make a big difference in yield.  &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-L0iAEAcihFM/X7bXFgVQE9I/AAAAAAAAJls/OK2Lt1HhlnwbAqRbDGZKRnCtOdTSWrNtgCLcBGAsYHQ/s0/1408%25E3%2583%25AC%25E3%2583%25BC%25E3%2583%25B3_8333.jpg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Kura Sushi designed their intelligent QA system using a Raspberry Pi paired with the Coral USB Accelerator" border="0" data-original-height="1364" data-original-width="2048" src="https://1.bp.blogspot.com/-L0iAEAcihFM/X7bXFgVQE9I/AAAAAAAAJls/OK2Lt1HhlnwbAqRbDGZKRnCtOdTSWrNtgCLcBGAsYHQ/s0/1408%25E3%2583%25AC%25E3%2583%25BC%25E3%2583%25B3_8333.jpg"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;p id="imgCaption"&gt;Kura Sushi designed their intelligent QA system using a Raspberry Pi paired with the Coral USB Accelerator&lt;/p&gt; &lt;p&gt;&lt;a href="https://coral.ai/news/"&gt;Kura Revolving Sushi Bar &lt;/a&gt;in Japan has always been committed to the highest standards of health and safety for its customers. Known for their tech forward approach, Kura has dabbled in sushi making robots, an automated prize machine called Bikkura-pon, and a patented dome-shaped dish cover, aptly dubbed Mr. Fresh. But most recently, Kura has used Coral to develop an AI powered system that not only facilitates efficiency for better customer experiences, but also enables better tracking to prevent foodborne illnesses. &lt;/p&gt;&lt;h2&gt;Making AI more accessible &lt;/h2&gt;&lt;p&gt;While this year has presented the world with many obstacles, we’ve been impressed by the new ideas and innovations coming forward through technology.  By providing the necessary tools and technology for edge AI, we strive to empower society to create affordable, adaptable, and intelligent systems. &lt;/p&gt;&lt;p&gt;We are excited to share all that Coral has to offer as we evolve our platform. For a list of worldwide distributors, system integrators and partners, visit the &lt;a href="https://coral.ai/partnerships/"&gt;Coral partnerships page&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;Please visit &lt;a href="https://coral.ai/"&gt;Coral.ai&lt;/a&gt; to discover more about our edge ML platform and share your feedback at &lt;a href="mailto:coral-support@google.com"&gt;coral-support@google.com&lt;/a&gt;. To receive future Coral updates directly in your inbox,  sign up for our &lt;a href="http://coral.ai/news/signup/"&gt;newsletter&lt;/a&gt;.  &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/VBEywTILEzk" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/3310483705815811739/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/11/coral-makes-edge-ai-even-more-accessible-in-2020.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/3310483705815811739" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/3310483705815811739" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/VBEywTILEzk/coral-makes-edge-ai-even-more-accessible-in-2020.html" title="Coral makes edge AI even more accessible in 2020" /><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/-O9hglHVwTi0/X7bWAqJOdII/AAAAAAAAJlU/pacZmFzeockbA9jBEWtpBs7MuNuWRXGlwCLcBGAsYHQ/s72-c/Coral%2BShoot1646.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/11/coral-makes-edge-ai-even-more-accessible-in-2020.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-6345491852200823648</id><published>2020-11-12T10:00:00.002-08:00</published><updated>2020-11-12T10:00:55.485-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="featured" /><category scheme="http://www.blogger.com/atom/ns#" term="Latest" /><title type="text">Welcome Android Open Source Project (AOSP) to the Bazel ecosystem</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-DSCAdrbTFi0/X61CtJQSDpI/AAAAAAAAJj4/nuyfkP3ofL8cEFG8_ojsS9Idan1roOCgACLcBGAsYHQ/s0/BazelCon_Email-01.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-DSCAdrbTFi0/X61CtJQSDpI/AAAAAAAAJj4/nuyfkP3ofL8cEFG8_ojsS9Idan1roOCgACLcBGAsYHQ/s0/BazelCon_Email-01.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Joe Hicks, Product Manager, Core Developer &lt;/em&gt;&lt;p&gt;      &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-DSCAdrbTFi0/X61CtJQSDpI/AAAAAAAAJj4/nuyfkP3ofL8cEFG8_ojsS9Idan1roOCgACLcBGAsYHQ/s0/BazelCon_Email-01.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="BazelCon logo image" border="0" data-original-height="967" data-original-width="2670" src="https://1.bp.blogspot.com/-DSCAdrbTFi0/X61CtJQSDpI/AAAAAAAAJj4/nuyfkP3ofL8cEFG8_ojsS9Idan1roOCgACLcBGAsYHQ/s0/BazelCon_Email-01.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;After significant investment in understanding how best to build the Android Platform correctly and quickly, we are pleased to announce that the Android Platform is migrating from its current build systems (Soong and Make) to &lt;a href="https://www.bazel.build/"&gt;Bazel&lt;/a&gt;. While components of Bazel have been already &lt;a href="https://cs.android.com/android/platform/superproject/+/master:build/bazel/"&gt;checked into the Android Open Source Project (AOSP) source tree&lt;/a&gt;, this will be a phased migration over the next few Android releases which includes many concrete and digestible milestones to make the transformation as seamless and easy as possible. There will be no immediate impact to the Android Platform build workflow or the existing supported Android Platform Build tools in 2020 or 2021.  Some of the changes to support Android Platform builds are already in Bazel, such as Bazel’s ability to parse and execute Ninja files to support a gradual migration. &lt;/p&gt;&lt;p&gt;Migrating to Bazel will enable AOSP to: &lt;/p&gt;&lt;ul&gt; &lt;li&gt;Provide more flexibility for configuring the AOSP build (better support for conditionals)  &lt;li&gt;Allow for greater introspection into the AOSP build progress and dependencies  &lt;li&gt;Enable correct and reproducible (hermetic) AOSP builds  &lt;li&gt;Introduce a configuration mechanism that will reduce complexity of AOSP builds  &lt;li&gt;Allow for greater integration of  build and test activities  &lt;li&gt;Combine all of these to drive significant improvements in build time and experience &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The benefits of this migration to the Bazel community are: &lt;/p&gt;&lt;ul&gt; &lt;li&gt;Significant ongoing investment in Bazel to support Android Platform builds  &lt;li&gt;Expansion of the Bazel ecosystem and community to include, initially, tens of thousands of Android Platform developers and Android handset OEMs and chipset vendors.  &lt;li&gt;Google’s Bazel rules for building Android apps will be open sourced, used in AOSP, and maintained by Google in partnership with the Android / Bazel community  &lt;li&gt;Better Bazel support for building Android Apps  &lt;li&gt;Better rules support for other languages used to build Android Platform (Rust, Java, Python, Go, etc)  &lt;li&gt;Strong support for &lt;a href="https://blog.bazel.build/2020/11/10/long-term-support-release.html"&gt;Bazel Long Term Support (LTS) releases&lt;/a&gt;, which benefits the expanded Bazel community  &lt;li&gt;Improved documentation (tutorials and reference) &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The recent check-in of Bazel to AOSP begins an initial pilot phase, enabling Bazel to be used in place of Ninja as the execution engine to build AOSP.  Bazel can also explore the AOSP build graph. We're pleased to be developing this functionality directly in the Bazel and AOSP codebases.  As with most initial development efforts, this work is experimental in nature. Remember to use the currently supported Android Platform Build System for all production work. &lt;/p&gt;&lt;p&gt;We believe that these updates to the Android Platform Build System enable greater developer velocity, productivity, and happiness across the entire Android Platform ecosystem. &lt;/p&gt;&lt;p&gt;Joe (on behalf of the Bazel and AOSP infrastructure teams) &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/15OuWJYiEMo" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/6345491852200823648/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/11/welcome-android-open-source-project.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/6345491852200823648" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/6345491852200823648" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/15OuWJYiEMo/welcome-android-open-source-project.html" title="Welcome Android Open Source Project (AOSP) to the Bazel ecosystem" /><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/-DSCAdrbTFi0/X61CtJQSDpI/AAAAAAAAJj4/nuyfkP3ofL8cEFG8_ojsS9Idan1roOCgACLcBGAsYHQ/s72-c/BazelCon_Email-01.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/11/welcome-android-open-source-project.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-4968749044017797829</id><published>2020-11-12T08:32:00.005-08:00</published><updated>2020-12-04T15:15:51.822-08: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="online payments" /><title type="text">The digital wallet is here to stay. It’s time for your business to cash in.</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-k-wZ3dUxr-0/X6WoJGmIxLI/AAAAAAAAJi8/rS2IjvBl1l4bp4KFwfWNjnyIBJlxsrKMQCLcBGAsYHQ/s0/image%2B1.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-k-wZ3dUxr-0/X6WoJGmIxLI/AAAAAAAAJi8/rS2IjvBl1l4bp4KFwfWNjnyIBJlxsrKMQCLcBGAsYHQ/s0/image%2B1.png"&gt;    &lt;p&gt;&lt;em&gt;Posted by Cole Stuart, Google Pay Product Marketing&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Digital wallets are rapidly growing in popularity, as adoption from users and acceptance from businesses has expanded significantly over recent years. As we have seen in recent months, this trend towards digital payments over traditional card or cash transactions has only accelerated during the COVID-19 pandemic. Over 40% of global ecommerce spending in 2019 came from a digital wallet like Google Pay, Apple Pay, or Alipay according to the FIS Global Payments Report&lt;sup&gt;1&lt;/sup&gt;. This year, over one billion shoppers are expected to make a digital wallet transaction. &lt;/p&gt;&lt;p&gt;We believe this is just the beginning. In the next five years, digital wallet adoption is expected to increase dramatically. Worldpay’s &lt;a href="https://static.googleusercontent.com/media/pay.google.com/en//about/business/static/data/gpay_worldpay-whitepaper.pdf"&gt;white paper&lt;/a&gt; explores how adopting digital wallets can benefit businesses like yours. Some of the key takeaways are highlighted below. &lt;/p&gt;&lt;p&gt;   &lt;/p&gt;&lt;p&gt;&lt;strong&gt;What digital wallets have to offer&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Digital wallets, such as Google Pay, have the ability to not only improve your business outcomes, but also provide unique value to everyday consumers. Benefits include: &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;ul&gt; &lt;li&gt;Higher conversion rates  &lt;li&gt;Seamless checkout experience  &lt;li&gt;Reduced cart abandonment  &lt;li&gt;Advanced security and protection  &lt;/ul&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-k-wZ3dUxr-0/X6WoJGmIxLI/AAAAAAAAJi8/rS2IjvBl1l4bp4KFwfWNjnyIBJlxsrKMQCLcBGAsYHQ/s0/image%2B1.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Google Pay checkout screen" border="0" data-original-height="349" data-original-width="512" src="https://1.bp.blogspot.com/-k-wZ3dUxr-0/X6WoJGmIxLI/AAAAAAAAJi8/rS2IjvBl1l4bp4KFwfWNjnyIBJlxsrKMQCLcBGAsYHQ/s0/image%2B1.png"/&gt;&lt;/a&gt;&lt;/div&gt;   &lt;p&gt;&lt;strong&gt;Digital wallets vs. ordinary card transactions&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://goo.gle/worldpay-whitepaper"&gt;Real tangible benefits&lt;/a&gt; are found when businesses adopt a digital wallet. Findings include: &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;ul&gt; &lt;li&gt;Digital wallet transactions showed significantly higher acceptance rates and significantly lower chargeback rates for businesses compared with ordinary card transactions&lt;sup&gt;2&lt;/sup&gt;. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;  &lt;/p&gt;&lt;ul&gt; &lt;li&gt;Even though transaction volumes for digital wallets were lower than cards in most markets, the value of US digital wallet transactions were on average 25% greater than ordinary card transactions in 2019&lt;sup&gt;2&lt;/sup&gt;. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;How to bring Google Pay into your business&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Ready to adopt a digital wallet and give your customers a seamless transaction experience in just 4 easy steps? Sign up with the Business Console &lt;a href="https://goo.gle/pay-console"&gt;here&lt;/a&gt; and visit our &lt;a href="http://goo.gle/Google-Pay-APIs"&gt;developer's site&lt;/a&gt; for more information. You can also find the full whitepaper &lt;a href="https://static.googleusercontent.com/media/pay.google.com/en//about/business/static/data/gpay_worldpay-whitepaper.pdf"&gt;here&lt;/a&gt;, alongside previous case studies that prove how Google Pay has helped drive lasting impact for other businesses.  &lt;/p&gt;  &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-_mIEGNKgQ7U/X6WpvVodWQI/AAAAAAAAJjI/Jb4xT_kUXwAwRD1Hoj25JLd-DxOL8quYACLcBGAsYHQ/s0/image%2B2.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Chart of Business Console process" border="0" data-original-height="164" data-original-width="512" src="https://1.bp.blogspot.com/-_mIEGNKgQ7U/X6WpvVodWQI/AAAAAAAAJjI/Jb4xT_kUXwAwRD1Hoj25JLd-DxOL8quYACLcBGAsYHQ/s0/image%2B2.png"/&gt;&lt;/a&gt;&lt;/div&gt; We continue to build partnerships with top e-commerce platforms to help you easily integrate Google Pay. Please see the &lt;a href="https://goo.gle/GooglePay-Magento-Plugin"&gt;Google Pay plugin for Magento 2&lt;/a&gt;, &lt;a href="https://help.shopify.com/en/manual/payments/accelerated-checkouts/google-pay"&gt;Shopify&lt;/a&gt;, &lt;a href="https://support.bigcommerce.com/s/article/Connecting-with-Google-Pay"&gt;Big Commerce&lt;/a&gt;, &lt;a href="https://woocommerce.com/"&gt;WooCommerce&lt;/a&gt;, and &lt;a href="https://www.opencart.com/index.php?route=marketplace/extension/info&amp;extension_id=37076&amp;filter_member=OpenCart "&gt;OpenCart&lt;/a&gt;.   &lt;p&gt;Liked our whitepaper? Reach out directly to the contacts below. &lt;/p&gt;&lt;p&gt;&lt;span style="text-decoration:underline;"&gt;Google:&lt;/span&gt;&lt;/p&gt;&lt;div style="line-height:0.5em;"&gt;&lt;p&gt;Steve Klebe&lt;/p&gt;&lt;p&gt;Head of PSP Partnerships, Google Pay&lt;/p&gt;&lt;p&gt;sklebe@google.com&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="text-decoration:underline;"&gt;Worldpay:       &lt;/span&gt;&lt;/p&gt;&lt;div style="line-height:0.5em;"&gt;&lt;p&gt;Rami Josef&lt;/p&gt;&lt;p&gt;Senior Product Manager, Worldpay&lt;/p&gt;&lt;p&gt;rami.josef@fisglobal.com&lt;/p&gt;&lt;/div&gt;&lt;/br&gt;&lt;div style="line-height:1.2em;"&gt;&lt;p&gt;[1] - Worldpay by FIS&lt;a href=" https://worldpay.globalpaymentsreport.com/#/en"&gt; Global Payments Report&lt;/a&gt;&lt;br&gt;[2] - Sourced from Worldpay’s Worldwide Payments Gateway (WPG) using data from Q4 2018 through Q1 2020   &lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;What do you think?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Do you have any questions? Let us know in the comments below or tweet using &lt;strong&gt;#AskGooglePayDev.&lt;/strong&gt;  &lt;/p&gt; &lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/3OOUXtQjg7U" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/4968749044017797829/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/11/the-digital-wallet-is-here-to-stay.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/4968749044017797829" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/4968749044017797829" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/3OOUXtQjg7U/the-digital-wallet-is-here-to-stay.html" title="The digital wallet is here to stay. It’s time for your business to cash in." /><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/-k-wZ3dUxr-0/X6WoJGmIxLI/AAAAAAAAJi8/rS2IjvBl1l4bp4KFwfWNjnyIBJlxsrKMQCLcBGAsYHQ/s72-c/image%2B1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/11/the-digital-wallet-is-here-to-stay.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-164528088553684976</id><published>2020-11-11T07:00:00.004-08:00</published><updated>2020-11-11T07:17:56.177-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="featured" /><category scheme="http://www.blogger.com/atom/ns#" term="Latest" /><title type="text">Get ready for BazelCon 2020</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-nf_zVDELDwA/X6rA0V9YqTI/AAAAAAAAJjk/fJLV6P5mw_E0euJcuHb5ZCshoCZo-GqcQCLcBGAsYHQ/s0/BazelCon_Blog_v1.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-nf_zVDELDwA/X6rA0V9YqTI/AAAAAAAAJjk/fJLV6P5mw_E0euJcuHb5ZCshoCZo-GqcQCLcBGAsYHQ/s0/BazelCon_Blog_v1.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Joe Hicks, Product Manager, Core Developer &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/-nf_zVDELDwA/X6rA0V9YqTI/AAAAAAAAJjk/fJLV6P5mw_E0euJcuHb5ZCshoCZo-GqcQCLcBGAsYHQ/s0/BazelCon_Blog_v1.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="BazelCon 2020 image" border="0" data-original-height="1041" data-original-width="2082" src="https://1.bp.blogspot.com/-nf_zVDELDwA/X6rA0V9YqTI/AAAAAAAAJjk/fJLV6P5mw_E0euJcuHb5ZCshoCZo-GqcQCLcBGAsYHQ/s0/BazelCon_Blog_v1.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;   &lt;p&gt;With only 24 hours to go, BazelCon 2020 is shaping up to be a much anticipated gathering for the Bazel community and broader Build ecosystem. With over 1000 attendees, presentations by Googlers, as well as talks from industry Build leaders from Twitter, Dropbox, Uber, Pinterest, GrabTaxi, and more, we hope BazelCon 2020 will provide an opportunity for knowledge sharing, networking, and community building. &lt;/p&gt;&lt;p&gt;I am very excited by the keynote announcements, the migration stories at Twitter, Pinterest, and CarGurus, as well as technical deep dives on Bazel persistent workers, incompatible target skipping, migrating from Gradle to Bazel, and more. The “sold out” Birds of a Feather sessions and the Live Q&amp;A with the Bazel team will bring the community together to discuss design docs, look at landings, and provide feedback on the direction of Bazel and the entire ecosystem. &lt;/p&gt; &lt;p&gt;We are also pleased to announce that, starting with the &lt;a href="https://blog.bazel.build/2020/11/10/bazel-4.0-announce.html"&gt;next major release (4.0)&lt;/a&gt;, &lt;a href="https://blog.bazel.build/2020/11/10/long-term-support-release.html"&gt;Bazel will support Long Term Support (LTS) releases&lt;/a&gt; as well as regular Rolling releases. &lt;/p&gt; &lt;p&gt;Some benefits of this new release cadence are: &lt;/p&gt;&lt;ul&gt; &lt;li&gt;Bazel will release stable, supported LTS releases on a predictable schedule with a long window without breaking changes  &lt;li&gt;Bazel contributors / rules owners can prepare to support future LTS releases via rolling releases.  &lt;li&gt;Bazel users can choose the release cadence that works best for them, since we will offer both LTS releases and rolling releases.  &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Long Term Support (LTS) releases: &lt;/p&gt;&lt;ul&gt; &lt;li&gt;We will create an LTS release every ~9 months =&gt; new LTS release branch, increment major version number.  &lt;li&gt;Each LTS release will include all new features, bug fixes and (breaking) changes since the last major version.  &lt;li&gt;Bazel will actively support each LTS branch for 9 months with critical bug fixes, but no new features.  &lt;li&gt;Thereafter, Bazel will provide maintenance for two additional years with only security and OS compatibility fixes.  &lt;li&gt;Bazel Federation reboot: Bazel will provide guidance about the ruleset versions that should be used with each Bazel release so that each user will not have to manage interoperability themselves. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Make sure that you register at &lt;a href="http://goo.gle/bazelcon"&gt;http://goo.gle/bazelcon&lt;/a&gt; to be a part of the excitement of the premier build conference! &lt;/p&gt;&lt;p&gt;See you all at BazelCon 2020! &lt;/p&gt;&lt;p&gt;By Joe Hicks and the entire Bazel Team at Google &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/1fT-vpRjZx8" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/164528088553684976/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/11/get-ready-for-bazelcon-2020.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/164528088553684976" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/164528088553684976" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/1fT-vpRjZx8/get-ready-for-bazelcon-2020.html" title="Get ready for BazelCon 2020" /><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/-nf_zVDELDwA/X6rA0V9YqTI/AAAAAAAAJjk/fJLV6P5mw_E0euJcuHb5ZCshoCZo-GqcQCLcBGAsYHQ/s72-c/BazelCon_Blog_v1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/11/get-ready-for-bazelcon-2020.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-2226829421138317470</id><published>2020-10-30T12:41:00.000-07:00</published><updated>2020-10-30T12:41:38.515-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Adobe Creative Cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="Adobe Creative Cloud Libraries" /><category scheme="http://www.blogger.com/atom/ns#" term="apis" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="Gmail Add-on" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Docs Add-on" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Sheets Add-on" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Slides Add-on" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Workspace Add-ons" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Workspace Developer" /><title type="text">Building a Google Workspace Add-on with Adobe</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-hAZpbOttpTc/X5xrTfmRcII/AAAAAAAAJis/kECjhjGXFX4LyBhRyfpRbGCIrMAtkYlCQCLcBGAsYHQ/s0/adobe_gs_640x400_opt5%2B%25281%2529.gif"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-hAZpbOttpTc/X5xrTfmRcII/AAAAAAAAJis/kECjhjGXFX4LyBhRyfpRbGCIrMAtkYlCQCLcBGAsYHQ/s0/adobe_gs_640x400_opt5%2B%25281%2529.gif"&gt; &lt;p&gt;&lt;em&gt;Posted by Jon Harmer, Product Manager, Google Cloud &lt;/em&gt;&lt;p&gt; &lt;p&gt;We recently &lt;a href="https://cloud.google.com/blog/products/workspace/introducing-google-workspace"&gt;introduced&lt;/a&gt; Google Workspace, which seamlessly brings together messaging, meetings, docs, and tasks and is a great way for teams to create, communicate, and collaborate. Google Workspace has what you need to get anything done, all in one place. This includes giving developers the ability to extend Google Workspace’s standard functionality like with &lt;a href="https://developers.google.com/gsuite/add-ons/concepts/types#g_suite_add-ons"&gt;Google Workspace Add-ons&lt;/a&gt;, launched earlier this year. &lt;/p&gt;&lt;p&gt;Google Workspace Add-ons, at launch, allowed a developer to build a single integration for Google Workspace that surfaces across Gmail, Google Drive, and Google Calendar. We recently &lt;a href="https://developers.googleblog.com/2020/10/building-google-workspace-add-on-with.html"&gt;announced&lt;/a&gt; that we added to the functionality of Google Workspace Add-ons by enabling more of the Google Workspace applications with the newer add-on framework, Google Docs, Google Sheets, and Google Slides. With Google Workspace Add-ons, developers can scale their presence across multiple touchpoints in which users can engage, and simplifies processes for building and managing add-ons.  &lt;/p&gt;&lt;p&gt;One of our early developers for Google Workspace Add-ons has been Adobe. Adobe has been working to integrate Creative Cloud Libraries into Google Workspace. Using Google Workspace Add-ons, Adobe was able to quickly design a Creative Cloud Libraries experience that felt native to Google Workspace. “With the new add-ons framework, we were able to improve the overall performance and unify our Google Workspace and Gmail Add-ons.” said Ryan Stewart, Director of Product Management at Adobe. “This means a much better experience for our customers and much higher productivity for our developers. We were able to quickly iterate with the updated framework controls and easily connect it to the Creative Cloud services.”  &lt;/p&gt;&lt;p&gt;One of the big differences between the Gmail integration and the Google Workspace integration is how it lets users work with Libraries. With Gmail, they’re sharing links to Libraries, but with Docs and Slides, they can add Library elements to their document or presentation. So by offering all of this in a single integration, we are able to provide a more complete Libraries experience. Being able to offer that breadth of experiences in a consistent way for users is exciting for our team. &lt;/p&gt;&lt;p&gt;Adobe’s Creative Cloud Libraries API &lt;a href="https://medium.com/adobetech/the-adobe-creative-cloud-libraries-api-is-available-now-642f0dee028"&gt;announced&lt;/a&gt; at Adobe MAX&lt;span style="text-decoration:underline;"&gt;, &lt;/span&gt;was also integral to integrating Creative Cloud with Google Workspace, letting developers retrieve, browse, create, and get renditions of the creative elements in libraries.  &lt;/p&gt; &lt;a href="https://1.bp.blogspot.com/-hAZpbOttpTc/X5xrTfmRcII/AAAAAAAAJis/kECjhjGXFX4LyBhRyfpRbGCIrMAtkYlCQCLcBGAsYHQ/s0/adobe_gs_640x400_opt5%2B%25281%2529.gif" imageanchor="1" &gt;&lt;img id=imgFull border="0" src="https://1.bp.blogspot.com/-hAZpbOttpTc/X5xrTfmRcII/AAAAAAAAJis/kECjhjGXFX4LyBhRyfpRbGCIrMAtkYlCQCLcBGAsYHQ/s0/adobe_gs_640x400_opt5%2B%25281%2529.gif" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt; Adobe’s new Add-on for Google Workspace lets you add brand colors, character styles and graphics from Creative Cloud Libraries to Google Workspace apps like Docs and Slides. You can also save styles and assets back to Creative Cloud. &lt;/p&gt; &lt;p&gt;With Google Workspace Add-ons, we understand that teams require many applications to get work done, and we believe that process should be simple, and those productivity applications should connect all of a company’s workstreams. With Google Workspace Add-ons, teams can bring their favorite workplace apps like Adobe Creative Cloud into Google Workspace, enabling a more productive day-to-day experience for design and marketing teams. With quick access to Creative Cloud Libraries, the &lt;a href="https://gsuite.google.com/marketplace/app/adobe_creative_cloud/969673929375"&gt;Adobe Creative Cloud Add-on for Google Workspace&lt;/a&gt; lets eveyone easily access and share assets in Gmail and apply brand colors, character styles, and graphics to Google Docs and Slides to keep deliverables consistent and on-brand. There’s a phased rollout to users, first with Google Docs, then Slides, so if you don’t see it in the Add-on yet, stay tuned as it is coming soon.  &lt;/p&gt;&lt;p&gt;For developers, Google Workspace Add-ons lets you build experiences that not only let your customers manage their work, but also simplify how they work.  &lt;/p&gt;&lt;p&gt;To learn more about Google Workspace Add-ons, please visit our &lt;a href="https://developers.google.com/workspace"&gt;Google Workspace developer documentation&lt;/a&gt;. &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/9Wx2vsjrZfM" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/2226829421138317470/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/10/building-google-workspace-add-on-with.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2226829421138317470" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2226829421138317470" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/9Wx2vsjrZfM/building-google-workspace-add-on-with.html" title="Building a Google Workspace Add-on with Adobe" /><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/-hAZpbOttpTc/X5xrTfmRcII/AAAAAAAAJis/kECjhjGXFX4LyBhRyfpRbGCIrMAtkYlCQCLcBGAsYHQ/s72-c/adobe_gs_640x400_opt5%2B%25281%2529.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/10/building-google-workspace-add-on-with.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-3439716455862243232</id><published>2020-10-27T11:08:00.003-07:00</published><updated>2020-10-27T11:09:44.296-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="featured" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Analytics" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Charts" /><category scheme="http://www.blogger.com/atom/ns#" term="google developers" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Maps" /><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="Latest" /><title type="text">How a group of young developers want to help us vote</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-N0U45FJ2F_E/X5hW0vvYIlI/AAAAAAAAJh8/HzjLWf7NErocgryjup-A6dqtHmSJRq8SACLcBGAsYHQ/s0/2020-10-19.jpg "&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-N0U45FJ2F_E/X5hW0vvYIlI/AAAAAAAAJh8/HzjLWf7NErocgryjup-A6dqtHmSJRq8SACLcBGAsYHQ/s0/2020-10-19.jpg"&gt; &lt;p&gt;&lt;em&gt;Posted by Erica Hanson, Global Program Manager, Google Developer Student Clubs &lt;/em&gt;&lt;p&gt; &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-N0U45FJ2F_E/X5hW0vvYIlI/AAAAAAAAJh8/HzjLWf7NErocgryjup-A6dqtHmSJRq8SACLcBGAsYHQ/s0/2020-10-19.jpg" imageanchor="1" &gt;&lt;img id=imgFull border="0" src="https://1.bp.blogspot.com/-N0U45FJ2F_E/X5hW0vvYIlI/AAAAAAAAJh8/HzjLWf7NErocgryjup-A6dqtHmSJRq8SACLcBGAsYHQ/s0/2020-10-19.jpg" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt; Stevens Institute of Technology’s Google Developer Student Club. Names left to right: Tim Leonard, Will Escamilla, Rich Bilotti, Justin O'Boyle, Luke Mizus, and Rachael Kondra &lt;/p&gt; &lt;/center&gt;     &lt;p&gt;The Google Developer Student Club at the Stevens Institute of Technology built their own website that makes local government data user friendly for voters in local districts. The goal: Take obscure budget and transportation information, display it via an easy-to-understand UI, and help voters become more easily informed. &lt;/i&gt;&lt;p&gt; &lt;p&gt;When Tim Leonard first moved to Hoboken, New Jersey to start school at the Stevens Institute of Technology, he was interested in anything but government. A computer science major with a deep interest in startups, one was more likely to find him at a lecture on computational structures than on political science.  &lt;/p&gt;&lt;p&gt;However, as the founder of the &lt;a href="https://dsc.community.dev/"&gt;Google Developer Student Club&lt;/a&gt; (DSC) chapter at his university, Tim and his fellow classmates had the opportunity to make the trip into New York City to attend a developer community meetup with Ralph Yozzo, a community organizer from &lt;a href="https://developers.google.com/community/gdg"&gt;Google Developer Groups&lt;/a&gt; (GDG) NYC. While Ralph had given several talks on different technologies and programming techniques, this time he decided to try something new: Government budgets.  &lt;/p&gt;  &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-8Mz4NeTUE-k/X5hXZI0_sMI/AAAAAAAAJiE/jYLYge3-7z4gRnvrH5QvFt0z2FMsVK_EQCLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-16%2Bat%2B11.36.12%2BAM.png" imageanchor="1" &gt;&lt;img id=imgFull border="0" src="https://1.bp.blogspot.com/-8Mz4NeTUE-k/X5hXZI0_sMI/AAAAAAAAJiE/jYLYge3-7z4gRnvrH5QvFt0z2FMsVK_EQCLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-16%2Bat%2B11.36.12%2BAM.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt;   &lt;p id="imgCaption"&gt; A slide from Ralph’s presentation &lt;/p&gt; &lt;/center&gt; &lt;p&gt;Titled “Why we should care about budgets,” Ralph’s talk to the young programmers focused on why tracking government spending in their community matters. He further explained how public budgets fund many parts of our lives - from getting to work, to taking care of our health, to going to a good school. However, Ralph informed them that while there are currently laws that attempt to make this data public, a platform that makes this information truly accessible didn’t exist. Instead, most of this information is tucked away in different corners of the internet; unorganized, and hard to understand.  &lt;/p&gt;&lt;p&gt;Tim soon realized programming could be the solution and that his team had the chance to grow in a whole new way, outside of the traditional classroom setting. With Ralph’s encouragement, Tim and his team started thinking about how they could build a platform to collect all of this data, and provide a UI that’s easy for any user to interact with. By creating a well-organized website that could pull all of this local information, streamline it, and produce easy-to-understand graphics, the DSC Stevens team imagined they could have an impact on how voters inform themselves before casting their ballots at local elections.   &lt;/p&gt;  &lt;center&gt; &lt;p style="font-size:20px;"&gt; &lt;b&gt; “What if we had a technical approach to local government? Where our site would have actionable metrics that held us accountable for getting information out to the public.” &lt;/b&gt; &lt;/center&gt;  &lt;p&gt;Tim thought if local voters could easily understand how their representatives were spending their community’s money, they could use it as a new framework to decide how to vote. The next step was to figure out the best way to get started.  &lt;/p&gt;  &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-P6VeBMTvl8o/X5hX9uPDy8I/AAAAAAAAJiM/-A2vmbdvHk0oVTrKMBpDkjRf4da6j7x_wCLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-16%2Bat%2B11.44.18%2BAM.png" imageanchor="1" &gt;&lt;img id=imgFull border="0" src="https://1.bp.blogspot.com/-P6VeBMTvl8o/X5hX9uPDy8I/AAAAAAAAJiM/-A2vmbdvHk0oVTrKMBpDkjRf4da6j7x_wCLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-16%2Bat%2B11.44.18%2BAM.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt;   &lt;p id="imgCaption"&gt; An image from the demo site  &lt;/p&gt; &lt;/center&gt;  &lt;p&gt;The DSC Stevens team quickly agreed that their goal should be to build a website about their own city, Hoboken. They named it “Project Crystal” and started taking &lt;a href="https://cloud.google.com/training"&gt;Google App Engine courses&lt;/a&gt; and conducting Node.js server run throughs. With the data they would eventually store and organize, they also dove into Google Cloud demos and workshops on Google Charts. They were determined to build something that would store public information in a different way.  &lt;/p&gt; &lt;center&gt; &lt;p style="font-size:20px;"&gt; &lt;b&gt; “Bounce rates and click through metrics ensure we evaluate our site like a startup. Instead of selling a product, our platform would focus on getting people to interact with the data that shapes their everyday lives.” &lt;/b&gt; &lt;/center&gt; &lt;p&gt;After participating in different courses on how to use &lt;a href="http:// goo.gle/cloud-training"&gt;Google Cloud&lt;/a&gt;, &lt;a href="https://developers.google.com/maps/documentation"&gt;Maps&lt;/a&gt;, and &lt;a href="https://developers.google.com/chart"&gt;Charts&lt;/a&gt;, they finally put it all together and created the first version of their idea - an MVP site, built to drive user engagement, that would serve as their prototype.  &lt;/p&gt;  &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/zE-ES6iNJU4" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;    &lt;p id="imgCaption"&gt; A video explaining the Project Crystal website &lt;/p&gt; &lt;/center&gt;  &lt;p&gt;Complete with easy-to-understand budget charts, contact information for different public officials, and maps to help users locate important services, the prototype site has been their first major step in turning complicated data into actionable voting information. Excited about their progress, Tim wants to eventually host the site on Google Cloud so his team can store more data and offer the platform to local governments across the country.  &lt;/p&gt;  &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/--oV7mgo8oog/X5hcvWP6HqI/AAAAAAAAJiY/HSSs8Qeo7FgMVUHexMv_gqCLE_tpa71pACLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-27%2Bat%2B1.45.08%2BPM.png" imageanchor="1" &gt;&lt;img id=imgFull border="0" src="https://1.bp.blogspot.com/--oV7mgo8oog/X5hcvWP6HqI/AAAAAAAAJiY/HSSs8Qeo7FgMVUHexMv_gqCLE_tpa71pACLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-27%2Bat%2B1.45.08%2BPM.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt;   &lt;p id="imgCaption"&gt; Image of the DSC Steven's team adding Google Charts to their demo site&lt;/p&gt; &lt;/center&gt;  &lt;p&gt;The DSC Stevens team agrees, access to resources like Project Crystal could change how we vote. They hope with the right technical solutions around data, voters will be better informed, eager to ask more of their representatives, and more willing to participate in the day-to-day work of building their communities, together.  &lt;/p&gt; &lt;center&gt; &lt;p style="font-size:20px;"&gt; &lt;b&gt; “Our advice to other student developers is to find outlets, like DSC, that enable you to think about helping others. For us, it was figuring out how to use our Google Cloud credits for good.” &lt;/b&gt; &lt;/center&gt; &lt;p&gt;Want to start a project of your own? If you’re a university student, join a &lt;a href="https://dsc.community.dev/"&gt;Developer Student Club&lt;/a&gt; near you. If you’re a professional, find the right &lt;a href="https://developers.google.com/community/gdg"&gt;Google Developer Group&lt;/a&gt; for you.  &lt;/p&gt;   &lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/SSv7-V5RFvA" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/3439716455862243232/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/10/young-developers-want-to-help-us-vote.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/3439716455862243232" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/3439716455862243232" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/SSv7-V5RFvA/young-developers-want-to-help-us-vote.html" title="How a group of young developers want to help us vote" /><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/-N0U45FJ2F_E/X5hW0vvYIlI/AAAAAAAAJh8/HzjLWf7NErocgryjup-A6dqtHmSJRq8SACLcBGAsYHQ/s72-c/2020-10-19.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/10/young-developers-want-to-help-us-vote.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-6390790593474174699</id><published>2020-10-23T09:06:00.001-07:00</published><updated>2020-10-23T09:06:35.788-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="featured" /><category scheme="http://www.blogger.com/atom/ns#" term="google developers" /><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="Latest" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="women techmakers" /><title type="text">Daring to code: How one young developer found her way in a rural community in Russia</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-1E7uCW02wjM/X5LyCgPDMVI/AAAAAAAAJhk/RrH86JYn4_MyBoNaZu9MWNZU-ZFC8tEnQCLcBGAsYHQ/s0/Luisa%2B.jpg"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-1E7uCW02wjM/X5LyCgPDMVI/AAAAAAAAJhk/RrH86JYn4_MyBoNaZu9MWNZU-ZFC8tEnQCLcBGAsYHQ/s0/Luisa%2B.jpg"&gt; &lt;p&gt;&lt;em&gt;Posted by Jennifer Kohl, Google Developers Global Communities Program Manager &lt;/em&gt;&lt;p&gt;   &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-1E7uCW02wjM/X5LyCgPDMVI/AAAAAAAAJhk/RrH86JYn4_MyBoNaZu9MWNZU-ZFC8tEnQCLcBGAsYHQ/s0/Luisa%2B.jpg" imageanchor="1" &gt;&lt;img style="width:600px" id=imgFull border="0" src="https://1.bp.blogspot.com/-1E7uCW02wjM/X5LyCgPDMVI/AAAAAAAAJhk/RrH86JYn4_MyBoNaZu9MWNZU-ZFC8tEnQCLcBGAsYHQ/s0/Luisa%2B.jpg" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;/center&gt; &lt;p id="imgCaption"&gt;Luiza in her hometown, Magas&lt;/p&gt; &lt;p&gt;Magas is the capital of the Republic of Ingushetia, the smallest region in Russia. Centered between Chechnya and North Ossetia, the area is no stranger to conflict. Even as it rebuilds, the region has seen its unemployment numbers rise to as high as &lt;a href="https://www.reuters.com/article/us-russia-ingushetia-factbox-sb/factbox-key-facts-about-russias-region-of-ingushetia-idUSTRE55M3U120090623"&gt;50 percent&lt;/a&gt;. Magas, a mostly rural area, is home to a small population of just under six-thousand people - it’s estimated that under 100 of them are developers.  &lt;/p&gt;&lt;p&gt;Yet one day that small group of developers decided to take their first step towards becoming a community. These founders heard of &lt;a href="https://developers.google.com/community/gdg"&gt;Google Developer Groups&lt;/a&gt; (GDG) and had seen their community meetups in action on trips to other larger cities in Russia. Inspired by how GDG brought developers together, they believed starting a community in Magas was just what they all needed to grow.  &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt;GDG Magas was up and running immediately, hosting small community events in classrooms and meeting spaces across town. And it was there, at a local meetup, where GDG Magas met Luiza.  &lt;/p&gt; &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-fzjxvOlHD_0/X5Ly_d2MLRI/AAAAAAAAJhs/eN38K-URUuoUcFfAp6usOW5RaOji0QNLQCLcBGAsYHQ/s0/Luiza%2B2.jpg" imageanchor="1" &gt;&lt;img style="width:600px" id=imgFull border="0" src="https://1.bp.blogspot.com/-fzjxvOlHD_0/X5Ly_d2MLRI/AAAAAAAAJhs/eN38K-URUuoUcFfAp6usOW5RaOji0QNLQCLcBGAsYHQ/s0/Luiza%2B2.jpg" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;/center&gt; &lt;p id="imgCaption"&gt; Luiza speaking at a University competition&lt;/p&gt; &lt;p&gt;At the time, Luiza was a student at a local university. Equipped with a curious mind, she was hungry to learn more. She often challenged herself to think about how women could grow professionally and personally within traditional cultures. Luiza was interested in technology, a mostly unheard of career path in this small town. At the same time, &lt;a href="https://www.womentechmakers.com/"&gt;Women Techmakers&lt;/a&gt;, a Google program that provides resources for women in technology, started collaborating with GDG chapters around the world to help women like Luiza get started on their journey.  &lt;/p&gt;&lt;p&gt;So together, GDG Magas and Women Techmakers started hosting talks and workshops for women in the community. Eventually, they began running a programming class for beginners, and that’s where Luiza realized she had the space to truly explore her interest in code. The community organized thirteen classes, and each Saturday Luiza would join GDG Magas to learn everything from arrays, to Python, to JavaScript, and more. &lt;/p&gt;  &lt;center&gt; &lt;p style="font-size:30px;"&gt; &lt;b&gt; “I learned everything a beginner needs: numeral systems, loops, algorithms, and even the basics of web development. I was able to work with GDG mentors to improve my skills both in the backend and frontend. Someone was always there to answer my questions.”  &lt;/b&gt; &lt;/center&gt; &lt;p&gt;With GDG Magas providing Luiza with this access to learning materials and mentorship, there has been no turning back. Luiza landed a competitive role working for an internet company, will soon give her own talks at GDG events, and is even starting her own Google &lt;a href="https://dsc.community.dev/"&gt;Developer Student Club&lt;/a&gt; as she completes her studies in Magas. Luiza is now at the forefront of helping a rural town become a growing tech scene, taking the lead to shape her future and that of many young developers around her.  &lt;/p&gt;&lt;p&gt;GDG Magas and similar developer communities are growing faster than ever, thanks to determined developers just like Luiza.  &lt;/p&gt;&lt;p&gt;Ready to find a developer community near you? Join a local Google Developer Group, &lt;a href="https://developers.google.com/community/gdg"&gt;here.&lt;/a&gt;  &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/aqGq4vhCMLo" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/6390790593474174699/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/10/daring-to-code-how-one-young-developer.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/6390790593474174699" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/6390790593474174699" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/aqGq4vhCMLo/daring-to-code-how-one-young-developer.html" title="Daring to code: How one young developer found her way in a rural community in Russia" /><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/-1E7uCW02wjM/X5LyCgPDMVI/AAAAAAAAJhk/RrH86JYn4_MyBoNaZu9MWNZU-ZFC8tEnQCLcBGAsYHQ/s72-c/Luisa%2B.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/10/daring-to-code-how-one-young-developer.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-7479277498367604507</id><published>2020-10-22T09:01:00.000-07:00</published><updated>2020-10-22T09:01:01.536-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="featured" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Workspace" /><category scheme="http://www.blogger.com/atom/ns#" term="Latest" /><title type="text">Enhancing Add-ons in Gmail with Compose-time functions </title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-7tzeffwVoRY/X5CFr6--oHI/AAAAAAAAJhQ/ODu_rHuPyAkimVYKYLISgUBb1asuxgChQCLcBGAsYHQ/s0/compose%2Bv2.gif"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-7tzeffwVoRY/X5CFr6--oHI/AAAAAAAAJhQ/ODu_rHuPyAkimVYKYLISgUBb1asuxgChQCLcBGAsYHQ/s0/compose%2Bv2.gif"&gt; &lt;p&gt;&lt;em&gt;Posted by Jon Harmer, Product Manager, Google Workspace  &lt;/em&gt;&lt;p&gt; &lt;p&gt;Google Workspace Add-ons can already do lots of cool things in Gmail. In addition to providing a way to interact with the other apps that you use every day, from the &lt;a href="https://support.google.com/drive/answer/106237?hl=en&amp;co=GENIE.Platform=Desktop"&gt;right hand sidebar&lt;/a&gt; as you read a Gmail message, Google Workspace add-ons can also provide another integration point: when you are composing new messages or replying to existing ones. This allows Google Workspace add-ons to make it easier for you to work with multiple applications when you are working on your daily routine of reading and responding to email. &lt;/p&gt; &lt;h2&gt;More ways of creating&lt;/h2&gt; &lt;p&gt;Previously, the only way a developer could modify the draft of a message in Gmail was by inserting content at the user’s cursor. But we have enhanced this functionality, and now you can enable your add-on to modify the To, CC, and BCC fields, the Subject Line, and you can insert content into the top or bottom of the message the user is composing.  &lt;/p&gt;&lt;p&gt;This opens up a number of interesting possibilities. You could use the add-on to BCC your CRM, which allows you to log that message to the appropriate CRM record. Or you could insert a footer to the message or a tag in the subject line depending on who the message is being sent to. You can even insert message templates into the top of the email and help users to compose messages in order to give them a nicer look and feel. &lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-7tzeffwVoRY/X5CFr6--oHI/AAAAAAAAJhQ/ODu_rHuPyAkimVYKYLISgUBb1asuxgChQCLcBGAsYHQ/s0/compose%2Bv2.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:500px" alt="Enhancing Add-ons in Gmail with Compose-time functions  gif" border="0" data-original-height="566" data-original-width="1000" src="https://1.bp.blogspot.com/-7tzeffwVoRY/X5CFr6--oHI/AAAAAAAAJhQ/ODu_rHuPyAkimVYKYLISgUBb1asuxgChQCLcBGAsYHQ/s0/compose%2Bv2.gif"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;    &lt;h2&gt;Convenient and secure&lt;/h2&gt; &lt;p&gt;These enhancements to Compose Actions are a new feature of &lt;a href="https://gsuiteupdates.googleblog.com/2020/01/gsuite-add-ons-generally-available.html"&gt;Google Workspace Add-ons&lt;/a&gt;, which means the moment you authorize action with the feature, they will work in Gmail across mobile and web. Google Workspace admins can also &lt;a href="https://support.google.com/a/answer/6089179"&gt;easily allowlist&lt;/a&gt; the add-ons they want to enable for their organization. &lt;/p&gt; &lt;h2&gt;Try Compose Actions today&lt;/h2&gt; &lt;p&gt;Google Workspace and Gmail users can check out &lt;a href="https://gsuite.google.com/marketplace/category/works-with-gmail"&gt;the Google Workspace Marketplace&lt;/a&gt; to find and install add-ons, with more compose actions coming soon. Developers can also consult &lt;a href="https://developers.google.com/gmail/add-ons/how-tos/extending-compose-ui"&gt;our documentation&lt;/a&gt; to build their own.  &lt;/p&gt; &lt;h2&gt;Sign up for early access programs&lt;/h2&gt; &lt;p&gt;If you want to subscribe to news &amp; updates about the Google Workspace developer platform or sign up to be considered for any of our Early Access Programs, click &lt;a href="https://docs.google.com/forms/d/1oH5Whjk2P2cKJrhVaBxmi0hRl6pMNmZadbV3y9u00Zk/edit"&gt;here&lt;/a&gt;. &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/Dg89KmpKTY0" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/7479277498367604507/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/10/enhancing-add-ons-in-gmail-with-compose.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/7479277498367604507" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/7479277498367604507" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/Dg89KmpKTY0/enhancing-add-ons-in-gmail-with-compose.html" title="Enhancing Add-ons in Gmail with Compose-time functions " /><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/-7tzeffwVoRY/X5CFr6--oHI/AAAAAAAAJhQ/ODu_rHuPyAkimVYKYLISgUBb1asuxgChQCLcBGAsYHQ/s72-c/compose%2Bv2.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/10/enhancing-add-ons-in-gmail-with-compose.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-1623359645761042568</id><published>2020-10-19T09:01:00.002-07:00</published><updated>2020-10-19T09:01:53.947-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="featured" /><category scheme="http://www.blogger.com/atom/ns#" term="Latest" /><category scheme="http://www.blogger.com/atom/ns#" term="startup" /><title type="text">Born in Detroit, Accelerated with Google</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-nLto30lZ8fE/X42zbnlL5VI/AAAAAAAAJhA/sc9P_Yut60kdWfZjy_uRfC8A-M6MSjMNQCLcBGAsYHQ/s0/Data%2BCenter%2B519A7223%2B2610%2B%25281%2529%2B%25281%2529%2B%25281%2529%2B%25281%2529.jpg"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-nLto30lZ8fE/X42zbnlL5VI/AAAAAAAAJhA/sc9P_Yut60kdWfZjy_uRfC8A-M6MSjMNQCLcBGAsYHQ/s0/Data%2BCenter%2B519A7223%2B2610%2B%25281%2529%2B%25281%2529%2B%25281%2529%2B%25281%2529.jpg"&gt; &lt;p&gt;&lt;em&gt;Posted by Ajeet Mirwani, Program Manager, Developer Relations &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/-nLto30lZ8fE/X42zbnlL5VI/AAAAAAAAJhA/sc9P_Yut60kdWfZjy_uRfC8A-M6MSjMNQCLcBGAsYHQ/s0/Data%2BCenter%2B519A7223%2B2610%2B%25281%2529%2B%25281%2529%2B%25281%2529%2B%25281%2529.jpg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:500px" alt="" border="0" data-original-height="1365" data-original-width="2048" src="https://1.bp.blogspot.com/-nLto30lZ8fE/X42zbnlL5VI/AAAAAAAAJhA/sc9P_Yut60kdWfZjy_uRfC8A-M6MSjMNQCLcBGAsYHQ/s0/Data%2BCenter%2B519A7223%2B2610%2B%25281%2529%2B%25281%2529%2B%25281%2529%2B%25281%2529.jpg"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;     &lt;p&gt;&lt;a href="https://stockx.com/"&gt;StockX&lt;/a&gt; is a Detroit-based tech leader focused on the large and growing online resale marketplace for sneakers, apparel, accessories, collectibles, and electronics.  Its innovative marketplace enables users to anonymously buy and sell high-demand consumer products with stock market-like visibility.  StockX employs over 800 people in more than 13 offices and authentication centers around the world, and facilitates sales in more than 200 countries and territories. &lt;/p&gt;&lt;p&gt;StockX has been selected for Google’s Late-Stage Accelerator, which offers specialized programs in the areas of tech, design, product, and people operations to enable high growth startups.  This accelerator is built using the fundamentals of the Google for Startups &lt;a href="https://developers.google.com/community/accelerators"&gt;Accelerator&lt;/a&gt; that runs across the globe. &lt;/p&gt;&lt;p&gt;Every single item sold on StockX is shipped to one of its six global authentication centers and verified by a human to ensure the item is brand new, authentic, and has no manufacturing defects, providing confidence that resale market transactions are safe and secure. &lt;/p&gt;&lt;p&gt;The partnership between StockX and Google came to light as StockX started looking for technology to enhance its authentication process.  This process today is managed by the StockX team with “authenticators” ( i.e. employees who are specially trained at finding fakes, manufacturing defects, etc.) taking on the work.  &lt;/p&gt;&lt;p&gt;With this problem statement in mind, we gathered experts from the Google Cloud AI team to help StockX utilize machine learning / AI to improve the speed and accuracy of authentication, spotting which items are fake or have a manufacturing defect.  This is a perfect problem for AI - StockX captures large amounts of information about every item and whether it passed or failed authentication, enabling the team to quickly gather training data.  StockX and the Accelerator team started collaboration early in the process, planning the project phases together and bringing Google’s experience and expertise in solving these types of problems to bear. The teams meet weekly, sharing data, insights and feedback to enable fast iteration. &lt;/p&gt;&lt;p&gt;Google’s experts in applied machine learning (ML) from the Late-Stage Accelerator have already saved the StockX technical team significant time on model architecture and data management.  Both teams are looking forward to moving this collaboration to the next stage of model development, training and serving into production.  More to come! &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/NWSff1A6pl0" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/1623359645761042568/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/10/born-in-detroit-accelerated-with-google.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/1623359645761042568" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/1623359645761042568" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/NWSff1A6pl0/born-in-detroit-accelerated-with-google.html" title="Born in Detroit, Accelerated with 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/-nLto30lZ8fE/X42zbnlL5VI/AAAAAAAAJhA/sc9P_Yut60kdWfZjy_uRfC8A-M6MSjMNQCLcBGAsYHQ/s72-c/Data%2BCenter%2B519A7223%2B2610%2B%25281%2529%2B%25281%2529%2B%25281%2529%2B%25281%2529.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/10/born-in-detroit-accelerated-with-google.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-8568550814802360568</id><published>2020-10-15T09:00:00.000-07:00</published><updated>2020-10-15T09:00:18.981-07:00</updated><title type="text">Learn the steps to build an app that detects crop diseases</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-f4RnZ7FBjxU/X4cPqJ2V4lI/AAAAAAAAJe8/sfbOQy8LFh0UkbCK9ZMfdPFWdZ015evAACLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-12%2Bat%2B2.03.07%2BPM.png "&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-f4RnZ7FBjxU/X4cPqJ2V4lI/AAAAAAAAJe8/sfbOQy8LFh0UkbCK9ZMfdPFWdZ015evAACLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-12%2Bat%2B2.03.07%2BPM.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Laurence Moroney, TensorFlow Developer Advocate at Google &lt;/em&gt;&lt;p&gt; &lt;p&gt;On October 16-18, thousands of developers from all over the world are coming together for &lt;a href="http://goo.gle/devfest"&gt;DevFest 2020&lt;/a&gt;, the largest virtual weekend of community-led learning on Google technologies.  &lt;/p&gt;&lt;p&gt;For DevFest this year, a few familiar faces from Google and the community came together to show you how to build an app using multiple Google Developer tools to detect crop diseases, from scratch, in just a few minutes. This is one example of how developers can leverage a number of Google tools to solve a real-world problem. Watch the full demo video here or learn more below. &lt;/p&gt;&lt;p&gt;     &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/Pq8WpNLe6jA" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt; &lt;/center&gt;     &lt;h2&gt;Creating the Android app &lt;/h2&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-D6-U4rNECHQ/X4cOZEcWxTI/AAAAAAAAJek/NrFejhiMK7suFppbKpAqsSXYipTKtSB5QCLcBGAsYHQ/s0/Chet%2BHaase%2B.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:600px" alt="Image of Chet Haase" border="0" data-original-height="886" data-original-width="1600" src="https://1.bp.blogspot.com/-D6-U4rNECHQ/X4cOZEcWxTI/AAAAAAAAJek/NrFejhiMK7suFppbKpAqsSXYipTKtSB5QCLcBGAsYHQ/s0/Chet%2BHaase%2B.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;   &lt;p&gt;Chet Haase, &lt;a href="http://developer.android.com"&gt;Android&lt;/a&gt; Developer Advocate, begins by creating an Android app that recognizes information about plants. To do that, he needs camera functionality, and also machine learning inference. &lt;/p&gt;&lt;p&gt;The app is written in &lt;a href="https://developer.android.com/kotlin"&gt;Kotlin&lt;/a&gt;, uses &lt;a href="https://developer.android.com/training/camerax"&gt;CameraX&lt;/a&gt; to take the pictures and &lt;a href="https://developers.google.com/ml-kit"&gt;MLKit&lt;/a&gt; for on-device Machine Learning analysis. The core functionality revolves around taking a picture, analyzing it, and displaying the results.  &lt;/p&gt; &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-HvrFTBrNKHs/X4cOreXec9I/AAAAAAAAJes/Oq9eR2N-4PoOyLuV9NrBKhIsUdrpGiJzQCLcBGAsYHQ/s0/unnamed.png" imageanchor="1" &gt;&lt;img id=imgFull border="0" src="https://1.bp.blogspot.com/-HvrFTBrNKHs/X4cOreXec9I/AAAAAAAAJes/Oq9eR2N-4PoOyLuV9NrBKhIsUdrpGiJzQCLcBGAsYHQ/s0/unnamed.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt; [Code showing how the app takes a picture, analyzes it, and displays the results.] &lt;/p&gt; &lt;/center&gt; &lt;p&gt;MLKIt makes it easy to recognize the contents of an image using its ImageLabeler object, so Chet just grabs a frame from CameraX and uses that. When this succeeds, we receive a collection of ImageLabels, which we turn into text strings and display a toast with the results. &lt;/p&gt; &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-Xe9Z0n2F4JM/X4caSOdUFeI/AAAAAAAAJgc/vT0H0febmuAZdPRHWpjAz9tnlVseNnK5QCLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-01%2Bat%2B2.18.23%2BPM.png" imageanchor="1" &gt;&lt;img style="width:250px" id=imgFull border="0" src="https://1.bp.blogspot.com/-Xe9Z0n2F4JM/X4caSOdUFeI/AAAAAAAAJgc/vT0H0febmuAZdPRHWpjAz9tnlVseNnK5QCLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-01%2Bat%2B2.18.23%2BPM.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt;     &lt;p id="imgCaption"&gt; [Demo of what the app detecting that the image is a plant.] &lt;/p&gt; &lt;/center&gt;  &lt;h2&gt;Setting up the Machine Learning model&lt;/h2&gt;  &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/--a6q7-LCllE/X4cbJ834QyI/AAAAAAAAJgk/fG0c1qcLgxMtswgAtVGWAYjD9eDX_npngCLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-12%2Bat%2B2.03.07%2BPM.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:600px" alt="" border="0" data-original-height="749" data-original-width="1336" src="https://1.bp.blogspot.com/--a6q7-LCllE/X4cbJ834QyI/AAAAAAAAJgk/fG0c1qcLgxMtswgAtVGWAYjD9eDX_npngCLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-12%2Bat%2B2.03.07%2BPM.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt; &lt;p&gt;To dig a little deeper, Gus Martins, Google Developer Advocate for &lt;a href="https://www.tensorflow.org/"&gt;TensorFlow&lt;/a&gt;, shows us how to set up a Machine Learning model to detect diseases in bean plants.  &lt;/p&gt;&lt;p&gt;Gus uses Google &lt;a href="https://colab.sandbox.google.com/"&gt;Colab&lt;/a&gt;, a cloud-hosted development tool to do transfer learning from an existing ML model hosted on &lt;a href="https://www.tensorflow.org/hub"&gt;TensorFlow.Hub&lt;/a&gt;&lt;/p&gt;&lt;p&gt;He then puts it all together and uses a tool called &lt;a href="https://www.tensorflow.org/lite/guide/model_maker"&gt;Tensorflow Lite Model Maker&lt;/a&gt; to train the model using our custom dataset. &lt;/p&gt; &lt;h2&gt;Setting up the Android app to recognize and build classes&lt;/h2&gt;  &lt;p&gt;The Model Gus created includes all the metadata needed for Android Studio to recognize it and build classes from it that can run inference on the model using TensorFlow Lite. To do so, Annyce Davis, Google Developer Expert for Android, updates the app to use TensorFlow Lite. &lt;/p&gt;  &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-y5hb4SwfUNw/X4cP7XvVVxI/AAAAAAAAJfE/Nr-kRWioVQolJsbdwDThsgYFlE1hZqm8QCLcBGAsYHQ/s0/Annyce%2BDavis.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:600px" alt="Image of Annyce Davis" border="0" data-original-height="970" data-original-width="1600" src="https://1.bp.blogspot.com/-y5hb4SwfUNw/X4cP7XvVVxI/AAAAAAAAJfE/Nr-kRWioVQolJsbdwDThsgYFlE1hZqm8QCLcBGAsYHQ/s0/Annyce%2BDavis.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt; &lt;p&gt;She uses the model with an image from the camera to get an inference about a bean leaf to see if it is diseased or not. &lt;/p&gt;&lt;p&gt;Now, when we run our app, instead of telling us it’s looking at a leaf, it can tell us if our bean is healthy or, if not, can give us a diagnosis. &lt;/p&gt; &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-mzCmt9y80XM/X4cQOUsobDI/AAAAAAAAJfM/-89_-lZdsNE6a1gbz2CTLv7sn38kqt1nACLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-01%2Bat%2B2.21.53%2BPM.png" imageanchor="1" &gt;&lt;img style="width:250px" id=imgFull border="0" src="https://1.bp.blogspot.com/-mzCmt9y80XM/X4cQOUsobDI/AAAAAAAAJfM/-89_-lZdsNE6a1gbz2CTLv7sn38kqt1nACLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-01%2Bat%2B2.21.53%2BPM.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt;   &lt;p id="imgCaption"&gt; (Demo of the app detecting whether or not the plant is healthy) &lt;/p&gt; &lt;/center&gt;  &lt;h2&gt;Transforming the demo into a successful app using Firebase, Design, and Responsible AI principles&lt;/h2&gt;  &lt;p&gt;This is just a raw demo. But to transform it into a successful app, Todd Kerpelman, Google Developer Advocate for &lt;a href="https://firebase.google.com/"&gt;Firebase&lt;/a&gt;, suggests using the &lt;a href="https://firebase.google.com/docs/android/setup"&gt;Firebase plugin&lt;/a&gt; for Android Studio to add some Analytics, so we can find out exactly how our users are interacting with our app.  &lt;/p&gt;  &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-_Wswhn7H0YE/X4cQrqYA1TI/AAAAAAAAJfU/7NvQHOLWYB4AMJkrdQuz17iPGULd8s0DACLcBGAsYHQ/s0/Todd%2BKerpelman.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:600px" alt="Image of Toff Kerpelman" border="0" data-original-height="949" data-original-width="1600" src="https://1.bp.blogspot.com/-_Wswhn7H0YE/X4cQrqYA1TI/AAAAAAAAJfU/7NvQHOLWYB4AMJkrdQuz17iPGULd8s0DACLcBGAsYHQ/s0/Todd%2BKerpelman.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt; &lt;p&gt;There's a lot of ways to get at this data -- it will start showing up in the Firebase dashboard, but one really fun way of viewing this data is to use StreamView, which gives you a real-time sample of what kinds of analytics results we're seeing. &lt;/p&gt; &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-O64yhcu7qQY/X4cRRMw0qaI/AAAAAAAAJfg/nj4mFutdNdE80qzMV6RX-OovYCHXXVD7wCLcBGAsYHQ/s0/Firebase%2BStreamview.png " imageanchor="1" &gt;&lt;img id=imgFull border="0" src="https://1.bp.blogspot.com/-O64yhcu7qQY/X4cRRMw0qaI/AAAAAAAAJfg/nj4mFutdNdE80qzMV6RX-OovYCHXXVD7wCLcBGAsYHQ/s0/Firebase%2BStreamview.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt; [Firebase Streamview allows you to view real-time analytics.] &lt;/p&gt; &lt;/center&gt;   &lt;p&gt;Using Firebase, you could also, for example, add A/B testing to your app to choose the best model for your users; have remote configuration to keep your app up to date; have easy sign-in to your app if you want users to log in, and a whole lot more! &lt;/p&gt;&lt;p&gt;Di Dang, UX Designer &amp; Design Advocate, reminds us that if we were to productize this app, it’s important to keep in mind how our AI design decisions impact users.  &lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-M6-R2UxC_UA/X4cRlgxBmNI/AAAAAAAAJfo/911LYtyyDw8x-CJ3ZmdF9DODNQFZfGLrACLcBGAsYHQ/s0/Di%2BDang.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:600px" alt="Image of Di Dang" border="0" data-original-height="549" data-original-width="989" src="https://1.bp.blogspot.com/-M6-R2UxC_UA/X4cRlgxBmNI/AAAAAAAAJfo/911LYtyyDw8x-CJ3ZmdF9DODNQFZfGLrACLcBGAsYHQ/s0/Di%2BDang.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;   &lt;p&gt;For instance, we need to consider if and/or how it makes sense to display confidence intervals. Or consider how you design the onboarding experience to set user expectations for the capabilities and limitations of your ML-based app, which is vital to app adoption and engagement. For more guidance on AI design decisions, check out the &lt;a href="http://pair.withgoogle.com/guidebook"&gt;People + AI Guidebook&lt;/a&gt;. &lt;/p&gt;   &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-Vz3Hpd0ERM8/X4cT3AxRq0I/AAAAAAAAJf0/yzG0SyXg0j8_Tz1i7uLtWFQoTdVID6bwwCLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-09%2Bat%2B9.11.51%2BAM.png" imageanchor="1" &gt;&lt;img id=imgFull border="0" src= "https://1.bp.blogspot.com/-Vz3Hpd0ERM8/X4cT3AxRq0I/AAAAAAAAJf0/yzG0SyXg0j8_Tz1i7uLtWFQoTdVID6bwwCLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-09%2Bat%2B9.11.51%2BAM.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt; [You can learn more about AI design decisions at the People &amp; AI Guidebook] &lt;/p&gt; &lt;/center&gt; &lt;p&gt;This use case focuses on plant diseases, but for this case and others, where our ML-based predictions intersect with people or communities, we absolutely need to think about responsible AI themes like privacy and fairness. Learn more &lt;a href="https://www.tensorflow.org/resources/responsible-ai"&gt;here&lt;/a&gt;. &lt;/p&gt; &lt;h2&gt;Building a Progressive Web App &lt;/h2&gt;  &lt;p&gt;Paul Kinlan, Developer Advocate for &lt;a href="https://developers.google.com/web/"&gt;Web&lt;/a&gt;, reminds us to not forget about the web!  &lt;/p&gt;   &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-gia1ke6ToME/X4cUKYIRqgI/AAAAAAAAJf8/CwXr8VsPy2IbJa4TQeP90Z58oOJ3h47dgCLcBGAsYHQ/s0/Paul%2BKinlan%2B2.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:600px" alt="Image of Paul Kinlan" border="0" data-original-height="750" data-original-width="1335" src="https://1.bp.blogspot.com/-gia1ke6ToME/X4cUKYIRqgI/AAAAAAAAJf8/CwXr8VsPy2IbJa4TQeP90Z58oOJ3h47dgCLcBGAsYHQ/s0/Paul%2BKinlan%2B2.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;      &lt;p&gt;Paul shows us how to build a &lt;a href="https://web.dev/progressive-web-apps/"&gt;PWA&lt;/a&gt; that allows users to install an app across all platforms, which can combine the camera with TensorFlow.js to integrate Machine Learning to build an amazing experience that runs in the browser - no additional download required.   &lt;/p&gt;&lt;p&gt;After setting up the project with a standard layout (with an HTML file, manifest, and Service Worker to make it a PWA) and a data folder that contains our TensorFlow configuration, we’ll wait until all of the JS and CSS has loaded in order to initialize the app. We then set up the camera with our helper object, and load the TensorFlow model. After it becomes active, we can then set up the UI. &lt;/p&gt;&lt;p&gt;The PWA is now ready and waiting for us to use.  &lt;/p&gt;   &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-sFzfhzA6w-A/X4cUaXyn2eI/AAAAAAAAJgE/Ix8QTtPbYygSbKNbR2_1V0Hxo67OM4IRwCLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-05%2Bat%2B2.47.42%2BPM.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:600px" alt="PWA image" border="0" data-original-height="865" data-original-width="1600" src="https://1.bp.blogspot.com/-sFzfhzA6w-A/X4cUaXyn2eI/AAAAAAAAJgE/Ix8QTtPbYygSbKNbR2_1V0Hxo67OM4IRwCLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-05%2Bat%2B2.47.42%2BPM.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;     &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-rMbcw9wLiX0/X4cUjEad4uI/AAAAAAAAJgI/YmrraWgvGZA0QItbycEZf8SdcqUg3JHagCLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-05%2Bat%2B2.47.08%2BPM.png" imageanchor="1" &gt;&lt;img style="width:600px" id=imgFull border="0" src= "https://1.bp.blogspot.com/-rMbcw9wLiX0/X4cUjEad4uI/AAAAAAAAJgI/YmrraWgvGZA0QItbycEZf8SdcqUg3JHagCLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-05%2Bat%2B2.47.08%2BPM.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt; (The PWA tells us whether or not the plant is healthy - no app download necessary!)  &lt;/p&gt; &lt;/center&gt;    &lt;h2&gt;The importance of Open Source&lt;/h2&gt;  &lt;p&gt;And finally, Puuja Rajan, &lt;a href="https://developers.google.com/community/experts"&gt;Google Developer Expert&lt;/a&gt; for TensorFlow and &lt;a href="https://www.womentechmakers.com/"&gt;Women Techmakers&lt;/a&gt; lead, reminds us that we might also want to open source this project, too, so that developers can suggest improvements, optimizations and even additional features by filing an issue or sending a pull request. It’s a great way to get your hard work in front of even more people. You can learn more about starting an Open Source project &lt;a href="https://opensource.guide/starting-a-project/"&gt;here&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/-_fuisYvPRQ0/X4cUvokOLoI/AAAAAAAAJgQ/I4Hgl6FF7ssgODlWSpRHnDTsWvf1OhWuACLcBGAsYHQ/s0/Pujaa%2BRajan.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:600px" alt="Image of Pujaa Rajan" border="0" data-original-height="561" data-original-width="989" src="https://1.bp.blogspot.com/-_fuisYvPRQ0/X4cUvokOLoI/AAAAAAAAJgQ/I4Hgl6FF7ssgODlWSpRHnDTsWvf1OhWuACLcBGAsYHQ/s0/Pujaa%2BRajan.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;     &lt;p&gt;In fact, we’ve already open sourced this project, which you can find &lt;a href="https://github.com/lmoroney/android-beans-demo"&gt;here&lt;/a&gt;.  &lt;/p&gt;&lt;p&gt;So now you have the platform for building a real app -- with the tooling from Android Studio, CameraX, Jetpack, ML Kit, Colab, TensorFlow, Firebase, Chrome and Google Cloud, you have a lot of things that just work better together. This isn’t a finished project by any means, just a proof of concept for how a minimum viable product with a roadmap to completion can be put together using &lt;a href="http://developers.google.com"&gt;Google’s Developer Tools&lt;/a&gt;.  &lt;/p&gt;     &lt;br&gt;        &lt;p&gt;Join us online this weekend at a DevFest near you. Sign up &lt;a href="http://gdg.community.dev/devfest"&gt;here&lt;/a&gt;. &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/E6MtBgP3s0A" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/8568550814802360568/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/10/learn-steps-to-build-app-that-detects-crop-diseases.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/8568550814802360568" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/8568550814802360568" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/E6MtBgP3s0A/learn-steps-to-build-app-that-detects-crop-diseases.html" title="Learn the steps to build an app that detects crop diseases" /><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/-f4RnZ7FBjxU/X4cPqJ2V4lI/AAAAAAAAJe8/sfbOQy8LFh0UkbCK9ZMfdPFWdZ015evAACLcBGAsYHQ/s72-c/Screen%2BShot%2B2020-10-12%2Bat%2B2.03.07%2BPM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/10/learn-steps-to-build-app-that-detects-crop-diseases.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-4785625377336728704</id><published>2020-10-14T10:00:00.002-07:00</published><updated>2020-10-26T14:37:43.937-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="business" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud services" /><category scheme="http://www.blogger.com/atom/ns#" term="computer vision" /><category scheme="http://www.blogger.com/atom/ns#" term="enterprise" /><category scheme="http://www.blogger.com/atom/ns#" term="G Suite Developer" /><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="google cloud storage" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Drive SDK" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Sheets API" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Workspace" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title type="text">Image archive, analysis, and report generation with Google APIs</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-zMMEYDJ2wOI/X4XCsZubUdI/AAAAAAAAJdk/Av64iEpTcsUyJmckFbCN4BCORULJuqP-gCLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-06%2Bat%2B3.34.42%2BPM.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-zMMEYDJ2wOI/X4XCsZubUdI/AAAAAAAAJdk/Av64iEpTcsUyJmckFbCN4BCORULJuqP-gCLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-06%2Bat%2B3.34.42%2BPM.png"&gt; &lt;p&gt;&lt;em&gt;Posted by &lt;a href="https://twitter.com/wescpy"&gt;Wesley Chun&lt;/a&gt;, Developer Advocate, Google Cloud &lt;/em&gt;&lt;p&gt; &lt;p&gt;File backup isn't the most exciting topic while analyzing images with AI/ML is more interesting, so combining them probably isn't a workflow you think about often. However, by augmenting the former with the latter, you can build a more useful solution than without. Google provides a diverse array of &lt;a href="http://developers.google.com"&gt;developer tools&lt;/a&gt; you can use to realize this ambition, and in fact, you can craft such a workflow with &lt;a href="http://cloud.google.com"&gt;Google Cloud&lt;/a&gt; products alone. More compellingly, the basic principle of mixing-and-matching Google technologies can be applied to many other challenges faced by you, your organization, or your customers. &lt;/p&gt;&lt;p&gt;The sample app presented uses &lt;a href="http://gsuite.google.com/products/drive"&gt;Google Drive&lt;/a&gt; and &lt;a href="http://gsuite.google.com/products/sheets"&gt;Sheets&lt;/a&gt; plus &lt;a href="http://cloud.google.com/storage"&gt;Cloud Storage&lt;/a&gt; and &lt;a href="http://cloud.google.com/vision"&gt;Vision&lt;/a&gt; to make it happen. The use-case: &lt;a href="http://workspace.google.com"&gt;Google Workspace&lt;/a&gt; (&lt;a href="https://cloud.google.com/blog/products/workspace/introducing-google-workspace"&gt;formerly&lt;/a&gt; G Suite) users who work in industries like architecture or advertising, where multimedia files are constantly generated. Every client job results in yet another Drive subfolder and collection of asset files. Successive projects lead to even more files and folders. At some point, your Drive becomes a "hot mess," making users increasingly inefficient, requiring them to scroll endlessly to find what they're looking for. &lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-zMMEYDJ2wOI/X4XCsZubUdI/AAAAAAAAJdk/Av64iEpTcsUyJmckFbCN4BCORULJuqP-gCLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-06%2Bat%2B3.34.42%2BPM.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:550px" alt="Image of a user and their google drive files" border="0" data-original-height="886" data-original-width="1600" src="https://1.bp.blogspot.com/-zMMEYDJ2wOI/X4XCsZubUdI/AAAAAAAAJdk/Av64iEpTcsUyJmckFbCN4BCORULJuqP-gCLcBGAsYHQ/s0/Screen%2BShot%2B2020-10-06%2Bat%2B3.34.42%2BPM.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;   &lt;p id="imgCaption"&gt; A user and their Google Drive files &lt;/p&gt; &lt;p&gt;How can Google Cloud help? Like Drive, Cloud Storage provides file (and generic blob) storage in the cloud. (More on the differences between Drive &amp; Cloud Storage can be found in &lt;a href="http://youtu.be/vyIap827rHs"&gt;this video&lt;/a&gt;.) &lt;/p&gt;&lt;p&gt;Cloud Storage provides several &lt;a href="http://cloud.google.com/storage/docs/storage-classes"&gt;storage classes&lt;/a&gt; depending on how often you expect to access your archived files. The &lt;a href="http://cloud.google.com/storage/archival"&gt;less often files are accessed&lt;/a&gt;, the "colder" the storage, and &lt;a href="https://cloud.google.com/storage/pricing#storage-pricing"&gt;the lower the cost&lt;/a&gt;. As users progress from one project to another, they're not as likely to need older Drive folders and those make great candidates to backup to Cloud Storage. &lt;/p&gt;&lt;p&gt;First challenge: determine the security model. When working with Google Cloud APIs, you generally select &lt;a href="https://developers.google.com/identity/protocols/oauth2"&gt;OAuth client IDs&lt;/a&gt; to access data owned by users and &lt;a href="https://developers.google.com/identity/protocols/oauth2#serviceaccount"&gt;service accounts&lt;/a&gt; for data owned by applications/projects. The former is typically used with Workspace APIs while the latter is the primary way to access Google Cloud APIs. Since we're using APIs from both product groups, we need to make a decision (for now and change later if desired). &lt;/p&gt;&lt;p&gt;Since the goal is a simple proof-of-concept, user auth suffices. OAuth client IDs are standard for Drive &amp; Sheets API access, and the Vision API only needs API keys so the more-secure OAuth client ID is more than enough. The only IAM permissions to acquire are for the user running the script to get &lt;a href="https://cloud.google.com/storage/docs/access-control/using-iam-permissions"&gt;write access to the destination&lt;/a&gt; Cloud Storage &lt;a href="http://cloud.google.com/storage/docs/key-terms#buckets"&gt;bucket&lt;/a&gt;. Lastly, Workspace APIs don't have their own &lt;em&gt;product client libraries&lt;/em&gt; (yet), so the lower-level &lt;a href="https://developers.google.com/api-client-library"&gt;Google APIs "platform" client libraries&lt;/a&gt; serve as a "lowest common denominator" to access all &lt;em&gt;four&lt;/em&gt; REST APIs. Those who have written Cloud Storage or Vision code using the &lt;a href="https://cloud.google.com/apis/docs/cloud-client-libraries"&gt;Cloud client libraries&lt;/a&gt; will see something different. &lt;/p&gt;&lt;p&gt;The prototype is a command-line script. In real life, it would likely be an application in the cloud, executing as a &lt;a href="http://cloud.google.com/functions"&gt;Cloud Function&lt;/a&gt; or a &lt;a href="http://cloud.google.com/tasks"&gt;Cloud Task&lt;/a&gt; running as determined by &lt;a href="http://cloud.google.com/scheduler"&gt;Cloud Scheduler&lt;/a&gt;. In that case, it would use a service account with Workspace domain-wide delegation to act on behalf of an employee to backup their files. See &lt;a href="http://cloud.google.com/identity/docs/how-to/setup#auth-no-dwd"&gt;this page&lt;/a&gt; in the documentation describing when you'd use this type of delegation and when not to. &lt;/p&gt;&lt;p&gt;Our simple prototype targets individual image files, but you can continue to evolve it to support multiple files, movies, folders, and ZIP archives if desired. Each function calls a different API, creating a "service pipeline" with which to process the images. The first pair of functions are &lt;code&gt;drive_get_file()&lt;/code&gt; and &lt;code&gt;gcs_blob_upload()&lt;/code&gt;. The former queries for the image on Drive, grabs pertinent metadata (filename, ID, MIMEtype, size), downloads the binary "blob" and returns all of that to the caller. The latter uploads the binary along with relevant metadata to Cloud Storage. The script was written in Python for brevity, but the client libraries support &lt;a href="https://developers.google.com/api-client-library"&gt;most popular languages&lt;/a&gt;. Below is the aforementioned function pseudocode: &lt;/p&gt;   &lt;pre class="prettyprint"&gt;def drive_get_file(fname):&lt;br /&gt;    rsp = DRIVE.files().list(q="name='%s'" % fname).execute().get['files'][0]&lt;br /&gt;    fileId, fname, mtype = rsp['id'], rsp['name'], rsp['mimeType']&lt;br /&gt;    blob = DRIVE.files().get_blob(fileId).execute()&lt;br /&gt;    return fname, mtype, rsp['modifiedTime'], blob&lt;br /&gt;&lt;br /&gt;def gcs_blob_upload(fname, folder, bucket, blob, mimetype):&lt;br /&gt;    body = {'name': folder+'/'+fname, 'uploadType': 'multipart',&lt;br /&gt;            'contentType': mimetype}&lt;br /&gt;    return GCS.objects().insert(bucket, body, blob).execute()&lt;br /&gt;&lt;/pre&gt;  &lt;p&gt;Next, &lt;code&gt;vision_label_img()&lt;/code&gt; passes the binary to the Vision API and formats the results. Finally that information along with the file's archived Cloud Storage location are written as a single row of data in a Google Sheet via &lt;code&gt;sheet_append_row()&lt;/code&gt;. &lt;/p&gt;   &lt;pre class="prettyprint"&gt;def vision_label_img(img):&lt;br /&gt;    body = {'requests': [{'image': {'content': img},&lt;br /&gt;        'features': [{'type': 'LABEL_DETECTION'}]}]}&lt;br /&gt;    rsp = VISION.images().annotate(body=body).execute().get['responses'][0]&lt;br /&gt;    return ', '.join('(%.2f%%) %s' % (label['score']*100.,&lt;br /&gt;            label['description']) for label in rsp['labelAnnotations'])&lt;br /&gt;&lt;br /&gt;def sheet_append_row(sheet_id, row):&lt;br /&gt;    rsp = SHEETS.spreadsheets().values().append(spreadsheetId=sheet_id,&lt;br /&gt;        range='Sheet1', body={'values': row}).execute()&lt;br /&gt;    return rsp.get('updates').get('updatedCells')&lt;br /&gt;&lt;/pre&gt;  &lt;p&gt;Finally, a "main" program that drives the workflow is needed. It comes with a pair of utility functions, &lt;code&gt;_k_ize()&lt;/code&gt; to turn file sizes into kilobytes and &lt;code&gt;_linkify()&lt;/code&gt; to build a valid Cloud Storage hyperlink as a spreadsheet formula. These are featured here: &lt;/p&gt;   &lt;pre class="prettyprint"&gt;def _k_ize(nbytes):  # bytes to KBs (not KiBs) as str&lt;br /&gt;    return '%6.2fK' % (nbytes/1000.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def _linkify(bucket, fname):  # make GCS hyperlink to bucket/folder/file&lt;br /&gt;    tmpl = '=HYPERLINK("storage.cloud.google.com/{0}/{1}/{2}", "{2}")'&lt;br /&gt;    return tmpl.format(bucket, folder, fname)&lt;br /&gt;&lt;br /&gt;def main(fname, bucket, SHEET_ID, folder):&lt;br /&gt;    fname, mtype, ftime, data = drive_get_img(fname)&lt;br /&gt;    gcs_blob_upload(fname, folder, bucket, data, mtype)&lt;br /&gt;    info = vision_label_img(data)&lt;br /&gt;    sheet_append_row(SHEET_ID, [folder, _linkify(bucket, fname), mtype,&lt;br /&gt;            ftime, _k_ize(data), info])&lt;br /&gt;&lt;/pre&gt;  &lt;p&gt;While this post may feature just pseudocode, a barebones working version can be accomplished with ~80 lines of &lt;em&gt;actual&lt;/em&gt; Python. The rest of the code &lt;b&gt;not&lt;/b&gt; shown are constants, error-handling, and other auxiliary support. The application gets kicked off with a call to &lt;code&gt;main()&lt;/code&gt; passing in a filename, the Cloud Storage bucket to archive it to, a Drive file ID for the Sheet, and a "folder name," e.g., a directory or ZIP archive. Running it several times results in a spreadsheet that looks like this: &lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-8MEBnHF02RY/X4XDoU7xPmI/AAAAAAAAJd0/hjVb3pfO7IUW20Usw2e07KBdFn5fuUX9gCLcBGAsYHQ/s0/image%2Bcategory%2B.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="wifth:600px" alt="Image archive report in Google Sheets" border="0" data-original-height="308" data-original-width="1005" src="https://1.bp.blogspot.com/-8MEBnHF02RY/X4XDoU7xPmI/AAAAAAAAJd0/hjVb3pfO7IUW20Usw2e07KBdFn5fuUX9gCLcBGAsYHQ/s0/image%2Bcategory%2B.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;   &lt;p id="imgCaption"&gt; Image archive report in Google Sheets &lt;/p&gt; &lt;p&gt;Developers can build this application step-by-step with our "codelab" - codelabs are free, online, self-paced tutorials -  which can be found &lt;a href="http://g.co/codelabs/drive-gcs-vision-sheets"&gt;here&lt;/a&gt;. As you journey through this tutorial, its corresponding &lt;a href="https://github.com/googlecodelabs/analyze_gsimg"&gt;open source repo&lt;/a&gt; features separate folders for each step so you know what state your app should be in after every implemented function. (NOTE: Files are not deleted, so your users have to decide when to their cleanse Drive folders.) For backwards-compatibility, the script is implemented using &lt;a href="https://github.com/googleapis/oauth2client"&gt;older Python auth client libraries&lt;/a&gt;, but the repo has an &lt;a href="https://github.com/googlecodelabs/analyze_gsimg/tree/master/alt"&gt;"alt" folder&lt;/a&gt; featuring alternative versions of the final script that use service accounts, &lt;a href="https://cloud.google.com/apis/docs/cloud-client-libraries"&gt;Google Cloud client libraries&lt;/a&gt;, and the &lt;a href="https://github.com/googleapis/google-auth-library-python"&gt;newer Python auth client libraries&lt;/a&gt;.  &lt;/p&gt;&lt;p&gt;Finally to save you some clicks, here are links to the API documentation pages for &lt;a href="http://developers.google.com/drive"&gt;Google Drive&lt;/a&gt;, &lt;a href="http://cloud.google.com/storage/docs"&gt;Cloud Storage&lt;/a&gt;, &lt;a href="http://cloud.google.com/vision/docs"&gt;Cloud Vision&lt;/a&gt;, and &lt;a href="http://developers.google.com/sheets"&gt;Google Sheets&lt;/a&gt;. While this sample app deals with a constrained resource issue, we hope it inspires you to consider what's possible with Google developer tools so you can build &lt;em&gt;your own&lt;/em&gt; solutions to improve users' lives every day! &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/v9q6xdN34io" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/4785625377336728704/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/10/image-archive-analysis-and-report.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/4785625377336728704" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/4785625377336728704" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/v9q6xdN34io/image-archive-analysis-and-report.html" title="Image archive, analysis, and report generation with Google APIs" /><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/-zMMEYDJ2wOI/X4XCsZubUdI/AAAAAAAAJdk/Av64iEpTcsUyJmckFbCN4BCORULJuqP-gCLcBGAsYHQ/s72-c/Screen%2BShot%2B2020-10-06%2Bat%2B3.34.42%2BPM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/10/image-archive-analysis-and-report.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-3475334972619771595</id><published>2020-10-13T09:01:00.004-07:00</published><updated>2020-10-13T10:15:05.221-07:00</updated><title type="text">Building for a more productive inbox with AMP</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-OGCknUJVUpw/X4XJGz6EDOI/AAAAAAAAJeA/CiZ92IH-v_4ZB17cXmClThJV73TRv4-5wCLcBGAsYHQ/s0/Amp%2Bemail%2Binbox%2BFinal.gif "&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-OGCknUJVUpw/X4XJGz6EDOI/AAAAAAAAJeA/CiZ92IH-v_4ZB17cXmClThJV73TRv4-5wCLcBGAsYHQ/s0/Amp%2Bemail%2Binbox%2BFinal.gif"&gt; &lt;p&gt;&lt;em&gt;Posted by Jon Harmer, Product Manager, Google Workspace &lt;/em&gt;&lt;p&gt;  &lt;p&gt;With today being the start of &lt;a href="https://amp.dev/events/amp-fest-2020/"&gt;AMP Fest&lt;/a&gt;, quite naturally AMP is on our minds. One of the ways that AMP shines is through email. With &lt;a href="https://developers.google.com/gmail/ampemail"&gt;AMP for Email&lt;/a&gt;, brands can change triggered emails from being just another notification to an easy way for a user to always have realtime and relevant context.  &lt;/p&gt; &lt;h2&gt;Expanding the AMP Ecosystem&lt;/h2&gt;  &lt;p&gt;We’re excited to be partnering with Verizon Media and Salesforce Marketing Cloud to build for a future in which every message and touchpoint is an opportunity to make a delightful impression with rich, web-like experiences. &lt;/p&gt;&lt;p&gt;“The motivation to join the AMP for email project was simple: Allowing brands to send richer and more engaging emails to our users. This in turn creates a much better user experience. This also enables features and functionality right within the email environment which are on par with other native web or app experiences. It’s a perfect fit with our mission ... to create the best consumer email experience.” said Nirmal Thangaraj, Engineer on Verizon Media Mail, which powers AOL and Yahoo! Mail.  &lt;/p&gt;&lt;p&gt;Making things even easier for email senders, Salesforce announced at AMP Fest that early next year, senders will be able to send AMP emails from the Marketing Cloud. With Salesforce Marketing Cloud enabling AMP emails, senders can add one to two actionable steps into their emails and store that information back in Salesforce Marketing Cloud.  &lt;/p&gt; &lt;h2&gt;AMP for Productivity&lt;/h2&gt;  &lt;p&gt;Another area where AMP can really make an impact is in the office. With the influx of &lt;a href="https://www.okta.com/businesses-at-work/2019/"&gt;applications in the workplace&lt;/a&gt;, companies are using new SaaS applications to simplify individual processes - but it comes with a downside of complicating a workers day by requiring that employee jump from app to app to get work done. With context aware content that's dynamically populated and updated in real-time, AMP helps make email a place where work gets done .  &lt;/p&gt;&lt;p&gt;Let’s take a look at a couple partners who have been building AMP emails, and how they’ve gone about implementing AMP as part of their email strategy.  &lt;/p&gt;&lt;p&gt;   &lt;h2&gt;Guru&lt;/h2&gt;  &lt;p&gt;&lt;a href="https://www.getguru.com/?utm_source=google&amp;utm_medium=referral&amp;utm_campaign=google_blog"&gt;Guru&lt;/a&gt; sends tens of thousands of notification emails each day, and while helpful, there were limitations to their effectiveness. Here’s Jason Maynard, Guru’s VP of Product on AMP: &lt;/p&gt;&lt;p&gt;&lt;em&gt;“Static emails are helpful for giving a user awareness of a necessary task,  but they also require that user to navigate away from their inbox to our web app in order to review knowledge cards and take specific actions. Their workflow is interrupted. Thus, we decided to leverage AMP in hopes of alleviating this user friction with a goal of fostering engagement within an email thread and reducing context switching.”&lt;/em&gt;&lt;/p&gt;&lt;p&gt;And the process and results also were in Guru’s favor: &lt;em&gt;“AMP’s predefined components, documented examples, and testing playgrounds were all development resources that enabled us to deploy AMP payloads very quickly.The new implementation has resulted in users now being able to interact with these notifications to a much greater extent. Users can now expand and read knowledge cards within their email thread. They can also complete actions such as card verifications and reply comments. Emails are now much more stateful and relevant to users.”&lt;/em&gt;&lt;/p&gt;&lt;p&gt;After deploying AMP, Guru saw a noticeable uptick in email-driven actions resulting in a 2.5x increase in the number of card comment actions and a 75% increase in card verification. These are thousands of new actions that helped teams manage their knowledge base, all without leaving their inbox. &lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-1FecEUPiMRU/X4XcrDaBggI/AAAAAAAAJeM/GjEfFWX7uv429ne09sd-zdTMCCmYXuLUwCLcBGAsYHQ/s0/GoogleAMP.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:500px" alt="Amp gif" border="0" data-original-height="625" data-original-width="1000" src="https://1.bp.blogspot.com/-1FecEUPiMRU/X4XcrDaBggI/AAAAAAAAJeM/GjEfFWX7uv429ne09sd-zdTMCCmYXuLUwCLcBGAsYHQ/s0/GoogleAMP.gif"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt; &lt;h2&gt;VOGSY&lt;/h2&gt;  &lt;p&gt;&lt;a href="https://vogsy.com/"&gt;VOGSY&lt;/a&gt;, the Professional Services Automation Cloud App for Workspace, sends approval and notification emails that have multiple conversion paths. Historically, these actions would take a day to complete. With AMP, they've seen an 80% improvement in completion speed. Reaching this success was a smooth and pleasant journey. &lt;/p&gt;&lt;p&gt;“Our developers and our users love AMP technology. Developers truly enjoy building engaging emails with personalized content that is securely and dynamically updated every time you open the email. User adoption is 100%. Completing a workflow can be done without leaving your inbox. That is a huge improvement in user experience. Because of its fast adoption, we expect to send more than 2 million AMP emails in the first year,” said Leo Koster, Founder of VOGSY.  &lt;/p&gt;&lt;h2&gt;Copper&lt;/h2&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-RLv8VTwHWuI/X4XdyzdkyVI/AAAAAAAAJeU/2BZIAYO4y9AHTBCUeE7Pxv4qjFRGosoxACLcBGAsYHQ/s0/Amp%2Bemail%2Binbox%2BFinal.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:500px" alt="Amp with Copper image" border="0" data-original-height="720" data-original-width="1026" src="https://1.bp.blogspot.com/-RLv8VTwHWuI/X4XdyzdkyVI/AAAAAAAAJeU/2BZIAYO4y9AHTBCUeE7Pxv4qjFRGosoxACLcBGAsYHQ/s0/Amp%2Bemail%2Binbox%2BFinal.gif"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt; &lt;p&gt;&lt;a href="https://www.copper.com/"&gt;Copper&lt;/a&gt; is a CRM designed for people whose business relies on relationship-building, Copper functions seamlessly in the background while employees spend time on what matters: customers. Email is obviously a big part of how organizations communicate, plan, and collaborate. And up to now, email is mostly used as a gateway to other applications where users can take action or complete their task. &lt;/p&gt;&lt;p&gt;&lt;em&gt;“This is why the idea of dynamic emails intrigued us... Supercharging the receivers’ experience to provide up to date information that you can interact with from your inbox. Instead of receiving static email notifications each time you are tagged, we leveraged AMP for email to give users a single, dynamic email where they can see relevant information about the opportunity. They can then respond to comments from their teammates—bringing our users the most seamless experience possible wherever they like to work,” &lt;/em&gt;said Sefunmi Osinaike, Product Manager at Copper.  &lt;/p&gt;&lt;p&gt;And best of all, the process was simple: &lt;em&gt;“Our developers described the documentation as enjoyable because it helped us add rich components without the overhead of figuring out how to make them work in email with basic HTML. The ease of use of lists, inputs and tooltips accelerated the rate we prototyped our feature and it saved us a lot of time. We also got a ton of support on stack overflow with a response rate in less than 24 hours.”&lt;/em&gt;&lt;/p&gt;&lt;p&gt;For Copper, AMP has allowed them to take the experiences that always existed in Copper, but move them closer to the employee’s day-to-day workflow by allowing them to take those actions from email.  &lt;/p&gt; &lt;h2&gt;Stripo&lt;/h2&gt;  &lt;p&gt;As an email design platform, &lt;a href="http://stripo.email"&gt;Stripo.email&lt;/a&gt; has seen over 1,000 different companies create AMP email campaigns with Carousels, Feedback Forms, and Net Promoter Score forms--in one month alone. Stripo was able to implement AMP where users could fill out forms without having to leave their inbox. The strategy &lt;a href="https://blog.amp.dev/2020/05/21/stripo-amp-dynamic-email-boost-customer-engagement/"&gt;drove a 5x lift&lt;/a&gt; in effectiveness from traditional questionnaires.  &lt;/p&gt;&lt;p&gt;We’re excited about AMP and all of the great use cases partners are implementing to modernize the capabilities of email. To learn more about AMP for Email, click &lt;a href="https://amp.dev/about/email/"&gt;here&lt;/a&gt; and be sure to check out &lt;a href="https://events.withgoogle.com/amp-fest/registrations/new/"&gt;AMP Fest&lt;/a&gt;.  &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/gyuQ5uNS3QQ" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/3475334972619771595/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/10/building-for-more-productive-inbox-with.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/3475334972619771595" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/3475334972619771595" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/gyuQ5uNS3QQ/building-for-more-productive-inbox-with.html" title="Building for a more productive inbox with AMP" /><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/-OGCknUJVUpw/X4XJGz6EDOI/AAAAAAAAJeA/CiZ92IH-v_4ZB17cXmClThJV73TRv4-5wCLcBGAsYHQ/s72-c/Amp%2Bemail%2Binbox%2BFinal.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/10/building-for-more-productive-inbox-with.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-7250690700385531241</id><published>2020-10-08T10:00:00.057-07:00</published><updated>2020-10-08T10:09:41.121-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="google assistant" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Assistant Developer Day" /><title type="text">Top brands integrate Google Assistant with new tools and features for Android apps and Smart Displays</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-IFhs11xg768/X36VrjpcLvI/AAAAAAAAJdU/Cl65ALtOne0P9MD2GQjHF11spwR77W4PwCLcBGAsYHQ/s0/gaddpartners.jpg"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-IFhs11xg768/X36VrjpcLvI/AAAAAAAAJdU/Cl65ALtOne0P9MD2GQjHF11spwR77W4PwCLcBGAsYHQ/s0/gaddpartners.jpg"&gt; &lt;p&gt;&lt;em&gt;Posted by Baris Gultekin and Payam Shodjai, Directors of Product Management &lt;/em&gt;&lt;p&gt;   &lt;p&gt;Top brands turn to Google Assistant every day to help their users get things done on their phones and on Smart Displays -- such as playing games, finding recipes or checking investments, just by using their voice. In fact, over the last year,  the number of Actions completed by third-party developers has more than doubled.  &lt;/p&gt;&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/c_CHjsjXOiQ" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;p&gt;We want to support our developer ecosystem as they continue building the best experiences for smart displays and Android phones. That’s why today at &lt;a href="https://developersonair.withgoogle.com/events/assistant-devday"&gt;Google Assistant Developer Day&lt;/a&gt;, we introduced: &lt;/p&gt;&lt;ul&gt; &lt;li&gt;New App Actions built in intents --  to enable Android developers easily integrate Google Assistant with their apps,   &lt;li&gt;New discovery features such as suggestions and shortcuts  --  to enable users easily discover and engage with Android apps  &lt;li&gt;New developer tools and features, such as testing API, voices and frameworks for game development --  to help build high quality nativel experiences for smart displays  &lt;li&gt;New discovery and monetization improvements  --  to help users discover and engage with developers’ experiences on Assistant.  &lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Now, &lt;span style="text-decoration:underline;"&gt;all&lt;/span&gt; Android Developers can bring Google Assistant to their apps&lt;/h2&gt;&lt;p&gt;Now, every Android app developer can make it easier for their users to find what they're looking for, by fast forwarding them into the app’s key functionality, using just voice. With &lt;a href="https://developers.google.com/assistant/app/overview"&gt;App Actions&lt;/a&gt;, top app developers such as Yahoo Mail, Fandango, and ColorNote, are currently creating these natural and engaging experiences for users by mapping their users' intents to specific functionality within their apps. Instead of having to navigate through each app to get tasks done, users can simply say “Hey Google” and the outcome they want - such as “find Motivation Mix on Spotify” using just their voice.   &lt;/p&gt;&lt;p&gt;Here are a few updates we’re introducing today to App Actions.   &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Quickly open and search within apps with common intents &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Every day, people ask Google Assistant to open their favorite apps. Today, we are building on this functionality to open specific pages within apps and also search within apps. Starting today, you can use the GET_THING intent to search within apps and the OPEN_APP_FEATURE intent to open specific pages in apps; offering more ways to easily connect users to your app through Assistant.  &lt;/p&gt;&lt;p&gt;Many top brands such as eBay and Kroger are already using these intents. If you have the eBay app on your Android phone, try saying “Hey Google, find baseball cards on eBay” to try the GET_THING intent. &lt;/p&gt;&lt;p&gt;If you have the Kroger app on your Android phone, try saying “Hey Google, open Kroger pay” to try the OPEN_APP_FEATURE intent.  &lt;/p&gt;&lt;p&gt;It's easy to implement all these &lt;a href="https://developers.google.com/assistant/app/reference/built-in-intents/common"&gt;common intents&lt;/a&gt; to your Android apps. You can simply declare support for these capabilities in your Actions.xml file to get started. For searching, you can provide a deep link that will allow Assistant to pass a search term into your app. For opening pages, you can provide a deep link with the corresponding name for Assistant to match users' requests.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Vertical specific built-in intents&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;For a deeper integration, we offer vertical-specific built-in intents (BII) that lets Google take care of all the Natural Language Understanding (NLU) so you don’t have to. We first piloted App Actions in some of the most popular app verticals such as Finance, Ridesharing, Food Ordering, and Fitness. Today, we are announcing that we have now grown our catalog to cover more than 60 intents across 10 verticals, adding new categories like Social, Games, Travel &amp; Local, Productivity, Shopping and Communications  &lt;/p&gt;&lt;p&gt;For example, Twitter and Wayfair have already implemented these vertical built in intents. So, if you have the Twitter app on your Android phone, try saying “Hey Google, post a Tweet” to see a Social vertical BII in action. &lt;/p&gt;&lt;p&gt;If you have the Wayfair app on your Android phone, try saying “Hey Google, buy accent chairs on Wayfair” to see a Shopping vertical BII in action. &lt;/p&gt;&lt;p&gt;Check out how you can &lt;a href="https://developers.google.com/assistant/app/intents"&gt;get started&lt;/a&gt; with these built-in intents or explore creating &lt;a href="https://developers.google.com/assistant/app/custom-intents"&gt;custom intents&lt;/a&gt; today.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Custom Intents to highlight unique app experiences&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Every app is unique  with its own features and capabilities, which may not match the list of available App Actions built-in intents. For cases where there isn't a built-in intent for your app functionality, you can instead create a custom intent.Like BIIs, custom intents follow the actions.xml schema and act as connection points between Assistant and your defined fulfillments.  &lt;/p&gt;&lt;p&gt;Snapchat and Walmart use custom intents to extend their app’s functionality to Google Assistant. For example, if you have the Snapchat app on your Android phone, just say, “Hey Google, send a Snap using the cartoon face lens” to try their Custom Intent. &lt;/p&gt;&lt;center&gt;&lt;a href="https://1.bp.blogspot.com/-N3jeZlFIB_E/X36TN9f1LkI/AAAAAAAAJc4/Rvdv7NaGH8sZzwWc8A_bz0OOEmEMOpUZwCLcBGAsYHQ/s0/Snapchat.mp4.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:40%" alt="" border="0" data-original-height="800" data-original-width="379" src="https://1.bp.blogspot.com/-N3jeZlFIB_E/X36TN9f1LkI/AAAAAAAAJc4/Rvdv7NaGH8sZzwWc8A_bz0OOEmEMOpUZwCLcBGAsYHQ/s0/Snapchat.mp4.gif"/&gt;&lt;/a&gt;&lt;/center&gt;&lt;p&gt;Or, If you have the Walmart app on your Android phone, just say, “Hey Google, reserve a time slot with Walmart” to schedule your next grocery pickup. &lt;/p&gt;&lt;p&gt;With more common, built-in, and custom intents available, every Android developer can now enable their app to fulfill Assistant queries that tailor to exactly what their app offers. Developers can also use known developer tools such as Android Studio, and with just a few days of work, they can easily integrate their Android apps with the Google Assistant.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Suggestions and Shortcuts for improving user discoverability&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;We are excited about these new improvements to App Actions, but we also understand that it's equally important that people are  able to discover your App Actions. We’re designing new touch points to help users easily learn about Android apps that support App Actions. For example, we’ll be recommending relevant Apps Actions even when the user doesn't mention the app name explicitly by showing suggestions. If you say broadly “Hey Google, show me Taylor Swift”, we’ll highlight a suggestion chip that will guide the user to open up the search result in Twitter. Google Assistant will also be suggesting apps proactively, depending on individual app usage patterns.  &lt;/p&gt;&lt;center&gt;&lt;a href="https://1.bp.blogspot.com/-LR4zZImNO2A/X36TnL9WFNI/AAAAAAAAJdA/EQbidplbT6wOOPxfZ6jRmC1CTvjXhNxewCLcBGAsYHQ/s0/Taylor%2BSwift%2B-%2BSep%2B1%2B745PM.mp4.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:40%" alt="" border="0" data-original-height="800" data-original-width="379" src="https://1.bp.blogspot.com/-LR4zZImNO2A/X36TnL9WFNI/AAAAAAAAJdA/EQbidplbT6wOOPxfZ6jRmC1CTvjXhNxewCLcBGAsYHQ/s0/Taylor%2BSwift%2B-%2BSep%2B1%2B745PM.mp4.gif"/&gt;&lt;/a&gt;&lt;/center&gt;&lt;p&gt;Android users will also be able to customize their experience, creating their own way to automate their most common tasks with app shortcuts, enabling people to set up quick phrases to enable app functions they frequently use.  For example, you can create a MyFitnessPal shortcut to easily track their calories throughout the day and customize the query to say what you want - such as “Hey Google, check my calories.”  &lt;/p&gt;&lt;p&gt;By simply saying "Hey Google, shortcuts", they can set up and explore suggested shortcuts in  the settings screen. We’ll also make proactive suggestions for shortcuts throughout the Assistant mobile experience, tailored to how you use your phone.  &lt;/p&gt;&lt;h2&gt;Build high quality conversational Actions for Smart Displays&lt;/h2&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt;Back in June, we &lt;a href="https://developers.googleblog.com/2020/06/voice-global-2020-new-improvements-to-core-platform.html"&gt;launched&lt;/a&gt; new developer tools such as &lt;a href="https://developers.googleblog.com/2020/06/announcing-actions-builder-actions-sdk.html"&gt;Actions Builder&lt;/a&gt; and &lt;a href="https://developers.googleblog.com/2020/06/announcing-actions-builder-actions-sdk.html"&gt;Actions SDK,&lt;/a&gt; making it easier to design and build conversational Actions on Assistant, like games, for Smart Displays. Many partners have already been building with these, such as Cool Games and Sony. We’re excited to share new updates that not only enable developers to build more, higher quality native Assistant experiences with new game development frameworks and better testing tools, but we’ve also made user discovery of those experiences better than ever. &lt;/p&gt;&lt;h3&gt;New developer tools and features&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Improved voices&lt;/strong&gt;&lt;br&gt;&lt;p&gt;We’ve heard your feedback that you need better voices to match the quality of the experiences you’re delivering on the Assistant. We’ve released two new English voices that take advantage of an improved prosody model to make Assistant sound more natural. Give it a &lt;a href="https://drive.google.com/file/d/1cakhPrtlbJ_hwhmZZHriT1k7Q4v5UOTP/view?usp=sharing"&gt;listen&lt;/a&gt;.  &lt;/p&gt;&lt;p&gt;These voices are now available and you can leverage them in your existing Actions by simply making the change in the Actions Console. &lt;/p&gt;&lt;strong&gt;Interactive Canvas expansion &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;But what can you build with these new voices? Last year, we introduced &lt;a href="https://developers.google.com/assistant/interactivecanvas"&gt;Interactive Canvas&lt;/a&gt;, an API that lets you build custom experiences for the Assistant that can be controlled via both touch and voice using simple technologies like HTML, CSS, and Javascript.  &lt;/p&gt;&lt;p&gt;We’re expanding Interactive Canvas to Actions in the education and storytelling verticals; in addition to games. Whether you’re building an action that teaches someone to cook, explains the phases of the moon, helps a family member with grammar, or takes you through an interactive adventure, you’ll have access to the full visual power of Interactive Canvas.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Improved testing to deliver high quality experiences &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Actions Testing API is  a new programmatic way to test your critical user journeys and ensure there aren’t any broken conversation paths. Using this framework allows you to run end to end tests in an isolated preview environment, run regression tests, and add continuous testing to your arsenal. This API is being released to general availability soon.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;New Dialogflow migration tool&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;For those of you who built experiences using Dialogflow, we want you to enjoy the benefits of the new platform without having to build from scratch. That’s why we’re offering a &lt;a href="https://developers.google.com/assistant/conversational/dialogflow-to-builder"&gt;migration tool&lt;/a&gt; inside the Actions Console that automates much of the work to move projects to the improved platform.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;New site for game developers&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Game developers, we built a new &lt;a href="https://developers.google.com/assistant/games"&gt;resource hub&lt;/a&gt; just for you. Boost your game design expertise with full source code to games, design best practices, interviews with game developers, tools, and everything you need to create voice-enabled games for Smart Displays. &lt;/p&gt;&lt;h3&gt;Discovery&lt;/h3&gt;&lt;p&gt;With more incredible experiences being built, we know it can be challenging to help users discover them and drive engagement. To make it easier for people to discover and engage with your experiences, we have invested in a slew of new discovery features: &lt;/p&gt;&lt;p&gt;&lt;strong&gt;New Built-in intents and the Learning Hub&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;We’ll soon be opening two new set Built-in intents (BIIs) for public registration: Education and Storytelling. Registering your Actions for these intents allows users to discover them in a simple, natural way through general requests to Google Assistant. These new BIIs cover a range of intents in the Education and Storytelling domains and join Games as principal areas of investment for the developer ecosystem.  &lt;/p&gt;&lt;p&gt;People will then be able to say "Hey Google, teach me something new" and they will be presented with a Learning Hub where they can browse different education experiences. For stories,  users can simply say "Hey Google, tell me a story". Developers can soon register for both new BIIs to get their experiences listed in these browsable catalog. &lt;/p&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-TvJeELgUKs4/X36UmDZSHxI/AAAAAAAAJdM/UnU5-_PGoWku1J3wFT9cYI69BRqSjEfjgCLcBGAsYHQ/s0/_73_LearningHub%2B%25281%2529.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img alt="" border="0" data-original-height="598" data-original-width="1022" src="https://1.bp.blogspot.com/-TvJeELgUKs4/X36UmDZSHxI/AAAAAAAAJdM/UnU5-_PGoWku1J3wFT9cYI69BRqSjEfjgCLcBGAsYHQ/s0/_73_LearningHub%2B%25281%2529.gif"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Household Authentication token and improving transactions&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;One of the exciting things about the Smart Display is that it’s an inherently communal device. So if you’re offering an experience that is meant to be enjoyed collaboratively, you need a way to share state between household members  and between multiple devices. Let’s say you’re working on a puzzle and your roommate wants to help with a few pieces on the Smart Display. We’re introducing household authentication tokens so all users in a home can now share these types of experiences.  This feature will be available soon via the  &lt;a href="https://console.actions.google.com/"&gt;Actions console&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;Finally, we're making improvements to the transaction flow on Smart Displays. We want to make it easier for you to add seamless voice-based and display-based monetization capabilities to your experience. We've started by supporting voice-match as an option for payment authorization. And early next year, we'll also launch an on-display CVC entry.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Simplifying account linking and authentication &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Once you build personalized and premium experiences, you need to make it as easy as possible to connect with existing  accounts. To help streamline this process, we’re opening two betas: Link with Google and App Flip,  for improved account linking flows to allow simple, streamlined authentication via apps.   &lt;/p&gt;&lt;p&gt;&lt;a href="https://developers.google.com/assistant/identity/link-with-google"&gt;Link with Google&lt;/a&gt; enables anyone  with an Android or iOS app where they are already logged in to complete the linking flow with just a few clicks, without needing to re-enter credentials. &lt;/p&gt;&lt;p&gt;&lt;a href="https://developers.google.com/assistant/identity/app-flip"&gt;App Flip&lt;/a&gt; helps you build a better mobile account linking experience and decrease drop-off rates. App Flip allows your users to seamlessly link their accounts to Google without having to re-enter their credentials. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Assistant links&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;In addition to launching new channels of discovery for developer Actions, we also want to provide more control over how you and your users reach your Actions. Action links were a way to deep link to your conversational action that has been used with great success by partners like Sushiro, Caixa, and Giallo Zafferano. Now we are reintroducing  this feature as &lt;a href="https://developers.google.com/assistant/engagement/assistant-links"&gt;Assistant links&lt;/a&gt;, which enable partners such as TD Ameritrade to deliver rich Google Assistant experiences in their websites as well as deep links to their Google Assistant integrations from anywhere on the web.  &lt;/p&gt;&lt;p&gt;We are very excited about all these announcements - both across App Actions and native Assistant development. Whether you are exploring new ways to engage your users using voice via App Actions, or looking to build something new to engage users at home via Smart Displays, we hope you will leverage these new tools and features and share your feedback with us.  &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/4Mn_IBp6t2M" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/7250690700385531241/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/10/google-assistant-developer-day-new.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/7250690700385531241" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/7250690700385531241" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/4Mn_IBp6t2M/google-assistant-developer-day-new.html" title="Top brands integrate Google Assistant with new 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/-IFhs11xg768/X36VrjpcLvI/AAAAAAAAJdU/Cl65ALtOne0P9MD2GQjHF11spwR77W4PwCLcBGAsYHQ/s72-c/gaddpartners.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/10/google-assistant-developer-day-new.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-7841512849652316329</id><published>2020-10-06T11:01:00.006-07:00</published><updated>2020-10-07T13:18:38.439-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="Cloud Anchors" /><category scheme="http://www.blogger.com/atom/ns#" term="persistence" /><category scheme="http://www.blogger.com/atom/ns#" term="persistent AR" /><title type="text">Improving shared AR experiences with Cloud Anchors in ARCore 1.20</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-jRqUdxrw3Bs/X3txg6AnthI/AAAAAAAAJb0/gPfAUFlESFcX-Yaqa1-mf_bUgt9TJplewCLcBGAsYHQ/s0/E779_ar_cloud_anchors_Mark_Blog.gif "&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-jRqUdxrw3Bs/X3txg6AnthI/AAAAAAAAJb0/gPfAUFlESFcX-Yaqa1-mf_bUgt9TJplewCLcBGAsYHQ/s0/E779_ar_cloud_anchors_Mark_Blog.gif "&gt; &lt;p&gt;&lt;em&gt;Posted by Eric Lai, Product Manager, Augmented Reality &lt;/em&gt;&lt;p&gt;  &lt;p&gt;Augmented reality (AR) can help you explore the world around you in new, seemingly magical ways. Whether you want to venture through the Earth’s unique habitats, explore historic cultures or even just find the shortest path to your destination, there’s no shortage of ways that AR can help you interact with the world. &lt;/p&gt;&lt;p&gt;That’s why we’re constantly improving &lt;a href="https://developers.google.com/ar/"&gt;ARCore&lt;/a&gt; — so developers can build amazing AR experiences that help us reimagine what’s possible.   &lt;/p&gt;&lt;p&gt;In 2018, we introduced the &lt;a href="https://developers.google.com/ar/develop/java/cloud-anchors/overview-android"&gt;Cloud Anchors&lt;/a&gt; API in ARCore, which lets people across devices view and share the same AR content in real-world spaces. Since then, we’ve been working on new ways for developers to use Cloud Anchors to make AR content persist and more easily discoverable. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Create long-lasting AR experiences &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Last year, we previewed persistent Cloud Anchors, which lets people return to shared AR experiences again and again. With ARCore 1.20, this feature is now widely available to Android, iOS, and Unity mobile developers. &lt;/p&gt;&lt;p&gt;Developers all over the world are already using this technology to help people learn, share and engage with the world around them in new ways.   &lt;/p&gt;&lt;p&gt;&lt;em&gt;MARK&lt;/em&gt;, which we highlighted last year, is a social platform that lets people leave AR messages in real-world locations for friends, family and their community to discover. &lt;em&gt;MARK &lt;/em&gt;is now available globally and will be launching the &lt;a href="https://mark.app/pc/donation.html"&gt;MARK Hope Campaign&lt;/a&gt; in the US to help people raise funds for their favorite charities and have their donations matched for a limited time.  &lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-jRqUdxrw3Bs/X3txg6AnthI/AAAAAAAAJb0/gPfAUFlESFcX-Yaqa1-mf_bUgt9TJplewCLcBGAsYHQ/s0/E779_ar_cloud_anchors_Mark_Blog.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:250px" alt="AR photo" border="0" data-original-height="724" data-original-width="402" src="https://1.bp.blogspot.com/-jRqUdxrw3Bs/X3txg6AnthI/AAAAAAAAJb0/gPfAUFlESFcX-Yaqa1-mf_bUgt9TJplewCLcBGAsYHQ/s0/E779_ar_cloud_anchors_Mark_Blog.gif"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;  &lt;p&gt;     &lt;p id="imgCaption"&gt; &lt;a href="https://play.google.com/store/apps/details?id=com.psst.app"&gt;MARK&lt;/a&gt; by People Sharing Streetart Together Limited    &lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;a href="https://www.phoria.com.au/rewild-our-planet/"&gt;REWILD Our Planet&lt;/a&gt;&lt;/em&gt; is an AR nature series produced by Melbourne based studio PHORIA. The experience is based on the Netflix original documentary series &lt;em&gt;Our Planet&lt;/em&gt;. &lt;em&gt;REWILD &lt;/em&gt;uses Ultra High Definition Video alongside AR content to let you venture into earth’s unique habitats and interact with endangered wildlife. It originally launched in museums, but can now be enjoyed on your smartphone in your living room. As episodes of the show are released, persistent Cloud Anchors allow you to return to the same spot in your own home to see how nature is changing.    &lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-_teOh2avWf0/X3ty7ByZ6xI/AAAAAAAAJcA/fWWudUkITqALzPjBuitsVqgokflJzvsfACLcBGAsYHQ/s0/E779_ar_cloud_anchors_Phoria_Blog.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:250px" alt="AR image" border="0" data-original-height="540" data-original-width="300" src="https://1.bp.blogspot.com/-_teOh2avWf0/X3ty7ByZ6xI/AAAAAAAAJcA/fWWudUkITqALzPjBuitsVqgokflJzvsfACLcBGAsYHQ/s0/E779_ar_cloud_anchors_Phoria_Blog.gif"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt; &lt;p id="imgCaption"&gt; REWILD Our Planet by PHORIA &lt;/p&gt; &lt;p&gt;&lt;em&gt;Changdeok ARirang&lt;/em&gt; is an AR tour guide app that combines the power of SK Telecom’s 5G with persistent Cloud Anchors. Visitors at Changdeokgung Palace in South Korea are guided by the legendary Haechi to relevant locations where they can experience historical and cultural high fidelity AR content. Changdeok ARirang at Home was also launched so that this same experience can be accessed from the comfort of your couch. &lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-9rPzUqR_y9Q/X3tzSwbsnkI/AAAAAAAAJcI/i4YY_kthbQsal85naj8bJDeTEr6fwEWYACLcBGAsYHQ/s0/E779_ar_cloud_anchors_Changdeok_Blog.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:250px" alt="AR image" border="0" data-original-height="1296" data-original-width="720" src="https://1.bp.blogspot.com/-9rPzUqR_y9Q/X3tzSwbsnkI/AAAAAAAAJcI/i4YY_kthbQsal85naj8bJDeTEr6fwEWYACLcBGAsYHQ/s0/E779_ar_cloud_anchors_Changdeok_Blog.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.SKTelecom.ChangdeokARirang&amp;hl=En"&gt;Changdeok ARirang&lt;/a&gt; by SK Telecom&lt;/em&gt; &lt;/p&gt; &lt;p&gt;In Sweden, &lt;em&gt;SJ Labs, &lt;/em&gt;the innovation arm of Swedish Railways, together with &lt;em&gt;Bontouch&lt;/em&gt;, their tech innovation partner, uses persistent Cloud Anchors to help passengers find their way at Central Station in Stockholm, making it easier and faster for them to make their train departures.  &lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-ERc8nKSzaw0/X3t0NETtqXI/AAAAAAAAJcQ/jK66TNO4wN89q-LAqN7GifjXos3QvU-DACLcBGAsYHQ/s0/E779_ar_cloud_anchors_SwedishRailways_Blog.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:250px" alt="AR image" border="0" data-original-height="1296" data-original-width="720" src="https://1.bp.blogspot.com/-ERc8nKSzaw0/X3t0NETtqXI/AAAAAAAAJcQ/jK66TNO4wN89q-LAqN7GifjXos3QvU-DACLcBGAsYHQ/s0/E779_ar_cloud_anchors_SwedishRailways_Blog.gif"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt; &lt;p id="imgCaption"&gt; &lt;a href="https://play.google.com/store/apps/details?id=se.sj.android.labs"&gt;SJ Labs&lt;/a&gt; by SJ – Swedish Railways &lt;/p&gt; &lt;p&gt;Coming soon, &lt;em&gt;Lowe’s Persistent View &lt;/em&gt;will let you design your home in AR with the help of an expert. You’ll be able to add furniture and appliances to different areas of your home to see how they’d look, and return to the experience as many times as needed before making a purchase.  &lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-oGTFzDYreGc/X3y29UNXF-I/AAAAAAAAJco/6IYuriF5irEcpbjCeORu4a6X3DIdTE_UACLcBGAsYHQ/s0/E779_ar_cloud_anchors_Streem_Blog.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:250px" alt="AR example" border="0" data-original-height="724" data-original-width="402" src="https://1.bp.blogspot.com/-oGTFzDYreGc/X3y29UNXF-I/AAAAAAAAJco/6IYuriF5irEcpbjCeORu4a6X3DIdTE_UACLcBGAsYHQ/s0/E779_ar_cloud_anchors_Streem_Blog.gif"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;  &lt;p id="imgCaption"&gt; Lowe’s Persistent View powered by Streem &lt;/p&gt; &lt;p&gt;If you’re interested in building AR experiences that last over time, you can learn more about persistent Cloud Anchors in our &lt;a href="https://developers.google.com/ar/develop/java/cloud-anchors/persistence"&gt;docs. &lt;/a&gt; &lt;p&gt; &lt;p&gt;&lt;strong&gt;Call for collaborators: test a new way to find AR content &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;As developers use Cloud Anchors to attach more AR experiences to the world, we also want to make it easier for people to discover them. That’s why we’re working on earth Cloud Anchors, a new feature that uses AR and &lt;a href="https://ai.googleblog.com/2019/02/using-global-localization-to-improve.html"&gt;global localization&lt;/a&gt;—the underlying technology that powers &lt;a href="https://support.google.com/maps/thread/11554255?hl=en"&gt;Live View features&lt;/a&gt; on Google Maps—to easily guide users to AR content. If you’re interested in early access to test this feature, you can&lt;a href="https://services.google.com/fb/forms/EarthCloudAnchorsCollab/"&gt; apply here&lt;/a&gt;. &lt;/p&gt; &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/Kp2Sm4Fibj0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt; &lt;/center&gt; &lt;p id="imgCaption"&gt; Some earth Cloud Anchors concepts &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/QrqaiCkQo-4" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/7841512849652316329/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/10/improving-shared-ar-experiences-with.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/7841512849652316329" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/7841512849652316329" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/QrqaiCkQo-4/improving-shared-ar-experiences-with.html" title="Improving shared AR experiences with Cloud Anchors in ARCore 1.20" /><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/-jRqUdxrw3Bs/X3txg6AnthI/AAAAAAAAJb0/gPfAUFlESFcX-Yaqa1-mf_bUgt9TJplewCLcBGAsYHQ/s72-c/E779_ar_cloud_anchors_Mark_Blog.gif " height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/10/improving-shared-ar-experiences-with.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-2699472318474076579</id><published>2020-10-01T09:01:00.000-07:00</published><updated>2020-10-01T09:01:52.932-07:00</updated><title type="text">Introducing Learn, your key to unlocking Google’s educational content for developers</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-ALpfCHZESHg/X3Txfk_b63I/AAAAAAAAJaI/x3b4p8LX8AkiaOT278YLxG7oe-VRaHImwCLcBGAsYHQ/s0/pathways.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-ALpfCHZESHg/X3Txfk_b63I/AAAAAAAAJaI/x3b4p8LX8AkiaOT278YLxG7oe-VRaHImwCLcBGAsYHQ/s0/pathways.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Amani Newton, Technical Writer  &lt;/em&gt;&lt;p&gt;  &lt;p&gt;Any Codelabs fans in the house? &lt;/p&gt;&lt;p&gt;If you haven’t heard yet, we’re excited to announce the launch of &lt;a href="https://developers.google.com/learn"&gt;developers.google.com/learn&lt;/a&gt;, a new one-stop destination for developers to achieve the knowledge and skills needed to develop software with Google's technology. Learn brings the learning content you already love from Google together into one easy to access place. &lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-kFsO71sujjQ/X3T7RS2croI/AAAAAAAAJbk/N2A7Bc2mmocWIWFd27Ml5xHOpzZ5Gy3HQCLcBGAsYHQ/s0/Screen%2BShot%2B2020-09-30%2Bat%2B5.39.58%2BPM.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:700px" alt="Google Developers learning page image" border="0" data-original-height="1070" data-original-width="2338" src="https://1.bp.blogspot.com/-kFsO71sujjQ/X3T7RS2croI/AAAAAAAAJbk/N2A7Bc2mmocWIWFd27Ml5xHOpzZ5Gy3HQCLcBGAsYHQ/s0/Screen%2BShot%2B2020-09-30%2Bat%2B5.39.58%2BPM.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt; &lt;p id="imgCaption"&gt; The home page of developers.google.com/learn &lt;/p&gt; &lt;p&gt;Previously, our educational content was separated by product area and platform. For example, you’d likely find Firebase Codelabs on firebase.google.com, and their video series on Youtube. We know you love these educational offerings, but they could be somewhat difficult to find, unless you were already in the know. &lt;/p&gt;&lt;p&gt;To address this issue, we built Learn to act as a portal, linking all these amazing educational activities together. In addition, we came up with some handy new ways to organize the content, so you can easily find what you’re looking for the first time, every time. &lt;/p&gt;&lt;h2&gt;Codelabs&lt;/h2&gt;  &lt;p&gt;For newbies: Codelabs walk you through the process of building a small application, or adding a new feature to an existing application. They cover a wide range of topics such as Android Wear, Google Compute Engine, Project Tango, and Google APIs on iOS.  &lt;/p&gt;&lt;p&gt;If you’re already familiar with Codelabs, rest assured that not too much has changed. Codelabs still provide guided, hands-on coding experience for new and aspiring developers at no charge, and you can still access all of them through &lt;a href="https://codelabs.developers.google.com/"&gt;codelabs.developers.google.com&lt;/a&gt;.  &lt;/p&gt;&lt;p&gt;What has changed is that now there’s a new way to experience Codelabs: through our Pathways. &lt;/p&gt;&lt;h2&gt;Pathways&lt;/h2&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-ALpfCHZESHg/X3Txfk_b63I/AAAAAAAAJaI/x3b4p8LX8AkiaOT278YLxG7oe-VRaHImwCLcBGAsYHQ/s0/pathways.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style= "width:700px" alt="Pathways image" border="0" data-original-height="715" data-original-width="1637" src="https://1.bp.blogspot.com/-ALpfCHZESHg/X3Txfk_b63I/AAAAAAAAJaI/x3b4p8LX8AkiaOT278YLxG7oe-VRaHImwCLcBGAsYHQ/s0/pathways.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;   &lt;p id="imgCaption"&gt;  The home for Google Learning Pathways &lt;/p&gt; &lt;p&gt;&lt;a href="https://developers.google.com/learn/pathways"&gt;Pathways&lt;/a&gt; are a new way to learn skills using all of the educational activities Google has developed for that skill. They organize selected videos, articles, blog posts, and Codelabs, together in one sequential learning experience so you can develop knowledge and skills at your own pace. &lt;/p&gt;&lt;p&gt;Let’s use Flutter as an example. Did you love The &lt;a href="https://www.youtube.com/watch?v=yr8F2S3Amas&amp;list=PLOU2XLYxmsIK0r_D-zWcmJ1plIcDNnRkK"&gt;Boring Flutter Development Show&lt;/a&gt;, but your style of learning is a little more hands-on? Look no further than the &lt;a href="https://developers.google.com/learn/pathways/intro-to-flutter?hl=en"&gt;Build apps with Flutter&lt;/a&gt; pathway, featuring explanatory videos from the Flutter team and step-by-step Codelabs designed to help you build your first Flutter app. &lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-HnYhCvc-JYM/X3Txli9x6eI/AAAAAAAAJaM/v3thnm-oUWwfLUifJbpJU44bitaoj9KegCLcBGAsYHQ/s0/Flutter.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:700px" alt="Flutter image" border="0" data-original-height="699" data-original-width="1276" src="https://1.bp.blogspot.com/-HnYhCvc-JYM/X3Txli9x6eI/AAAAAAAAJaM/v3thnm-oUWwfLUifJbpJU44bitaoj9KegCLcBGAsYHQ/s0/Flutter.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt; &lt;p id="imgCaption"&gt; The Flutter pathway &lt;/p&gt; &lt;p&gt;All Pathways finish with an assessment, which you can pass to earn a badge. &lt;/p&gt;&lt;h2&gt;Topics&lt;/h2&gt;  &lt;p&gt;&lt;a href="https://developers.google.com/learn/topics"&gt;Topics&lt;/a&gt; allow you to explore collections of related codelabs, pathways, news, and videos.  &lt;/p&gt;&lt;p&gt;Are you a chatbot developer, or aspire to be one? You can find all the latest news and educational content regarding &lt;a href="https://developers.google.com/learn/topics/chatbots"&gt;chatbots&lt;/a&gt; in one easy to find place. &lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-ac5-y1-4PMo/X3TxqvkDLZI/AAAAAAAAJaQ/q5QA6IK92scKmZp9rxUT0BqwW6uBMFP4gCLcBGAsYHQ/s0/chatbots.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style= "width:550px" alt="Topics image" border="0" data-original-height="779" data-original-width="1044" src="https://1.bp.blogspot.com/-ac5-y1-4PMo/X3TxqvkDLZI/AAAAAAAAJaQ/q5QA6IK92scKmZp9rxUT0BqwW6uBMFP4gCLcBGAsYHQ/s0/chatbots.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;   &lt;p id="imgCaption"&gt; The home for news and more about Chatbots &lt;/p&gt; &lt;h2&gt;Developer Profiles&lt;/h2&gt;  &lt;p&gt;Here’s where the fun begins! You can show off all the new stuff you’ve learned on your Google Developer Profile.  &lt;/p&gt;&lt;p&gt;To use the social features, first, create your unique Developer Profile on google.dev.  &lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-kvizjgup43Q/X3TxvPNzjAI/AAAAAAAAJaY/76a9NvaPe2cfavuMPwT01rXujtvYHOyygCLcBGAsYHQ/s0/devprofile.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:450px" alt="Developer Profile " border="0" data-original-height="896" data-original-width="1022" src="https://1.bp.blogspot.com/-kvizjgup43Q/X3TxvPNzjAI/AAAAAAAAJaY/76a9NvaPe2cfavuMPwT01rXujtvYHOyygCLcBGAsYHQ/s0/devprofile.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt; &lt;p id="imgCaption"&gt; Create a Developer Profile on google.dev &lt;/p&gt; &lt;p&gt;Your first badge will be the Created Developer Profile badge.  &lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-mehdqIcS-uc/X3Tx1ZjIXQI/AAAAAAAAJac/-nDssRXoaIcXDPVf6s7AZyqdDpveyvHvQCLcBGAsYHQ/s0/firstbadge.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:450px"alt="first badge" border="0" data-original-height="336" data-original-width="375" src="https://1.bp.blogspot.com/-mehdqIcS-uc/X3Tx1ZjIXQI/AAAAAAAAJac/-nDssRXoaIcXDPVf6s7AZyqdDpveyvHvQCLcBGAsYHQ/s0/firstbadge.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt; &lt;p id="imgCaption"&gt; Create a Developer Profile badge &lt;/p&gt; &lt;p&gt;Next, try one of the pathways we currently host. After completing the activities you’ll take a quiz, and if you pass, you’ll be awarded the badge for that pathway. You can share all of your earned badges on social media, and make your other developer friends jealous! &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/Zft_qBfs6Vc" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/2699472318474076579/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/10/introducing-learn-your-key-to-unlocking.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2699472318474076579" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2699472318474076579" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/Zft_qBfs6Vc/introducing-learn-your-key-to-unlocking.html" title="Introducing Learn, your key to unlocking Google’s educational content for developers" /><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/-ALpfCHZESHg/X3Txfk_b63I/AAAAAAAAJaI/x3b4p8LX8AkiaOT278YLxG7oe-VRaHImwCLcBGAsYHQ/s72-c/pathways.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/10/introducing-learn-your-key-to-unlocking.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-6854970303541642311</id><published>2020-09-25T09:14:00.001-07:00</published><updated>2020-09-25T09:14:52.024-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="augmented reality" /><category scheme="http://www.blogger.com/atom/ns#" term="MediaPipe" /><title type="text">MediaPipe 3D Face Transform</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-c8n-T8juUZ0/X2zbtCwzGnI/AAAAAAAAJZo/iyHQXS8-pb45QLJIpjaW6gm_gaZtWCzDACLcBGAsYHQ/s0/figure_1.gif"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-c8n-T8juUZ0/X2zbtCwzGnI/AAAAAAAAJZo/iyHQXS8-pb45QLJIpjaW6gm_gaZtWCzDACLcBGAsYHQ/s0/figure_1.gif "&gt; &lt;p&gt;&lt;em&gt;Posted by Kanstantsin Sokal, Software Engineer, &lt;a href="http://mediapipe.dev"&gt;MediaPipe team&lt;/a&gt;   &lt;/em&gt;&lt;p&gt; &lt;p&gt;Earlier this year, the &lt;a href="http://mediapipe.dev/"&gt;MediaPipe Team&lt;/a&gt; released the &lt;a href="http://solutions.mediapipe.dev/face_mesh"&gt;Face Mesh&lt;/a&gt; solution, which estimates the approximate 3D face shape via 468 landmarks in real-time on mobile devices. In this blog, we introduce a new face transform estimation module that establishes a researcher- and developer-friendly semantic API useful for determining the 3D face pose and attaching virtual objects (like glasses, hats or masks) to a face. &lt;/p&gt;&lt;p&gt;The new module establishes a metric 3D space and uses the landmark screen positions to estimate common 3D face primitives, including a face pose transformation matrix and a triangular face mesh. Under the hood, a lightweight statistical analysis method called &lt;a href="https://en.wikipedia.org/wiki/Procrustes_analysis"&gt;Procrustes Analysis&lt;/a&gt; is employed to drive a robust, performant and portable logic. The analysis runs on CPU and has a minimal speed/memory footprint on top of the original Face Mesh solution. &lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-c8n-T8juUZ0/X2zbtCwzGnI/AAAAAAAAJZo/iyHQXS8-pb45QLJIpjaW6gm_gaZtWCzDACLcBGAsYHQ/s0/figure_1.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:500px" alt="MediaPipe image" border="0" data-original-height="339" data-original-width="400" src="https://1.bp.blogspot.com/-c8n-T8juUZ0/X2zbtCwzGnI/AAAAAAAAJZo/iyHQXS8-pb45QLJIpjaW6gm_gaZtWCzDACLcBGAsYHQ/s0/figure_1.gif"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;   &lt;p&gt;&lt;em&gt;Figure 1: An example of virtual mask and glasses effects, based on the MediaPipe Face Mesh solution.&lt;/em&gt;&lt;/p&gt;&lt;h2&gt;Introduction&lt;/h2&gt;  &lt;p&gt;The &lt;a href="http://solutions.mediapipe.dev/face_mesh#face-landmark-model"&gt;MediaPipe Face Landmark Model&lt;/a&gt; performs a single-camera face landmark detection in the screen coordinate space: the X- and Y- coordinates are normalized screen coordinates, while the Z coordinate is relative and is scaled as the X coordinate under the &lt;a href="https://en.wikipedia.org/wiki/3D_projection#Weak_perspective_projection"&gt;weak perspective projection camera model&lt;/a&gt;. While this format is well-suited for some applications, it does not directly enable crucial features like aligning a virtual 3D object with a detected face. &lt;/p&gt;&lt;p&gt;The &lt;a href="http://solutions.mediapipe.dev/face_mesh#face-geometry-module"&gt;newly introduced module&lt;/a&gt; moves away from the screen coordinate space towards a metric 3D space and provides the necessary primitives to handle a detected face as a regular 3D object. By design, you'll be able to use a perspective camera to project the final 3D scene back into the screen coordinate space with a guarantee that the face landmark positions are not changed. &lt;/p&gt;&lt;h2&gt;Metric 3D Space&lt;/h2&gt;  &lt;p&gt;The Metric 3D space established within the new module is a right-handed orthonormal metric 3D coordinate space. Within the space, there is a virtual perspective camera located at the space origin and pointed in the negative direction of the Z-axis. It is assumed that the input camera frames are observed by exactly this virtual camera and therefore its parameters are later used to convert the screen landmark coordinates back into the Metric 3D space. The virtual camera parameters can be set freely, however for better results it is advised to set them as close to the real physical camera parameters as possible. &lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-kUAvRUd_bEU/X2zb92Nq36I/AAAAAAAAJZw/tu6QjKjPXa8h_ZQwjxR_g_I2HKFa59SEACLcBGAsYHQ/s0/figure%2B2.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:250px" alt="MediaPipe image" border="0" data-original-height="356" data-original-width="200" src="https://1.bp.blogspot.com/-kUAvRUd_bEU/X2zb92Nq36I/AAAAAAAAJZw/tu6QjKjPXa8h_ZQwjxR_g_I2HKFa59SEACLcBGAsYHQ/s0/figure%2B2.gif"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt; &lt;p&gt;&lt;em&gt;Figure 2: A visualization of multiple key elements in the metric 3D space. Created in Cinema 4D&lt;/em&gt;&lt;/p&gt;&lt;h2&gt;Canonical Face Model&lt;/h2&gt;  &lt;p&gt;The Canonical Face Model is a static 3D model of a human face, which follows the 3D face landmark topology of the &lt;a href="http://solutions.mediapipe.dev/face_mesh#face-landmark-model"&gt;MediaPipe Face Landmark Model&lt;/a&gt;. The model bears two important functions: &lt;/p&gt;&lt;ul&gt; &lt;li&gt;&lt;em&gt;Defines metric units&lt;/em&gt;: the scale of the canonical face model defines the metric units of the Metric 3D space. A metric unit used by the default canonical face model is a centimeter;  &lt;li&gt;&lt;em&gt;Bridges static and runtime spaces&lt;/em&gt;: the face pose transformation matrix is - in fact - a linear map from the canonical face model into the runtime face landmark set estimated on each frame. This way, virtual 3D assets modeled around the canonical face model can be aligned with a tracked face by applying the face pose transformation matrix to them. &lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Face Transform Estimation&lt;/h2&gt;  &lt;p&gt;The face transform estimation pipeline is a key component, responsible for estimating face transform data within the Metric 3D space. On each frame, the following steps are executed in the given order: &lt;/p&gt;&lt;ul&gt; &lt;li&gt;Face landmark screen coordinates are converted into the Metric 3D space coordinates;  &lt;li&gt;Face pose transformation matrix is estimated as a rigid linear mapping from the canonical face metric landmark set into the runtime face metric landmark set in a way that minimizes a difference between the two;  &lt;li&gt;A face mesh is created using the runtime face metric landmarks as the vertex positions (XYZ), while both the vertex texture coordinates (UV) and the triangular topology are inherited from the canonical face model. &lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Effect Renderer&lt;/h2&gt;  &lt;p&gt;The Effect Renderer is a component, which serves as a working example of a face effect renderer. It targets the &lt;em&gt;OpenGL ES 2.0 API&lt;/em&gt; to enable a real-time performance on mobile devices and supports the following rendering modes: &lt;/p&gt;&lt;ul&gt; &lt;li&gt;&lt;em&gt;3D object rendering mode&lt;/em&gt;: a virtual object is aligned with a detected face to emulate an object attached to the face (example: glasses);  &lt;li&gt;&lt;em&gt;Face mesh rendering mode&lt;/em&gt;: a texture is stretched on top of the face mesh surface to emulate a face painting technique. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In both rendering modes, the face mesh is first rendered as an occluder straight into the depth buffer. This step helps to create a more believable effect via hiding invisible elements behind the face surface. &lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-HTe_pSMw1_g/X2zcf-sJxCI/AAAAAAAAJZ4/HCHB_gqVGoQDSTlPNWxOSfrEVbB7AeYUACLcBGAsYHQ/s0/figure%2B3.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:250px" alt="MediaPipe image" border="0" data-original-height="354" data-original-width="200" src="https://1.bp.blogspot.com/-HTe_pSMw1_g/X2zcf-sJxCI/AAAAAAAAJZ4/HCHB_gqVGoQDSTlPNWxOSfrEVbB7AeYUACLcBGAsYHQ/s0/figure%2B3.gif"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt;   &lt;p&gt;&lt;em&gt;Figure 3: An example of face effects rendered by the Face Effect Renderer.&lt;/em&gt;&lt;/p&gt;&lt;h2&gt;Using Face Transform Module&lt;/h2&gt;  &lt;p&gt;The face transform estimation module is available as a part of the &lt;a href="http://solutions.mediapipe.dev/face_mesh"&gt;MediaPipe Face Mesh&lt;/a&gt; solution. It comes with &lt;a href="http://solutions.mediapipe.dev/face_mesh#face-effect-example"&gt;face effect application examples&lt;/a&gt;, available as graphs and mobile apps on Android or iOS. If you wish to go beyond examples, the module contains generic calculators and subgraphs - those can be flexibly applied to solve specific use cases in any MediaPipe graph. For more information, please visit our &lt;a href="http://solutions.mediapipe.dev/face_mesh#face-geometry-module"&gt;documentation&lt;/a&gt;. &lt;/p&gt;&lt;h2&gt;Follow MediaPipe&lt;/h2&gt;  &lt;p&gt;We look forward to publishing more blog posts related to new MediaPipe pipeline examples and features. Please follow the &lt;a href="https://developers.googleblog.com/search/label/MediaPipe"&gt;MediaPipe label&lt;/a&gt; on Google Developers Blog and Google Developers twitter account (&lt;a href="https://twitter.com/googledevs"&gt;@googledevs&lt;/a&gt;). &lt;/p&gt;&lt;h2&gt;Acknowledgements&lt;/h2&gt;  &lt;p&gt;We would like to thank Chuo-Ling Chang, Ming Guang Yong, Jiuqiang Tang, Gregory Karpiak, Siarhei Kazakou, Matsvei Zhdanovich and Matthias Grundman for contributing to this blog post. &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/7mE5b-Cz_n0" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/6854970303541642311/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/09/mediapipe-3d-face-transform.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/6854970303541642311" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/6854970303541642311" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/7mE5b-Cz_n0/mediapipe-3d-face-transform.html" title="MediaPipe 3D Face Transform" /><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/-c8n-T8juUZ0/X2zbtCwzGnI/AAAAAAAAJZo/iyHQXS8-pb45QLJIpjaW6gm_gaZtWCzDACLcBGAsYHQ/s72-c/figure_1.gif " height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/09/mediapipe-3d-face-transform.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-5907353997357219643</id><published>2020-09-23T10:06:00.000-07:00</published><updated>2020-09-23T10:06:36.791-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="Android App Development" /><category scheme="http://www.blogger.com/atom/ns#" term="devfest" /><category scheme="http://www.blogger.com/atom/ns#" term="featured" /><category scheme="http://www.blogger.com/atom/ns#" term="Firebase" /><category scheme="http://www.blogger.com/atom/ns#" term="flutter" /><category scheme="http://www.blogger.com/atom/ns#" term="google assistant" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="Latest" /><category scheme="http://www.blogger.com/atom/ns#" term="TensorFlow" /><title type="text">Announcing DevFest 2020</title><content type="html">&lt;meta name="twitter:image" content=" https://1.bp.blogspot.com/-y54y3OiJmjA/X2tfhQ9tpKI/AAAAAAAAJZc/JGhR5cENV884WkTpL7ehYGQ6GeyWh6qfACLcBGAsYHQ/s0/GDGDevFest_GoogleDevCard_Date%2B%25281%2529.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-y54y3OiJmjA/X2tfhQ9tpKI/AAAAAAAAJZc/JGhR5cENV884WkTpL7ehYGQ6GeyWh6qfACLcBGAsYHQ/s0/GDGDevFest_GoogleDevCard_Date%2B%25281%2529.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Jennifer Kohl, Program Manager, Developer Community Programs &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/-y54y3OiJmjA/X2tfhQ9tpKI/AAAAAAAAJZc/JGhR5cENV884WkTpL7ehYGQ6GeyWh6qfACLcBGAsYHQ/s0/GDGDevFest_GoogleDevCard_Date%2B%25281%2529.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style= "width:650px" alt="DevFest Image" border="0" data-original-height="540" data-original-width="960" src="https://1.bp.blogspot.com/-y54y3OiJmjA/X2tfhQ9tpKI/AAAAAAAAJZc/JGhR5cENV884WkTpL7ehYGQ6GeyWh6qfACLcBGAsYHQ/s0/GDGDevFest_GoogleDevCard_Date%2B%25281%2529.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt; &lt;p&gt;&lt;strong&gt;On October 16-18,&lt;/strong&gt; thousands of developers from all over the world are coming together for &lt;a href="http://goo.gle/devfest"&gt;DevFest 2020&lt;/a&gt;, the largest virtual weekend of community-led learning on Google technologies.  &lt;/p&gt;&lt;p&gt;As people around the world continue to adapt to spending more time at home, developers yearn for community now more than ever. In years past, DevFest was a series of in-person events over a season. For 2020, the community is coming together in a whole new way – virtually – over one weekend to keep developers connected when they may want it the most. &lt;/p&gt; &lt;h2&gt; The speakers &lt;/h2&gt; &lt;p&gt;The magic of DevFest comes from the people who organize and speak at the events - developers with various backgrounds and skill levels, all with their own unique perspectives. In different parts of the world, you can find a DevFest session in many local languages. DevFest speakers are made up of various types of technologists, including &lt;a href="https://developers.googleblog.com/2019/11/devkids-inside-look-at-kids-of-devfest.html"&gt;kid developers &lt;/a&gt;, &lt;a href="https://www.youtube.com/watch?v=WQmfbS7dJGA&amp;t=4s"&gt;self-taught programmers from rural areas &lt;/a&gt;, and &lt;a href="https://www.youtube.com/watch?v=9ayKuMKhlDE"&gt;CEOs and CTOs of startups&lt;/a&gt;. DevFest also features a wide range of speakers from Google, &lt;a href="https://www.womentechmakers.com/"&gt;Women Techmakers&lt;/a&gt;, &lt;a href="https://developers.google.com/community/experts"&gt;Google Developer Experts&lt;/a&gt;, and more. Together, these friendly faces, with many different perspectives, create a unique and rich developer conference. &lt;/p&gt; &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/z-Wdaw0VRak" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt; &lt;/center&gt;   &lt;h2&gt;The sessions and their mission &lt;/h2&gt;   &lt;p&gt;Hosted by &lt;a href="https://developers.google.com/community/gdg"&gt;Google Developer Groups&lt;/a&gt;, this year’s sessions include technical talks and workshops from the community, and a keynote from Google Developers. Through these events, developers will learn how Google technologies help them develop, learn, and build together.  &lt;/p&gt;&lt;p&gt;Sessions will cover multiple technologies, such as &lt;a href="https://developer.android.com/"&gt;Android&lt;/a&gt;, &lt;a href="https://cloud.google.com/"&gt;Google Cloud Platform&lt;/a&gt;, Machine Learning with &lt;a href="https://www.tensorflow.org/"&gt;TensorFlow&lt;/a&gt;, &lt;a href="http://web.dev"&gt;Web.dev&lt;/a&gt;, &lt;a href="https://firebase.google.com/"&gt;Firebase&lt;/a&gt;, &lt;a href="https://developers.google.com/assistant/howassistantworks?hl=en"&gt;Google Assistant&lt;/a&gt;, and &lt;a href="https://flutter.dev/"&gt;Flutter&lt;/a&gt;.  &lt;/p&gt;&lt;br&gt;&lt;center&gt; &lt;i&gt; &lt;font size="+2"&gt;     At our core, Google Developers believes community-led developer events like these are an integral part of the advancement of technology in the world.   &lt;/font&gt; &lt;/i&gt; &lt;/center&gt;  &lt;br&gt;  &lt;p&gt;For this reason, Google Developers supports the community-led efforts of Google Developer Groups and their annual tentpole event, DevFest. Google provides esteemed speakers from the company and custom technical content produced by developers at Google. The impact of DevFest is really driven by the grassroots, passionate GDG community organizers who volunteer their time. Google Developers is proud to support them. &lt;/p&gt;   &lt;h2&gt;The attendees   &lt;/h2&gt;   &lt;p&gt;During DevFest 2019, 138,000+ developers participated across 500+ DevFests in 100 countries. While 2020 is a very different year for events around the world, GDG chapters are galvanizing their communities to come together virtually for this global moment. The excitement for DevFest continues as more people seek new opportunities to meet and collaborate with like-minded, community-oriented developers in our local towns and regions. &lt;/p&gt;   &lt;p&gt;Join the conversation on social media with &lt;strong&gt;#DevFest&lt;/strong&gt;. &lt;/p&gt;&lt;p&gt;&lt;b&gt;Sign up&lt;/b&gt; for DevFest at &lt;a href="http://goo.gle/devfest"&gt;goo.gle/devfest&lt;/a&gt;. &lt;/p&gt;&lt;br&gt;&lt;hr&gt; &lt;p&gt;&lt;b style="font-weight: normal;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.7999999999999998; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="background-color: transparent; color: black; font-family: Roboto,sans-serif; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 300; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; white-space: pre;"&gt; &lt;i&gt; Still curious? Check out these popular talks from DevFest 2019 events around the world... &lt;/i&gt; &lt;/span&gt;&lt;/p&gt; &lt;center&gt; &lt;p&gt;&lt;/p&gt;&lt;div align="left" dir="ltr" style="margin-left: 0pt;"&gt;&lt;table style="border-collapse: collapse; border: none; table-layout: fixed; width: 468pt;"&gt;&lt;colgroup&gt;&lt;col&gt;&lt;/col&gt;&lt;col&gt;&lt;/col&gt;&lt;col&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style="height: 0pt;"&gt;&lt;td style="border-bottom: solid #ffffff 1pt; border-left: solid #ffffff 1pt; border-right: solid #ffffff 1pt; border-top: solid #ffffff 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;a href="https://www.youtube.com/watch?v=ZKrjsux7C38&amp;amp;feature=youtu.be" style="text-decoration: none;"&gt;&lt;span style="-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Roboto,sans-serif; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 300; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; white-space: pre;"&gt;&lt;span style="border: none; display: inline-block; height: 145px; overflow: hidden; width: 194px;"&gt;&lt;img height="145" src="https://lh3.googleusercontent.com/462fGrEQv241pt5Zl1pIq-QBEehB7J-DaLu3PoNIdzRbyoTgbe5nOhiF0PyYKeFzbIbES1-QEiY_DE4WQHQr1UKeRdkg4d520HeHGx752_OXCQGSVgmtD27TH9a_NonmAOUL66hlwg" style="margin-left: 0px; margin-top: 0px;" width="194" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.7999999999999998; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;a href="https://www.youtube.com/watch?v=ZKrjsux7C38&amp;amp;feature=youtu.be" style="text-decoration: none;"&gt;&lt;span style="-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Roboto,sans-serif; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 300; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; white-space: pre;"&gt; Scalable Vector Graphics (SVG) &lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-bottom: solid #ffffff 1pt; border-left: solid #ffffff 1pt; border-right: solid #ffffff 1pt; border-top: solid #ffffff 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;a href="https://www.youtube.com/watch?v=ZDaBHNwERmk&amp;amp;feature=youtu.be" style="text-decoration: none;"&gt;&lt;span style="-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Roboto,sans-serif; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 300; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; white-space: pre;"&gt;&lt;span style="border: none; display: inline-block; height: 145px; overflow: hidden; width: 194px;"&gt;&lt;img height="145" src="https://lh4.googleusercontent.com/7vfCNl_t5gjBO7-PxmJQiAdFdqSRBuoHZgqP6ZHg4vi5OwMliLTe0zWe0tWRrC1nL_VXt-8h1QSF-KZEutcIS23HeoPvI0O_N72ekssRMPS-IUcdaMC4CeDuRy7oLDSYPwEGastS_g" style="margin-left: 0px; margin-top: 0px;" width="194" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.7999999999999998; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;a href="https://www.youtube.com/watch?v=ZDaBHNwERmk&amp;amp;feature=youtu.be" style="text-decoration: none;"&gt;&lt;span style="-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Roboto,sans-serif; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 300; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; white-space: pre;"&gt;How to add Flutter to your app&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-bottom: solid #ffffff 1pt; border-left: solid #ffffff 1pt; border-right: solid #ffffff 1pt; border-top: solid #ffffff 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;a href="https://www.youtube.com/watch?v=IgwIb3_1iUI&amp;amp;feature=youtu.be" style="text-decoration: none;"&gt;&lt;span style="-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Roboto,sans-serif; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 300; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; white-space: pre;"&gt;&lt;span style="border: none; display: inline-block; height: 145px; overflow: hidden; width: 194px;"&gt;&lt;img height="145" src="https://lh4.googleusercontent.com/y7-7Qo5lTroLfNdsBIrFlI3aiQXeABGBzaU6AsyFoEgyYbIceC0ly4EunxodUpyLhVXtsh1EARb_SoQ-w3dSl92Dw4u0xXQA79ZQl_-dCG_Xu6ormuRTDTkSq-2xLBVWvGpOCKl8nA" style="margin-left: 0px; margin-top: 0px;" width="194" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.7999999999999998; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;a href="https://www.youtube.com/watch?v=IgwIb3_1iUI&amp;amp;feature=youtu.be" style="text-decoration: none;"&gt;&lt;span style="-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Roboto,sans-serif; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 300; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; white-space: pre;"&gt;The Flutter journey: production app &lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 0pt;"&gt;&lt;td style="border-bottom: solid #ffffff 1pt; border-left: solid #ffffff 1pt; border-right: solid #ffffff 1pt; border-top: solid #ffffff 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;a href="https://www.youtube.com/watch?v=lRX8O1tzkpA&amp;amp;feature=youtu.be" style="text-decoration: none;"&gt;&lt;span style="-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Roboto,sans-serif; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 300; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; white-space: pre;"&gt;&lt;span style="border: none; display: inline-block; height: 145px; overflow: hidden; width: 194px;"&gt;&lt;img height="145" src="https://lh5.googleusercontent.com/q6h1gLSpt3RjD52MxSWu5vhDukw4asrcsjE1CbVqCSYWGU5caMdPRAd3hxLlRYpKUSKM0yGkjPPFXcIMvgHgFX9EoH4e--Jt30YJWul0rda7VBk5HWh6LIKDXBn7n43M7-HRug4ixA" style="margin-left: 0px; margin-top: 0px;" width="194" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.7999999999999998; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;a href="https://www.youtube.com/watch?v=lRX8O1tzkpA&amp;amp;feature=youtu.be" style="text-decoration: none;"&gt;&lt;span style="-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Roboto,sans-serif; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 300; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; white-space: pre;"&gt;Getting started with microcontrollers &lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-bottom: solid #ffffff 1pt; border-left: solid #ffffff 1pt; border-right: solid #ffffff 1pt; border-top: solid #ffffff 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;a href="https://www.youtube.com/watch?v=cQA1L9OeaKg&amp;amp;feature=youtu.be" style="text-decoration: none;"&gt;&lt;span style="-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Roboto,sans-serif; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 300; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; white-space: pre;"&gt;&lt;span style="border: none; display: inline-block; height: 145px; overflow: hidden; width: 194px;"&gt;&lt;img height="145" src="https://lh6.googleusercontent.com/PzdUfOX1a5GfoFcpIW2TDvCL3UybvQML8plMA2wJzhF5lDrvYWf1KqkhCXulywZcyss2vKoHUNYLvDV8V_7oeQ1DqGR9W4lqV_Upk005g-Wuq-NMtvWpx-EGSrWe_YlIk3FAWjvrDQ" style="margin-left: 0px; margin-top: 0px;" width="194" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.7999999999999998; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;a href="https://www.youtube.com/watch?v=cQA1L9OeaKg&amp;amp;feature=youtu.be" style="text-decoration: none;"&gt;&lt;span style="-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Roboto,sans-serif; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 300; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; white-space: pre;"&gt;Chet Haase and Romaine Guy: quality&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-bottom: solid #ffffff 1pt; border-left: solid #ffffff 1pt; border-right: solid #ffffff 1pt; border-top: solid #ffffff 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;a href="https://www.youtube.com/watch?v=Z4y2bNMYzPs&amp;amp;feature=youtu.be" style="text-decoration: none;"&gt;&lt;span style="-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Roboto,sans-serif; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 300; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; white-space: pre;"&gt;&lt;span style="border: none; display: inline-block; height: 145px; overflow: hidden; width: 194px;"&gt;&lt;img height="145" src="https://lh4.googleusercontent.com/wfA8fe43WIsp6KBlzkRFPyleuFcgmL3tLPHNVeFkv6BdHUTHEf1pL2H1OvvBvLpvKdE7m83nCFaAEZHswtcoqlfkTMyqVxL-AMGJFq91ZwZjJ7mlUNMJG5u8LaXaDVXUZbi5qoktag" style="margin-left: 0px; margin-top: 0px;" width="194" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.7999999999999998; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;a href="https://www.youtube.com/watch?v=Z4y2bNMYzPs&amp;amp;feature=youtu.be" style="text-decoration: none;"&gt;&lt;span style="-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Roboto,sans-serif; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 300; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; white-space: pre;"&gt;Building the ultimate Beatles app&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 0pt;"&gt; &lt;td style="border-bottom: solid #ffffff 1pt; border-left: solid #ffffff 1pt; border-right: solid #ffffff 1pt; border-top: solid #ffffff 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;a href="https://www.youtube.com/watch?v=HQpWqxrcSWE&amp;amp;feature=youtu.be" style="text-decoration: none;"&gt;&lt;span style="-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Roboto,sans-serif; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 300; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; white-space: pre;"&gt; &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt; &lt;/center&gt;  &lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/goB8MkXgUho" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/5907353997357219643/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/09/announcing-devfest-2020.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5907353997357219643" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5907353997357219643" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/goB8MkXgUho/announcing-devfest-2020.html" title="Announcing DevFest 2020" /><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/-y54y3OiJmjA/X2tfhQ9tpKI/AAAAAAAAJZc/JGhR5cENV884WkTpL7ehYGQ6GeyWh6qfACLcBGAsYHQ/s72-c/GDGDevFest_GoogleDevCard_Date%2B%25281%2529.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/09/announcing-devfest-2020.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-596098824972435195.post-2549836512024310444</id><published>2020-09-22T06:53:00.004-07:00</published><updated>2020-09-22T15:19:45.799-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Access" /><category scheme="http://www.blogger.com/atom/ns#" term="Console" /><category scheme="http://www.blogger.com/atom/ns#" term="Device" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><category scheme="http://www.blogger.com/atom/ns#" term="Nest" /><title type="text"> Google Nest Device Access Console now available for partners and individuals</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-jDyPYzU6RPc/X2p4XyYlwHI/AAAAAAAAJZM/NEhr05yJj900FToucoURXjjR-_ONJSGhQCLcBGAsYHQ/s0/DeviceAccessLandingPage.png"&gt;&lt;img style="display:none" src="https://1.bp.blogspot.com/-jDyPYzU6RPc/X2p4XyYlwHI/AAAAAAAAJZM/NEhr05yJj900FToucoURXjjR-_ONJSGhQCLcBGAsYHQ/s0/DeviceAccessLandingPage.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Gabriel Rubinsky, Senior Product Manager&lt;/em&gt;&lt;p&gt;  &lt;p&gt;Today, we’re excited to announce the Device Access Console is available. &lt;/p&gt;&lt;p&gt;The Device Access program lets individuals and qualified partners securely access and control Nest products with their apps and solutions.  &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-jDyPYzU6RPc/X2p4XyYlwHI/AAAAAAAAJZM/NEhr05yJj900FToucoURXjjR-_ONJSGhQCLcBGAsYHQ/s0/DeviceAccessLandingPage.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img alt="" border="0" data-original-height="1185" data-original-width="1602" src="https://1.bp.blogspot.com/-jDyPYzU6RPc/X2p4XyYlwHI/AAAAAAAAJZM/NEhr05yJj900FToucoURXjjR-_ONJSGhQCLcBGAsYHQ/s0/DeviceAccessLandingPage.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;At the heart of the Device Access program is the Smart Device Management API. Since we announced the program, Alarm.com, Control4, DISH, OhmConnect, NRG Energy, and Vivint Smart Home have successfully completed the Early Access Program (EAP) with Nest thermostat, camera, or doorbell traits. In the coming months, we expect additional devices to be supported and more smart home partners to launch their new integrations as well. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Enhanced privacy and security&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The Device Access program is built on a foundation of privacy and security. The program requires partner submission of qualified use cases and completion of a security assessment before being allowed to utilize the Smart Device Management API for commercial use. The program process gives our users the confidence that commercial partners offering integrated Nest solutions have data protections and safeguards in place that meet our privacy and security standards.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Nest device access and control&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The Device Access program currently allows qualified partners to integrate directly with Nest devices, enable control of thermostats, access and view camera feeds, and receive doorbell notifications with images. All qualified partner solutions and services will require end-user consent before being able to access, control, and manage Nest devices as part of their service offerings, either through a partner client app or service platform. Ultimately, this gives users more choice in how to control their home and their own generated data.  &lt;/p&gt;&lt;p&gt;If you’re a developer or a Nest user interested in the Device Access program or access to the sandbox development environment,* you can find more information on our &lt;a href="https://developers.google.com/nest/device-access"&gt;Device Access site&lt;/a&gt;. &lt;/p&gt;  &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Device Access for Commercial Developers&lt;/strong&gt;&lt;p&gt;     The Device Access program allows trusted partners to offer access, management, and control of Nest devices within the partner’s app, solution, and ecosystem. It allows developers to test all API traits in the sandbox environment, before moving forward with commercial integration. &lt;a href="https://developers.google.com/nest/device-access/project/apply"&gt;Learn more&lt;/a&gt;&lt;/p&gt; &lt;li&gt;&lt;strong&gt;Device Access for Individuals&lt;/strong&gt;&lt;p&gt;     For individual smart home developer enthusiasts, you can register to access the sandbox development environment, allowing you to directly control your own Nest devices through your private integrations and automations. &lt;a href="https://support.google.com/googlenest/answer/9539279#individual_access"&gt;Learn more&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;We’re doing the work to make Nest devices more secure and protect user privacy long into the future. This means expanding privacy and data security programs, and delivering flexibility for our customers to use thousands of products from partners to create a connected, helpful home. &lt;/p&gt;&lt;br&gt;&lt;br&gt;  &lt;small&gt;  * Registration consists of the acceptance of the Google API and Nest Device Access Sandbox Terms of Service, along with a one-time, non-refundable nominal fee per account &lt;/small&gt;  &lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/hc6C12-mvts" height="1" width="1" alt=""/&gt;</content><link rel="replies" type="application/atom+xml" href="http://developers.googleblog.com/feeds/2549836512024310444/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://developers.googleblog.com/2020/09/google-nest-device-access-console.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2549836512024310444" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2549836512024310444" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/hc6C12-mvts/google-nest-device-access-console.html" title=" Google Nest Device Access Console now available for partners and individuals" /><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/-jDyPYzU6RPc/X2p4XyYlwHI/AAAAAAAAJZM/NEhr05yJj900FToucoURXjjR-_ONJSGhQCLcBGAsYHQ/s72-c/DeviceAccessLandingPage.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://developers.googleblog.com/2020/09/google-nest-device-access-console.html</feedburner:origLink></entry></feed>
