Posted by Patricia Correa, Director, Global Developer Marketing
In June this year we opened applications for our Indie Games Accelerator, a mentorship program to help top mobile game startups achieve their full potential, as well as for our Indie Games Festival, a competition open to small game studios who get the opportunity to win promotions and be featured on Google Play. These annual programs are part of our commitment to helping all developers thrive in the Google ecosystem.
We received thousands of applications from developers across the world and we were truly amazed by the response. We’re impressed by the innovation and passion of the indie game community, and the unique and creative games they bring to players worldwide.
This year, for the first time, the events were virtual so everyone could attend. Players from around the world joined the adventure, met the finalists, played their games, and cheered on the Top 10 and the winners as they were announced on stage.
We also took the opportunity to announce the Indie Games Accelerator selected class of 2021.
Our deepest thanks to our amazing hosts: YouTube creator Papfi, Japanese comedians Kajisak and Kikuchiusotsukanai, and Inho Chung, who all shared their unique expertise and love of games.
Without further ado, here are this year's Festival winners…
Posted by Wesley Chun (@wescpy), Developer Advocate, Google Cloud
An easier yet still optional migration
In the previous episode of the Serverless Migration Station video series, developers learned how to containerize their App Engine code for Cloud Run using Docker. While Docker has gained popularity over the past decade, not everyone has containers integrated into their daily development workflow, and some prefer "containerless" solutions but know that containers can be beneficial. Well today's video is just for you, showing how you can still get your apps onto Cloud Run, even If you don't have much experience with Docker, containers, nor Dockerfiles.
App Engine isn't going away as Google has expressed long-term support for legacy runtimes on the platform, so those who prefer source-based deployments can stay where they are so this is an optional migration. Moving to Cloud Run is for those who want to explicitly move to containerization.
Migrating to Cloud Run with Cloud Buildpacks video
So how can apps be containerized without Docker? The answer is buildpacks, an open-source technology that makes it fast and easy for you to create secure, production-ready container images from source code, without a Dockerfile. Google Cloud Buildpacks adheres to the buildpacks open specification and allows users to create images that run on all GCP container platforms: Cloud Run (fully-managed), Anthos, and Google Kubernetes Engine (GKE). If you want to containerize your apps while staying focused on building your solutions and not how to create or maintain Dockerfiles, Cloud Buildpacks is for you.
In the last video, we showed developers how to containerize a Python 2 Cloud NDB app as well as a Python 3 Cloud Datastore app. We targeted those specific implementations because Python 2 users are more likely to be using App Engine's ndb or Cloud NDB to connect with their app's Datastore while Python 3 developers are most likely using Cloud Datastore. Cloud Buildpacks do not support Python 2, so today we're targeting a slightly different audience: Python 2 developers who have migrated from App Engine ndb to Cloud NDBand who have ported their apps to modern Python 3 but now want to containerize them for Cloud Run.
Developers familiar with App Engine know that a default HTTP server is provided by default and started automatically, however if special launch instructions are needed, users can add an entrypoint directive in their app.yaml files, as illustrated below. When those App Engine apps are containerized for Cloud Run, developers must bundle their own server and provide startup instructions, the purpose of the ENTRYPOINT directive in the Dockerfile, also shown below.
Starting your web server with App Engine (app.yaml) and Cloud Run with Docker (Dockerfile) or Buildpacks (Procfile)
In this migration, there is no Dockerfile. While Cloud Buildpacks does the heavy-lifting, determining how to package your app into a container, it still needs to be told how to start your service. This is exactly what a Procfile is for, represented by the last file in the image above. As specified, your web server will be launched in the same way as in app.yaml and the Dockerfile above; these config files are deliberately juxtaposed to expose their similarities.
Other than this swapping of configuration files and the expected lack of a .dockerignore file, the Python 3 Cloud NDB app containerized for Cloud Run is nearly identical to the Python 3 Cloud NDB App Engine app we started with. Cloud Run's build-and-deploy command (gcloud run deploy) will use a Dockerfile if present but otherwise selects Cloud Buildpacks to build and deploy the container image. The user experience is the same, only without the time and challenges required to maintain and debug a Dockerfile.
Get started now
If you're considering containerizing your App Engine apps without having to know much about containers or Docker, we recommend you try this migration on a sample app like ours before considering it for yours. A corresponding codelab leading you step-by-step through this exercise is provided in addition to the video which you can use for guidance.
All migration modules, their videos (when available), codelab tutorials, and source code, can be found in the migration repo. While our content initially focuses on Python users, we hope to one day also cover other legacy runtimes so stay tuned. Containerization may seem foreboding, but the goal is for Cloud Buildpacks and migration resources like this to aid you in your quest to modernize your serverless apps!
Posted by Ashley Francisco, Head of Startup Developer Ecosystem, Canada
Earlier this summer we shared details about how the Google for Startups Accelerator program is expanding its support for founders from underrepresented groups. In addition to our Black Founders accelerator program, the expansion included a second year of programming specifically designed for women-led startups in North America.
We launched the inaugural Google for Startups Accelerator: Women Founders program in 2020, in order to address gender disparity in the startup ecosystem and provide high-quality mentorship opportunities and support for women founders. Studies showed that only 16% of small and medium sized businesses were owned by women, and that women often lack access to venture capitalist funding and accelerator programs to help launch and scale up their businesses.
This year, we have designed another great program for our women founders, and today we are thrilled to announce the 12 women-led startups joining our class of 2021.
Aquacycl (Escondido, California): Aquacycl makes energy-neutral wastewater treatment a reality, offering modular on-site systems to treat high-strength organic waste streams. The BioElectrochemical Treatment Technology (BETT) is the first commercially viable microbial fuel cell, which generates direct electricity from wastewater, treating untreatable streams and reducing wastewater management costs by 20-60%.
Braze Mobility (Toronto, Ontario): Braze Mobility provides affordable navigation solutions for wheelchair users. It developed the world's first blind spot sensor system that can be attached to any wheelchair, transforming it into a smart wheelchair that automatically detects obstacles and provides alerts to the user through intuitive lights, sounds, and vibrations.
Claira (Grand Rapids, Michigan): Claira is a competency analytics engine that helps organizations understand their people and hire better.
ImagoAI (Saint Paul, Minnesota): ImagoAI’s proprietary AI solution does real-time food safety and quality testing at food manufacturing facilities and on the farms. Its solutions help companies reduce production line hold times by more than 90%, delivering consistent quality products, and reduce waste by early inspection.
Journey Foods (Austin, Texas): Journey Foods solves food science and supply chain inefficiencies with software in order to help companies feed 8 billion people better. They build enterprise technology that improves product management, ingredient intelligence, and manufacturing insights for CPG companies, grocery stores, suppliers, and manufacturers.
Nyquist Data (Palo Alto, California): Nyquist Data helps companies around the world access critical data and insights, which maximizes efficiency, resources, and results for innovation.
Paperstack (Toronto, Ontario): Paperstack is an all-in-one platform that helps self-employed individuals with incorporation, bookkeeping, and taxes.
Pocketnest (Ann Arbor, Michigan): Pocketnest is a comprehensive financial planning tool targeting genX and millennials. The company licenses its software to financial institutions and employers, helping them connect with a younger audience and grow their business. Based on psychology, behavioral science and coaching, it leads users through all ten themes of personal finances, resulting in actionable items and recommendations customized for each user.
SAFETYDOCS Global (Vancouver, British Columbia): SAFETYDOCS Global is a document management solutions platform that streamlines and automates permitting and licensing documentation workflows.
Schoolytics (Washington, DC): Schoolytics, the Student Data Platform, enables schools to connect disparate student datasets, including the student information system (SIS), learning management systems (LMS), and assessments, to transform data into meaningful insights and action. Its web-based tool supports data-driven decision making through real-time analytics and reporting.
Tengiva (Montreal, Quebec): Tengiva is the first digital platform enabling real-time supply chain in the textile industry by optimizing the typical months-long procurement process into a single-click operation.
ThisWay (Austin, Texas): ThisWay matches all people to all jobs, fairly and without bias. The web platform accurately delivers qualified talent, while increasing diversity and inclusion so ROI is optimized.
Starting on September 27, the 10-week intensive virtual program will bring the best of Google's programs, products, people and technology to help these businesses reach their goals. Participating startups receive deep mentorship on technical challenges and machine learning, as well as connections to relevant teams across Google. The startups will also receive nontechnical programming to help address some of the unique barriers faced by women founders in the startup ecosystem.
We are excited to welcome these 12 women-led businesses to our Google for Startups Accelerator community, and look forward to working with them this fall!
Posted by Chris Curtis, Startup Marketing Manager at Google Cloud
We’re excited to announce our first-ever Google Cloud Startup Summit will be taking place on September 9, 2021.
We hope you will join us as we bring together our startup community, including startup founders, CTOs, VCs and Google experts to provide behind the scenes insights and inspiring stories of innovation. To kick off the event, we’ll be bringing in X’s Captain of Moonshots, Astro Teller, for a keynote focused on innovation. We’ll also have exciting technical and business sessions,with Google leaders, industry experts, venture investors and startup leaders. You can see the full agenda here to get more details on the sessions.
We can’t wait to see you at the Google Cloud Startup Summit at 10am PT on September 9! Register to secure your spot today.
Posted by Aniedi Udo-Obong, Sub-Saharan Africa Regional Lead, Google Developer Groups
The Google Developer Groups Spotlight series interviews inspiring leaders of community meetup groups around the world. Our goal is to learn more about what developers are working on, how they’ve grown their skills with the Google Developer Group community, and what tips they might have for us all.
We recently spoke with Kose, community lead for Google Developer Groups Juba in South Sudan. Check out our conversation with Kose about building a GDG chapter, the future of GDG Juba, and the importance of growing the tech community in South Sudan.
Tell us a little about yourself?
I’m a village-grown software developer and community lead of GDG Juba. I work with JavaScript stack with a focus on the backend. Learning through the community has always been part of me before joining GDG Juba. I love tech volunteerism and building a community around me and beyond. I attended many local developer meetups and learned a lot that led to my involvement with GDG Juba.
I am currently helping grow the GDG Juba community in South Sudan, and previously volunteered as a mentor in the Google Africa Developer Scholarship 2020.
Why did you want to get involved in tech?
I hail from a remote South Sudan's village with little to zero access to technology. My interest in tech has largely been driven due to an enthusiasm to build things and solve farming, agricultural economics, and social issues using technology.
I am currently researching and working on a farmers connection network to help transform our agricultural economics.
What is unique about pursuing a career as a developer in South Sudan?
When you talk about technology in South Sudan, we are relatively behind compared to our neighbors and beyond. Some challenges include the lack of support, resources, and mentorship among the few technology aspirants. The electricity and internet bills are so costly that an undetermined hustler won't sacrifice their days' hustle for exploring and learning the tech spectrum.
At the same time, there are a lot of areas technology developers can dive into. Finance, hospitality, agriculture, transportation, and content creation are all viable fields. As a determined techie, I tasked myself with allocating 10% of everything I do and earn to learning and exploring technology. This helped me to have some time, money, and resources for my tech journey. As for mentorship, I’m building a global network of resourceful folks to help me venture into new areas of the tech sector.
How did you become a GDG lead?
I’ve always been that person who joined tech events as often as I could find registration links. In my college days, I would skip classes to attend events located hours away. I would hardly miss Python Hyderabad, pycons, and many other Android meetups. It was during the International Women's Day (IWD) 2018 event organized by WTM Hyderabad and GDG Hyderabad that I was lucky enough to give a short challenge pitch talk. I saw how the conference folks were excited and amazed given the fact that I was the only African in the huge Tech Mahindra conference hall. I met a lot of people, organizers, business personalities and students.
Kose takes the stage for International Women's Day (IWD) 2018
At the end of the conference and subsequent events, I convinced myself to start a similar community. Since starting out with a WhatsApp group chat, we’ve grown to about 200 members on our GDG event platform, and have event partners like Koneta Hub and others. Since then, GDG Juba is helping grow the tech community around Juba, South Sudan.
How has the GDG community helped you grow in the tech industry?
From design thinking to public speaking and structuring technical meetups, the GDG community has become a resourceful part of organizing GDG Juba meetups and enhancing my organizational skills.
As a community lead, I continuously plan the organization of more impactful events and conferences, and network with potential event partners, speakers, mentors, and organizers. Being part of the GDG community has helped me get opportunities to share knowledge with others. In one instance, I became a mobile web mentor and judge for the Google Africa Developer Scholarship 2020 program.
What has been the most inspiring part of being a part of your local Google Developer Group?
As a tech aspirant, I had always wanted to be part of a tech community to learn, network, and grow in the community. Unfortunately, back then there wasn't a single tech user group in my locality. The most inspiring thing about being part of this chapter is the network buildup and learning from the community. I notably network with people I could have never networked with on a typical day.
Kose at a GDG Juba meetup
A lot of our meetup attendees now share their knowledge and experiences with others to inspire many. We are seeing a community getting more engagement in technology. Students tell us they are learning things they hardly get in their college curriculum.
As a learner myself, I am very excited to see folks learn new tech skills and am also happy to see women participating in the tech events. I’m especially proud of the fact that we organized International Women's Day (IWD) 2021, making it possible for us to be featured in a famous local newspaper outlet.
What are some technical resources you have found the most helpful for your professional development?
The official documentation from Google Developers for Android, Firebase, and others have been and are still helpful for my understanding and diving into details of the new things I learn.
In addition to the cool resources from the awesome tech bloggers on the internet, these links are helping me a lot in my adventure:
What is coming up for GDG Juba that you are most excited about?
As part of our Android Study Jam conducted earlier this year, we are planning to host a mentorship program for Android application development. The program will run from scratch to building a fully-fledged, deployable Android app that the community can use for daily activities. I am particularly excited about the fact that we will be having a mentor who has been in the industry for quite a long time. I hope to see people who read this article participating in the mentorship program, too!
What would be one piece of advice you have for someone looking to learn more about a specific technology?
Be a learner. Join groups that can mentor your learning journey.
Ready to learn new skills with developers like Kose? Find a Google Developer Group near you, here.
A guest post by the Engineering team at Video-Touch
Please note that the information, uses, and applications expressed in the below post are solely those of our guest author, Video-Touch.
A guest post by Video-Touch
You may have watched some science fiction movies where people could control robots with the movements of their bodies. Modern computer vision and robotics approaches allow us to make such an experience real, but no less exciting and incredible.
Inspired by the idea to make remote control and teleoperation practical and accessible during such a hard period of coronavirus, we came up with a VideoTouch project.
Video-Touch is the first robot-human interaction system that allows multi-user control via video calls application (e.g. Google Meet, Zoom, Skype) from anywhere in the world.
Figure 1: The Video-Touch system in action: single user controls a robot during a Video-Touch call. Note the sensors’ feedback when grasping a tube [source video].
We were wondering if it is even possible to control a robot remotely using only your own hands - without any additional devices like gloves or a joystick - not suffering from a significant delay. We decided to use computer vision to recognize movements in real-time and instantly pass them to the robot. Thanks to MediaPipe now it is possible.
Our system looks as follows:
Video conference application gets a webcam video on the user device and sends it to the robot computer (“server”);
User webcam video stream is being captured on the robot's computer display via OBS virtual camera tool;
The recognition module reads user movements and gestures with the help of MediaPipe and sends it to the next module via ZeroMQ;
The robotic arm and its gripper are being controlled from Python, given the motion capture data.
Figure 2: Overall scheme of the Video-Touch system: from users webcam to the robot control module [source video].
As it clearly follows from the scheme, all the user needs to operate a robot is a stable internet connection and a video conferencing app. All the computation, such as screen capture, hand tracking, gesture recognition, and robot control, is being carried on a separate device (just another laptop) connected to the robot via Wi-Fi. Next, we describe each part of the pipeline in detail.
Video stream and screen capture
One can use any software that sends a video from one computer to another. In our experiments, we used the video conference desktop application. A user calls from its device to a computer with a display connected to the robot. Thus it can see the video stream from the user's webcam.
Now we need some mechanism to pass the user's video from the video conference to the Recognition module. We use Open Broadcaster Software (OBS) and its virtual camera tool to capture the open video conference window. We get a virtual camera that now has frames from the users' webcam and its own unique device index that can be further used in the Recognition module.
Recognition module
The role of the Recognition module is to capture a users' movements and pass them to the Robot control module. Here is where the MediaPipe comes in. We searched for the most efficient and precise computer vision software for hand motion capture. We found many exciting solutions, but MediaPipe turned out to be the only suitable tool for such a challenging task - real-time on-device fine-grained hand movement recognition.
We made two key modifications to the MediaPipe Hand Tracking module:added gesture recognition calculator and integrated ZeroMQ message passing mechanism.
At the moment of our previous publication we had two versions of the gesture recognition implementation. The first version is depicted in Figure 3 below and does all the computation inside the Hand Gesture Recognition calculator. The calculator has scaled landmarks as its input, i.e. these landmarks are normalized on the size of the hand bounding box, not on the whole image size. Next it recognizes one of 4 gestures (see also Figure 4): “move”, “angle”, “grab” and “no gesture” (“finger distance” gesture from the paper was an experimental one and was not included in the final demo) and outputs the gesture class name. Despite this version being quite robust and useful, it is based only on simple heuristic rules like: “if this landmark[i].x < landmark[j].x then it is a `move` gesture”, and is failing for some real-life cases like hand rotation.
Figure 3: Modified MediaPipe Hand Landmark CPU subgraph. Note the HandGestureRecognition calculator
To alleviate the problem of bad generalization, we implemented the second version. We trained the Gradient Boosting classifier from scikit-learn on a manually collected and labeled dataset of 1000 keypoints: 200 per “move”, “angle” and “grab” classes, and 400 for “no gesture” class. By the way, today such a dataset could be easily obtained using the recently released Jesture AI SDK repo (note: another project of some of our team members).
We used scaled landmarks, angles between joints, and pairwise landmark distances as an input to the model to predict the gesture class. Next, we tried to pass only the scaled landmarks without any angles and distances, and it resulted in similar multi-class accuracy of 91% on a local validation set of 200 keypoints. One more point about this version of gesture classifier is that we were not able to run the scikit-learn model from C++ directly, so we implemented it in Python as a part of the Robot control module.
Figure 4: Gesture classes recognized by our model (“no gesture” class is not shown).
Right after the publication, we came up with a fully-connected neural network trained in Keras on just the same dataset as the Gradient Boosting model, and it gave an even better result of 93%. We converted this model to the TensorFlow Lite format, and now we are able to run the gesture recognition ML model right inside the Hand Gesture Recognition calculator.
Figure 5: Fully-connected network for gesture recognition converted to TFLite model format.
When we get the current hand location and current gesture class, we need to pass it to the Robot control module. We do this with the help of the high-performance asynchronous messaging library ZeroMQ. To implement this in C++, we used the libzmq library and the cppzmq headers. We utilized the request-reply scenario: REP (server) in C++ code of the Recognition module and REQ (client) in Python code of the Robot control module.
So using the hand tracking module with our modifications, we are now able to pass the motion capture information to the robot in real-time.
Robot control module
A robot control module is a Python script that takes hand landmarks and gesture class as its input and outputs a robot movement command (on each frame). The script runs on a computer connected to the robot via Wi-Fi. In our experiments we used MSI laptop with the Nvidia GTX 1050 Ti GPU. We tried to run the whole system on Intel Core i7 CPU and it was also real-time with a negligible delay, thanks to the highly optimized MediaPipe compute graph implementation.
We use the 6DoF UR10 robot by Universal Robotics in our current pipeline. Since the gripper we are using is a two-finger one, we do not need a complete mapping of each landmark to the robots’ finger keypoint, but only the location of the hands’ center. Using this center coordinates and python-urx package, we are now able to change the robots’ velocity in a desired direction and orientation: on each frame, we calculate the difference between the current hand center coordinate and the one from the previous frame, which gives us a velocity change vector or angle. Finally, all this mechanism looks very similar to how one would control a robot with a joystick.
Figure 6: Hand-robot control logic follows the idea of a joystick with pre-defined movement directions [source video].
Tactile perception with high-density tactile sensors
Dexterous manipulation requires a high spatial resolution and high-fidelity tactile perception of objects and environments. The newest sensor arrays are well suited for robotic manipulation as they can be easily attached to any robotic end effector and adapted at any contact surface.
Figure 7: High fidelity tactile sensor array: a) Array placement on the gripper. b) Sensor data when the gripper takes a pipette. c) Sensor data when the gripper takes a tube [source publication].
Video-Touch is embedded with a kind of high-density tactile sensor array. They are installed in the two-fingers robotic gripper. One sensor array is attached to each fingertip. A single electrode array can sense a frame area of 5.8 [cm2] with a resolution of 100 points per frame. The sensing frequency equals 120 [Hz]. The range of force detection per point is of 1-9 [N]. Thus, the robot detects the pressure applied to solid or flexible objects grasped by the robotic fingers with a resolution of 200 points (100 points per finger).
The data collected from the sensor arrays are processed and displayed to the user as dynamic finger-contact maps. The pressure sensor arrays allow the user to perceive the grasped object's physical properties such as compliance, hardness, roughness, shape, and orientation.
Figure 8: Multi-user robotic arm control feature. The users are able to perform a COVID-19 test during a regular video call [source video].
Endnotes
Thus by using MediaPipe and a robot we built an effective, multi-user robot teleoperation system. Potential future uses of teleoperation systems include medical testing and experiments in difficult-to-access environments like outer space. Multi-user functionality of the system addresses an actual problem of effective remote collaboration, allowing to work on projects which need manual remote control in a group of several people.
Another nice feature of our pipeline is that one could control the robot using any device with a camera, e.g. a mobile phone. One also could operate another hardware form factor, such as edge devices, mobile robots, or drones instead of a robotic arm. Of course, the current solution has some limitations: latency, the utilization of z-coordinate (depth), and the convenience of the gesture types could be improved. We can’t wait for the updates from the MediaPipe team to try them out, and looking forward to trying new types of the gripper (with fingers), two-hand control, or even a whole-body control (hello, “Real Steel”!).
We hope the post was useful for you and your work. Keep coding and stay healthy. Thank you very much for your attention!
This blog post is curated by Igor Kibalchich, ML Research Product Manager at Google AI
Posted by Wesley Chun (@wescpy), Developer Advocate, Google Cloud
An optional migration
Serverless Migration Station is a video mini-series from Serverless Expeditions focused on helping developers modernize their applications running on a serverless compute platform from Google Cloud. Previous episodes demonstrated how to migrate away from the older, legacy App Engine (standard environment) services to newer Google Cloud standalone equivalents like Cloud Datastore. Today's product crossover episode differs slightly from that by migrating away from App Engine altogether, containerizing those apps for Cloud Run.
There's little question the industry has been moving towards containerization as an application deployment mechanism over the past decade. However, Docker and use of containers weren't available to early App Engine developers until its flexible environment became available years later. Fast forward to today where developers have many more options to choose from, from an increasingly open Google Cloud. Google has expressed long-term support for App Engine, and users do not need to containerize their apps, so this is an optional migration. It is primarily for those who have decided to add containerization to their application deployment strategy and want to explicitly migrate to Cloud Run.
If you're thinking about app containerization, the video covers some of the key reasons why you would consider it: you're not subject to traditional serverless restrictions like development language or use of binaries (flexibility); if your code, dependencies, and container build & deploy steps haven't changed, you can recreate the same image with confidence (reproducibility); your application can be deployed elsewhere or be rolled back to a previous working image if necessary (reusable); and you have plenty more options on where to host your app (portability).
While we've recently begun to produce videos for such migrations, developers can already access code samples and codelab tutorials leading them through a variety of migrations. In today's video, we have both Python 2 and 3 sample apps that have divested from legacy services, thus ready to containerize for Cloud Run. Python 2 App Engine apps accessing Datastore are most likely to be using Cloud NDB whereas it would be Cloud Datastore for Python 3 users, so this is the starting point for this migration.
Because we're "only" switching execution platforms, there are no changes at all to the application code itself. This entire migration is completely based on changing the apps' configurations from App Engine to Cloud Run. In particular, App Engine artifacts such as app.yaml, appengine_config.py, and the lib folder are not used in Cloud Run and will be removed. A Dockerfile will be implemented to build your container. Apps with more complex configurations in their app.yaml files will likely need an equivalent service.yaml file for Cloud Run — if so, you'll find this app.yaml to service.yaml conversion tool handy. Following best practices means there'll also be a .dockerignore file.
App Engine and Cloud Functions are sourced-based where Google Cloud automatically provides a default HTTP server like gunicorn. Cloud Run is a bit more "DIY" because users have to provide a container image, meaning bundling our own server. In this case, we'll pick gunicorn explicitly, adding it to the top of the existing requirements.txt required packages file(s), as you can see in the screenshot below. Also illustrated is the Dockerfile where gunicorn is started to serve your app as the final step. The only differences for the Python 2 equivalent Dockerfile are: a) require the Cloud NDB package (google-cloud-ndb) instead of Cloud Datastore, and b) start with a Python 2 base image.
The Python 3 requirements.txt and Dockerfile
Next steps
To walk developers through migrations, we always "START" with a working app then make the necessary updates that culminate in a working "FINISH" app. For this migration, the Python 2 sample app STARTs with the Module 2a code and FINISHes with the Module 4a code. Similarly, the Python 3 app STARTs with the Module 3b code and FINISHes with the Module 4b code. This way, if something goes wrong during your migration, you can always rollback to START, or compare your solution with our FINISH. If you are considering this migration for your own applications, we recommend you try it on a sample app like ours before considering it for yours. A corresponding codelab leading you step-by-step through this exercise is provided in addition to the video which you can use for guidance.
All migration modules, their videos (when published), codelab tutorials, START and FINISH code, etc., can be found in the migration repo. We hope to also one day cover other legacy runtimes like Java 8 so stay tuned. We'll continue with our journey from App Engine to Cloud Run ahead in Module 5 but will do so without explicit knowledge of containers, Docker, or Dockerfiles. Modernizing your development workflow to using containers and best practices like crafting a CI/CD pipeline isn't always straightforward; we hope content like this helps you progress in that direction!
Posted by Mike Bifulco, Developer Relations Engineer
Every day, millions of users ask Google Assistant for help with the things that matter to them: managing a connected home, setting reminders and timers, adding to their shopping list, communicating with friends and family, and countless other imaginative uses. Developers use Assistant APIs and tools to add voice interactivity to their apps for everything from building games, to ordering food, to listening to the news, and much more.
The Google Assistant Developer Relations team works with our community and our engineering teams to help developers build, integrate, and innovate with voice-driven technology on the Assistant platform. We help developers build Conversational Actions, Smart Home hardware and tools, and App Actions integrations with Android. As we continue our mission to bring accessible voice technology to Android devices, smart speakers and screens, we’re excited to announce that we are hiring for several roles!
What Assistant DevRel does
In Developer Relations (DevRel), we wear many hats - our developer ecosystem stretches across several Google products, and work with our community wherever we can. Our team consists of engineers, technical writers, and content producers who work to help developers build with Assistant, while providing active feedback and validation to the engineering teams to make Google Assistant even better. These are just some of the ways we do our work:
Google I/O and other conferences
Google I/O is Google’s annual developer conference, where Googlers from across the company share the latest product releases, insights from Google experts, as well as hands-on learning. The Assistant DevRel team is heavily involved in I/O, writing, producing, and delivering a variety of content types, including: keynotes, technical talks, hands-on workshops, codelabs, and technical demos. We also meet and talk to developers who are building cool things with Assistant.
We also participate in a variety of other conferences, and while most have been virtual for the past year or so, we’re looking forward to traveling to places near and far to deliver technical content to the global community.
One of the best ways to get our content out to the world is via YouTube. Members of our team make frequent appearances on the Google Developers channel, producing segments and episodes for The Developer Show, Assistant On Air, AoG Pro Tips, as well as tutorials on new features and developer tools.
Open Source Projects
Another exciting part of our work is the creation and maintenance of Open Source libraries used as samples, demos, and starter kits for devs working with Assistant. As a part of the team, you’ll contribute to projects in GitHub organizations including github.com/actions-on-google and github.com/actions-on-google-labs, as well as projects and libraries created outside of Google.
Developer Platform Tools
The Assistant DevRel team also helps build and maintain the Assistant Developer Platform - we contribute to the tools, policies and features which allow developers to distribute their Assistant apps to Android devices, smart screens and speakers. This engineering work is a truly unique opportunity to shape the future of a growing developer platform, and to support the future of voice-driven and multi-modal technology – all built from the ground up.
Open positions on our team
Our team is headquartered in Mountain View, California, US. If contributing to the next generation of Google Assistant excites you, read below about our openings to find out more.
Developer Relations Engineer Location: Mountain View, CA, New York, NY, Seattle, WA, or Austin, TX
As a Developer Relations Engineer (or DRE), you’ll work to build developer tools, code samples, and demos for Google Assistant. You’ll work with our community to educate and support developers using our APIs to build their software. You will also be the 0th customer for new features on Assistant - testing, verifying, and giving active feedback to the PM, UX, and Engineering teams that make Assistant come to life. You’ll work with Google Developer Experts to build and scale content to be shared at conferences, events, and hackathons. DREs may also occasionally contribute to blog posts, help write and produce scripts for educational videos on YouTube, and speak at events like conferences, Google Developer Groups, and meetups. Candidates should have experience building native Android apps with Java or Kotlin - experience creating web applications with HTML, JavaScript, and CSS is a plus.
Location: Mountain View, CA, New York, NY, Seattle, WA, or Austin, TX
Developer Relations Engineering Managers help coordinate and direct teams of engineers to build and update developer tools, APIs, reference documentation, and code samples. As an Engineering Manager, you’ll work with leadership across the company to prioritize new features, goals, and programs for developer relations within Assistant. You’ll manage a variety of roles, including Developer Relations Engineers, Program Managers, and Technical Writers. You’ll be asked to work across a variety of technologies, with a strong focus on building tools and libraries for Android.
Thanks for reading! To share your thoughts or questions, join us on Reddit at r/GoogleAssistantDev.
Follow @ActionsOnGoogle on Twitter for more of our team's updates, and tweet using #AoGDevs to share what you’re working on. Can’t wait to see what you build!
Posted by Erica Hanson, Global Program Manager, Google Developer Student Clubs
What have we learned from the challenges that we’ve faced over the past year and continue to face today? How absolutely vital it is to protect our planet and the people living on it.
Enter the Solution Challenge, our annual contest inviting the global Google Developer Student Clubs (GDSC) community to develop solutions to real world problems utilizing Google technologies. This year’s Solution Challenge asks participants to solve for one or more of the United Nations 17 Sustainable Development Goals, intended to promote employment for all, economic growth, and climate action.
The top 50 semi-finalists and the top 10 finalists were announced earlier this year. It all comes down to Demo Day on August 26th, where the finalists will present their solutions to Google and developers all around the world, live on YouTube. Here, judges will review their projects, ask questions, and choose the top 3 grand prize winners!
You can RSVP here to be a part of Demo Day, vote for the People’s Choice Award, and watch all the action as it unfolds live. Ahead of the event, get to know the top 10 finalists and their incredible solutions below.
Cameroon - Flow, University of Bamenda
UN Sustainable Goal Addressed: Goal 6: Clean Water & Sanitation
Flow is a mobile app that helps users easily find clean water sources nearby using Google Maps. Selecting a water source location on the map will tell users the name of the location, the status of the water source, and the approximate distance to the water source from the user’s current location. Flow was built with Firebase, Flutter, Google Cloud Platform, and Google Maps Platform. The app was developed by Alouzeh Brandone Mahbuh, Chi Karl Junior, Meh Mbeh Ida Delphine, and Nuikweh Lewis.
“The lack of water and quest for clean water in my community inspired us to select this goal. Our solution is a mobile application which makes use of a ‘live location’ feature to help members in my community easily find clean water sources.”
Canada - Helppier, University of Toronto
UN Sustainable Goals Addressed:Goal 3: Good Health & Wellbeing, Goal 10: Reduced Inequalities, Goal 11: Sustainable Cities
Helppier is an Android app that creates volunteering opportunities in local neighborhoods. With Helppier, you can volunteer to help out others, request a volunteer, and earn rewards. Unlike traditional volunteering positions with organizations, Helppier fosters a sense of community by allowing people to make a direct impact in their neighborhood. Helppier's ultimate goal is to make volunteering a regular part of peoples’ daily routines. The Android app was developed using Google Cloud Platform, Firebase, and Cloud Run by James Lee, Janice Cheung, Mohamed Amine Belabbes, and Oluwateleayo Oyekunle.
“With loneliness rates skyrocketing due to COVID, many people are feeling more isolated and in need of help, but may not have anyone in their neighborhood to turn to. Helppier facilitates the opportunity for people to connect with one another through acts of kindness, regardless of who they are or where they came from.”
Egypt - E-Owl, Future Academy
UN Sustainable Goals Addressed:Goal 3: Good Health & Wellbeing, Goal 4: Quality Education
E-Owl is a virtual education platform that helps professors create virtual meetings, exams, and posts. With E-Owl, students can also check their grades and assignments online. The web application features focus detection and monitors real-time emotion of students to help instructors improve their students’ learning experience. E-Owl was created using Firebase, Google Cloud Platform, and TensorFlow by Ahmed Mostafa Ibrahiem, Kerolos Kamal Botros, Khaled Abdel-Fattah Ahmed, and Mahmoud Said Ramadan Gad.
“Our main target is education and well-being. We are working on how to maintain learners' attention and motivation in the virtual classrooms and also effectively managing the progress of each student online.”
Germany - SimplAR, Technical University of Munich
UN Sustainable Goals Addressed:Goal 4: Quality Education, Goal 8: Decent Work & Economic Growth, Goal 10: Reduced Inequalities
SimplAR is an app that utilizes the power of Natural Language Processing to translate any text (newspapers, books, manuals, etc.) into simplified language just by taking a picture of it. The app is catered towards people with functional illiteracy who sometimes have difficulty comprehending text. SimplAR delivers text following plain language principles that is easy to understand, making reading experiences more accessible for everyone. Almo Sutedjo, Maria Pospelova, Sami Wirtensohn, and Viviana Sutedjo used Flutter and Firebase to develop their app.
“Around 1 in 7 people worldwide have difficulties understanding complicated texts due to functional illiteracy. We want to enable people with functional illiteracy to gain understanding about any text in any form, and therefore giving them the chance to lead a more independent life.”
India - Eye Of God, K. J. Somaiya College of Engineering
Eye of God is an app featuring an easy-to-use navigation system that helps people with visual impairment navigate to their destination by themselves without needing the assistance of others. The Eye of God navigation system uses voice feedback through the user’s smartphone which is mounted on a VR Headset, and vibrational feedback through a custom-made waist belt, to guide users in both indoor and outdoor settings. The app is built with Firebase, Flutter, Google Cloud Platform, TensorFlow, and more, by Anish Pawar, Gayatri Vijay Patil, Jatin Nainani, and Priyanka Hotchandani.
“Being blind or visually impaired doesn’t need to mean the loss of independence of getting to and from places. The advancement of technology can make it possible to help people move freely within their environments and get around safely regardless of their amount of vision.”
India - Swaasthy, Chitkara University
UN Sustainable Goals Addressed: Goal 3: Good Health & Wellbeing, Goal 4: Quality Education, Goal 8: Decent Work & Economic Growth
Swaasthy is a medical app made to uplift user health and increase access to healthcare. It contains medicine reminder functionality and the ability to make an SOS call to nearby ambulances, get an appointment with a virtual doc, and more. The team behind the app believes that their all-in-one approach will go a long way towards bringing down the death rate faced by patients in India due to delays in health services. Additionally, Swaasthy promotes education and economic growth by providing first responders with valuable training opportunities when they sign up via the app. Bhavesh Goyal, Himanshu Sharma, Ishan Sharma, and Kushal Bhanot used Flutter and Firebase to bring their idea to life.
“When it comes to saving a life, every millisecond counts! One in 10 patients in India dies on the way to the hospital. And we're here to change that. We're Swaasthy! The only health app you'll ever need. Solving real-life problems isn’t easy, but at the same time, it's not impossible.”
Indonesia - Game Your Fit, Binus University International
UN Sustainable Goal Addressed:Goal 3: Good Health & Wellbeing
Game Your Fit is an app that keeps track of your movements in real time using your smartphone's movement sensors. It promotes exercise and staying active by turning the experience into a game! The app features a variety of aerobic, anaerobic, and calisthenics exercises to target different areas of the user’s body. One of the app’s game modes, CardioCamera, uses Google’s MLKit AI library to detect movements that the user makes. The app is written in Kotlin and connected to a Firebase project, and was developed by Aric Hernando, Jason Christian Hailianto, Jason Jeremy Wijadi, and Monique Senjaya.
“We are interested in creating a solution for target 3.4, which is to reduce mortality from non-communicable diseases and promote mental health. We aim to improve the health of many, specifically teens and young adults, by designing a gamified exercising application experience.”
Philippines - i-RISE, University of the Philippines in the Visayas
Project Island Response and Intervention for Systematic Evacuation, or i-RISE, is a disaster risk management system that aims to bridge the information gap between local government units, disaster risk management offices, and the island communities of Tubigon, Bohol. The app includes tidal and weather information, evacuation warnings, rescue request functionality, climate change education, and more. i-Rise consists of a web app and mobile app, built with Flutter, Cloud Functions, Cloud Firestore, and Firebase. The project was built by Jian Hurl A. Asiado, Joerian E. Gauten, Patricia Marie C. Garcia, and Rex Ronter G. Ruiz.
“The Philippines is one of the world's most affected countries by climate change as it experiences the most frequent and strongest typhoons and sea level rise. The vision of Project i-RISE is disaster resilience as a national imperative where all Filipinos anywhere in the archipelago are inclusive of growth and are able to adapt to the adverse effects of climate change.”
Singapore - DementiCare, Nanyang Technological University
UN Sustainable Goal Addressed:Goal 3: Good Health & Wellbeing
DementiCare is an app equipped with a wide range of features to compliment caregiving for people living with dementia. With the app, caregivers can send notices to patients, access discussion forums, create a patient dashboard, and more. A user with dementia can send an SOS, access memories, view family data, and read notes from caregivers. DementiCare includes a simple interface for users living with dementia, and a feature-rich dashboard to help caregivers carry out their responsibilities without relying on any additional software. Aishik Nagar and Ritik Bhatia used Flutter and Firebase to build their app.
“Having personal relations suffering from Dementia and having cared for them several times, we knew firsthand how tough it was for patients and their caregivers to cope with Dementia. Our solution is DementiCare, a mobile application made to reduce, digitize, and revolutionize the barrier to skills, knowledge, and experience required for providing care to patients suffering from Dementia.”
Turkey - QRegister, Middle East Technical University
UN Sustainable Goals Addressed:Goal 3: Good Health & Wellbeing, Goal 12: Responsible Consumption & Production, Goal 15: Life on Land
QRegister is an app that removes the need for physical paper receipts upon transactions and instead encourages the use of QR codes for users to virtually keep track of all their receipts. The app reduces waste generation by eliminating paper receipts that usually end up as litter. BPA, a chemical often used in thermal receipts, can be absorbed through the skin and has been linked to a number of health concerns. By digitizing receipts, QRegister reduces the chemicals that we’re exposed to daily. QRegister was created with Firebase and Flutter by Alkım Dömeke, Deniz Karakay, Humeyra Bodur, and Murat Kaş.
“QRegister wants to raise awareness regarding the wastefulness of paper receipt production. Our team developed an environmentally friendly smart register that eliminates paper receipts and effortlessly stores purchase data.”
________________________
Feeling inspired and ready to learn more about Google Developer Student Clubs? Find a club near you here, and be sure to RSVP here to watch our upcoming Solution Challenge Demo Day on August 26th.
Posted by Erica Hanson, Global Program Manager, Google Developer Student Clubs
What have we learned from the challenges that we’ve faced over the past year and continue to face today? How absolutely vital it is to protect our planet and the people living on it.
Enter the Solution Challenge, our annual contest inviting the global Google Developer Student Clubs (GDSC) community to develop solutions to real world problems utilizing Google technologies. This year’s Solution Challenge asks participants to solve for one or more of the United Nations 17 Sustainable Development Goals, intended to promote employment for all, economic growth, and climate action.
The top 50 semi-finalists and the top 10 finalists were announced earlier this year. It all comes down to Demo Day on August 26th, where the finalists will present their solutions to Google and developers all around the world, live on YouTube. Here, judges will review their projects, ask questions, and choose the top 3 grand prize winners!
You can RSVP here to be a part of Demo Day, vote for the People’s Choice Award, and watch all the action as it unfolds live. Ahead of the event, get to know the top 10 finalists and their incredible solutions below.
Cameroon - Flow, University of Bamenda
UN Sustainable Goal Addressed: Goal 6: Clean Water & Sanitation
Flow is a mobile app that helps users easily find clean water sources nearby using Google Maps. Selecting a water source location on the map will tell users the name of the location, the status of the water source, and the approximate distance to the water source from the user’s current location. Flow was built with Firebase, Flutter, Google Cloud Platform, and Google Maps Platform. The app was developed by Alouzeh Brandone Mahbuh, Chi Karl Junior, Meh Mbeh Ida Delphine, and Nuikweh Lewis.
“The lack of water and quest for clean water in my community inspired us to select this goal. Our solution is a mobile application which makes use of a ‘live location’ feature to help members in my community easily find clean water sources.”
Canada - Helppier, University of Toronto
UN Sustainable Goals Addressed:Goal 3: Good Health & Wellbeing, Goal 10: Reduced Inequalities, Goal 11: Sustainable Cities
Helppier is an Android app that creates volunteering opportunities in local neighborhoods. With Helppier, you can volunteer to help out others, request a volunteer, and earn rewards. Unlike traditional volunteering positions with organizations, Helppier fosters a sense of community by allowing people to make a direct impact in their neighborhood. Helppier's ultimate goal is to make volunteering a regular part of peoples’ daily routines. The Android app was developed using Google Cloud Platform, Firebase, and Cloud Run by James Lee, Janice Cheung, Mohamed Amine Belabbes, and Oluwateleayo Oyekunle.
“With loneliness rates skyrocketing due to COVID, many people are feeling more isolated and in need of help, but may not have anyone in their neighborhood to turn to. Helppier facilitates the opportunity for people to connect with one another through acts of kindness, regardless of who they are or where they came from.”
Egypt - E-Owl, Future Academy
UN Sustainable Goals Addressed:Goal 3: Good Health & Wellbeing, Goal 4: Quality Education
E-Owl is a virtual education platform that helps professors create virtual meetings, exams, and posts. With E-Owl, students can also check their grades and assignments online. The web application features focus detection and monitors real-time emotion of students to help instructors improve their students’ learning experience. E-Owl was created using Firebase, Google Cloud Platform, and TensorFlow by Ahmed Mostafa Ibrahiem, Kerolos Kamal Botros, Khaled Abdel-Fattah Ahmed, and Mahmoud Said Ramadan Gad.
“Our main target is education and well-being. We are working on how to maintain learners' attention and motivation in the virtual classrooms and also effectively managing the progress of each student online.”
Germany - SimplAR, Technical University of Munich
UN Sustainable Goals Addressed:Goal 4: Quality Education, Goal 8: Decent Work & Economic Growth, Goal 10: Reduced Inequalities
SimplAR is an app that utilizes the power of Natural Language Processing to translate any text (newspapers, books, manuals, etc.) into simplified language just by taking a picture of it. The app is catered towards people with functional illiteracy who sometimes have difficulty comprehending text. SimplAR delivers text following plain language principles that is easy to understand, making reading experiences more accessible for everyone. Almo Sutedjo, Maria Pospelova, Sami Wirtensohn, and Viviana Sutedjo used Flutter and Firebase to develop their app.
“Around 1 in 7 people worldwide have difficulties understanding complicated texts due to functional illiteracy. We want to enable people with functional illiteracy to gain understanding about any text in any form, and therefore giving them the chance to lead a more independent life.”
India - Eye Of God, K. J. Somaiya College of Engineering
Eye of God is an app featuring an easy-to-use navigation system that helps people with visual impairment navigate to their destination by themselves without needing the assistance of others. The Eye of God navigation system uses voice feedback through the user’s smartphone which is mounted on a VR Headset, and vibrational feedback through a custom-made waist belt, to guide users in both indoor and outdoor settings. The app is built with Firebase, Flutter, Google Cloud Platform, TensorFlow, and more, by Anish Pawar, Gayatri Vijay Patil, Jatin Nainani, and Priyanka Hotchandani.
“Being blind or visually impaired doesn’t need to mean the loss of independence of getting to and from places. The advancement of technology can make it possible to help people move freely within their environments and get around safely regardless of their amount of vision.”
India - Swaasthy, Chitkara University
UN Sustainable Goals Addressed: Goal 3: Good Health & Wellbeing, Goal 4: Quality Education, Goal 8: Decent Work & Economic Growth
Swaasthy is a medical app made to uplift user health and increase access to healthcare. It contains medicine reminder functionality and the ability to make an SOS call to nearby ambulances, get an appointment with a virtual doc, and more. The team behind the app believes that their all-in-one approach will go a long way towards bringing down the death rate faced by patients in India due to delays in health services. Additionally, Swaasthy promotes education and economic growth by providing first responders with valuable training opportunities when they sign up via the app. Bhavesh Goyal, Himanshu Sharma, Ishan Sharma, and Kushal Bhanot used Flutter and Firebase to bring their idea to life.
“When it comes to saving a life, every millisecond counts! One in 10 patients in India dies on the way to the hospital. And we're here to change that. We're Swaasthy! The only health app you'll ever need. Solving real-life problems isn’t easy, but at the same time, it's not impossible.”
Indonesia - Game Your Fit, Binus University International
UN Sustainable Goal Addressed:Goal 3: Good Health & Wellbeing
Game Your Fit is an app that keeps track of your movements in real time using your smartphone's movement sensors. It promotes exercise and staying active by turning the experience into a game! The app features a variety of aerobic, anaerobic, and calisthenics exercises to target different areas of the user’s body. One of the app’s game modes, CardioCamera, uses Google’s MLKit AI library to detect movements that the user makes. The app is written in Kotlin and connected to a Firebase project, and was developed by Aric Hernando, Jason Christian Hailianto, Jason Jeremy Wijadi, and Monique Senjaya.
“We are interested in creating a solution for target 3.4, which is to reduce mortality from non-communicable diseases and promote mental health. We aim to improve the health of many, specifically teens and young adults, by designing a gamified exercising application experience.”
Philippines - i-RISE, University of the Philippines in the Visayas
Project Island Response and Intervention for Systematic Evacuation, or i-RISE, is a disaster risk management system that aims to bridge the information gap between local government units, disaster risk management offices, and the island communities of Tubigon, Bohol. The app includes tidal and weather information, evacuation warnings, rescue request functionality, climate change education, and more. i-Rise consists of a web app and mobile app, built with Flutter, Cloud Functions, Cloud Firestore, and Firebase. The project was built by Jian Hurl A. Asiado, Joerian E. Gauten, Patricia Marie C. Garcia, and Rex Ronter G. Ruiz.
“The Philippines is one of the world's most affected countries by climate change as it experiences the most frequent and strongest typhoons and sea level rise. The vision of Project i-RISE is disaster resilience as a national imperative where all Filipinos anywhere in the archipelago are inclusive of growth and are able to adapt to the adverse effects of climate change.”
Singapore - DementiCare, Nanyang Technological University
UN Sustainable Goal Addressed:Goal 3: Good Health & Wellbeing
DementiCare is an app equipped with a wide range of features to compliment caregiving for people living with dementia. With the app, caregivers can send notices to patients, access discussion forums, create a patient dashboard, and more. A user with dementia can send an SOS, access memories, view family data, and read notes from caregivers. DementiCare includes a simple interface for users living with dementia, and a feature-rich dashboard to help caregivers carry out their responsibilities without relying on any additional software. Aishik Nagar and Ritik Bhatia used Flutter and Firebase to build their app.
“Having personal relations suffering from Dementia and having cared for them several times, we knew firsthand how tough it was for patients and their caregivers to cope with Dementia. Our solution is DementiCare, a mobile application made to reduce, digitize, and revolutionize the barrier to skills, knowledge, and experience required for providing care to patients suffering from Dementia.”
Turkey - QRegister, Middle East Technical University
UN Sustainable Goals Addressed:Goal 3: Good Health & Wellbeing, Goal 12: Responsible Consumption & Production, Goal 15: Life on Land
QRegister is an app that removes the need for physical paper receipts upon transactions and instead encourages the use of QR codes for users to virtually keep track of all their receipts. The app reduces waste generation by eliminating paper receipts that usually end up as litter. BPA, a chemical often used in thermal receipts, can be absorbed through the skin and has been linked to a number of health concerns. By digitizing receipts, QRegister reduces the chemicals that we’re exposed to daily. QRegister was created with Firebase and Flutter by Alkım Dömeke, Deniz Karakay, Humeyra Bodur, and Murat Kaş.
“QRegister wants to raise awareness regarding the wastefulness of paper receipt production. Our team developed an environmentally friendly smart register that eliminates paper receipts and effortlessly stores purchase data.”
________________________
Feeling inspired and ready to learn more about Google Developer Student Clubs? Find a club near you here, and be sure to RSVP here to watch our upcoming Solution Challenge Demo Day on August 26th.