Category Archives: Google Developers Blog

News and insights on Google platforms, tools and events

Google People API now supports batch mutates and searches of Contacts

Posted by Ting Huang, Software Engineer

Some time ago, we announced that the Google Contacts API was being deprecated in favor of the People API, and it is scheduled for sunset on June 15, 2021. To aid in the process of migrating from Contacts API, we are pleased to announce that we have added two sets of new endpoints for working with contacts via the People API.

First, we now have new write endpoints that allow developers to create, delete, and update multiple contacts at once. In addition, we also have new read endpoints that allow developers to search a user’s contacts using a prefix query. Both will greatly improve working with the People API, so let’s take a quick look at how you can leverage these new endpoints today.

Getting Started with the People API

Applications need to be authorized to access the API, so to get started you will need to create a project on the Google Developers Console with the People API enabled to get access to the service. If you are new to the Google APIs, you can follow the steps here to begin accessing People API.

Google profile image

Working with Batch Mutate Endpoints

Once you’re authorized, you can simply create new contacts like this (using the Google APIs Client Library for Java):

Person person = new Person();
person.setNames(ImmutableList.of(new
Name().setGivenName("John").setFamilyName("Doe")));
ContactToCreate contactToCreate = new ContactToCreate();
contactToCreate.setContactPerson(person);

BatchCreateContactsRequest request = new BatchCreateContactsRequest();
request.setContacts(ImmutableList.of(contactToCreate)).setReadMask("names");

BatchCreateContactsResponse response =
peopleService.people().batchCreateContacts(request).execute();

The scope your app needs to authorize with is https://www.googleapis.com/auth/contacts. Full documentation on the people.batchCreateContacts method is available here.

Similarly, you can update existing contacts like this:

String resourceName = "people/c12345"; // existing contact resource name
Person contactToUpdate =
peopleService
.people()
.get(resourceName)
.setPersonFields("names,emailAddresses")
.execute();
contactToUpdate.setNames(
ImmutableList.of(new Name().setGivenName("John").setFamilyName("Doe")));

BatchUpdateContactsRequest request = new BatchUpdateContactsRequest();
ImmutableMap<String, Person> map =
ImmutableMap.of(contactToUpdate.getResourceName(), contactToUpdate);
request.setContacts(map).setUpdateMask("names")
.setReadMask("names,emailAddresses");

BatchUpdateContactsResponse response =
peopleService.people().batchUpdateContacts(request).execute();

Full documentation on the people.batchUpdateContacts method is available here.

Working with Search Endpoints

You can search through the authenticated user’s contacts like this:

SearchResponse response = peopleService.people().searchContacts()
.setQuery("query")
.setReadMask("names,emailAddresses")
.execute();

The scope your app needs to authorize with is https://www.googleapis.com/auth/contacts or https://www.googleapis.com/auth/contacts.readonly. Full documentation on the people.searchContacts method is available here.

You can also search through the authenticated user’s “other contacts” like this:

SearchResponse response = peopleService.otherContacts().search()
.setQuery("query")
.setReadMask("names,emailAddresses")
.execute();

The scope your app needs to authorize with is https://www.googleapis.com/auth/contacts.other.readonly. Full documentation on the otherContacts.search method is available here.

Next Steps

We hope that these newly added features inspire you to create the next generation of cool web and mobile apps that delight your users and those in their circles of influence. To learn more about the People API, check out the official documentation here.

Google People API now supports batch mutates and searches of Contacts

Posted by Ting Huang, Software Engineer

Some time ago, we announced that the Google Contacts API was being deprecated in favor of the People API, and it is scheduled for sunset on June 15, 2021. To aid in the process of migrating from Contacts API, we are pleased to announce that we have added two sets of new endpoints for working with contacts via the People API.

First, we now have new write endpoints that allow developers to create, delete, and update multiple contacts at once. In addition, we also have new read endpoints that allow developers to search a user’s contacts using a prefix query. Both will greatly improve working with the People API, so let’s take a quick look at how you can leverage these new endpoints today.

Getting Started with the People API

Applications need to be authorized to access the API, so to get started you will need to create a project on the Google Developers Console with the People API enabled to get access to the service. If you are new to the Google APIs, you can follow the steps here to begin accessing People API.

Google profile image

Working with Batch Mutate Endpoints

Once you’re authorized, you can simply create new contacts like this (using the Google APIs Client Library for Java):

Person person = new Person();
person.setNames(ImmutableList.of(new
Name().setGivenName("John").setFamilyName("Doe")));
ContactToCreate contactToCreate = new ContactToCreate();
contactToCreate.setContactPerson(person);

BatchCreateContactsRequest request = new BatchCreateContactsRequest();
request.setContacts(ImmutableList.of(contactToCreate)).setReadMask("names");

BatchCreateContactsResponse response =
peopleService.people().batchCreateContacts(request).execute();

The scope your app needs to authorize with is https://www.googleapis.com/auth/contacts. Full documentation on the people.batchCreateContacts method is available here.

Similarly, you can update existing contacts like this:

String resourceName = "people/c12345"; // existing contact resource name
Person contactToUpdate =
peopleService
.people()
.get(resourceName)
.setPersonFields("names,emailAddresses")
.execute();
contactToUpdate.setNames(
ImmutableList.of(new Name().setGivenName("John").setFamilyName("Doe")));

BatchUpdateContactsRequest request = new BatchUpdateContactsRequest();
ImmutableMap<String, Person> map =
ImmutableMap.of(contactToUpdate.getResourceName(), contactToUpdate);
request.setContacts(map).setUpdateMask("names")
.setReadMask("names,emailAddresses");

BatchUpdateContactsResponse response =
peopleService.people().batchUpdateContacts(request).execute();

Full documentation on the people.batchUpdateContacts method is available here.

Working with Search Endpoints

You can search through the authenticated user’s contacts like this:

SearchResponse response = peopleService.people().searchContacts()
.setQuery("query")
.setReadMask("names,emailAddresses")
.execute();

The scope your app needs to authorize with is https://www.googleapis.com/auth/contacts or https://www.googleapis.com/auth/contacts.readonly. Full documentation on the people.searchContacts method is available here.

You can also search through the authenticated user’s “other contacts” like this:

SearchResponse response = peopleService.otherContacts().search()
.setQuery("query")
.setReadMask("names,emailAddresses")
.execute();

The scope your app needs to authorize with is https://www.googleapis.com/auth/contacts.other.readonly. Full documentation on the otherContacts.search method is available here.

Next Steps

We hope that these newly added features inspire you to create the next generation of cool web and mobile apps that delight your users and those in their circles of influence. To learn more about the People API, check out the official documentation here.

How online payments work with Steve Klebe

Posted by Jose Ugia and Steve Klebe

intro to online payments

Steve Klebe forms partnerships that drive adoption of Google Pay. He's spent the last 9 years working for the Google Payments Business Development team, and possesses more than 40 years of experience with products and services related to payment processing, data security, and authentication.

Recently, Steve sat down for an interview with Jose Ugia, a Developer Relations Engineer on the Google Pay team.

Read the interview transcript for a deep overview of online payments.

Jose Ugia: Let’s get started with the basics. What is the typical sequence of events in processing an online credit-card payment?

Steve Klebe: This can happen in a few different ways, but let’s talk about the typical series of events:

  1. A consumer visits the merchant's website or application, and they need to pay for the items that they want to purchase.
  2. The merchant then presents an order form to the consumer with a variety of payment options, including Google Pay. The consumer presses the Google Pay button, and the information that's associated with the card that the consumer chooses to pay with is securely sent to the merchant.
  3. The merchant calls the payment processor. The processor receives the request from the merchant and uses a shared key to decrypt the information in it in the payment service provider’s secure environment.
  4. The payment processor interacts with the network that’s associated with that particular card, such as Visa, Mastercard, American Express, or Discover. Although, there are variations of networks around the world.
  5. The network consults the issuing bank, and the issuing bank checks the account to verify that it’s active and valid. If there are funds available to cover the transaction, then the transaction is approved.

The approval triggers a response chain. The network responds to the payment processor, the payment processor responds to the merchant, and the merchant responds to the consumer with something like, “Your payment has been accepted!”

This sequence of events happens in approximately 2 seconds, during which the transaction passes through multiple different systems in order to deliver a response to the consumer.

Jose Ugia: Most developers and businesses don’t think about these steps. When you think about chargebacks and fraud, this information is especially useful.

The next question is related to a concept that goes by many names in the industry. It's what we call a PSP or payment service provider, but others refer to it as a payment processor, payment provider, or payment gateway. What is this concept and why are there so many different terms for it?

Steve Klebe: Things evolve and sometimes different entities in the ecosystem create their own terms to differentiate themselves. It’s a big challenge in the payments industry; there are many terms for the same concepts.

The term PSP has an official meaning in the ecosystem, and it can represent companies that take on different roles in the payment sequence, which I outlined in the first question. However, we kept things simple for our merchant and developer partners. PSP defines the initial link between the merchant and the network, regardless of their roles. The role of the PSP is to make sure the merchant is legitimate and categorize the merchant as a retail store, restaurant, or something else.

The PSP is the entity through which the money flows, from the card issuer through the networks to the PSP. They provide consolidated reporting to the merchant and—most people don’t realize this—they also often hold the financial responsibility. If the merchant is fraudulent or goes out of business and there are lingering transactions, the PSP assumes financial responsibility for the merchants.

Jose: So, if I’m planning to accept payments online, do I need a PSP?

Steve Klebe: Yes, you absolutely need to have a PSP, but it doesn't matter to you as a merchant if the PSP is an official processor or a licensed agent of a processor.

Jose: Are there specific considerations that I have to account for as a merchant or developer when I choose a PSP to process credit-card payments?

Steve Klebe: Sometimes it’s tied to the shopping cart of your e-commerce platform, most of which embed one or more PSPs into their systems. Sometimes, the decision has been made for you. Other times, you have flexibility to choose whatever you want. Different PSPs have different expertise in different types of payments. For example, if you’re a merchant who focuses on a subscription model, there are certain PSPs who handle these types of payments better than others. If you’re going to sell globally, you need to pick a PSP with the maximum ability to support alternative payment methods from other countries. If you’re a restaurant and you need to do in-store and online payment processing, not all PSPs are equal in their ability to support different types of channels.

So, do some research, talk to peers in your industry to find out who they use and whether they’re satisfied, and make an intelligent choice. It can have fairly significant consequences if you need to do online ordering, but you picked a PSP who is competent at in-store purchases and doesn’t take e-commerce seriously.

Jose: Are you suggesting that I might need to integrate multiple PSPs to cover different scenarios?

Steve: Yes. Using multiple PSPs is not unusual. If you need to cover different scenarios, such as subscription payments, in-person payments, or online payments then this can be very common. If you need to change your PSP, it can affect you later. Your PSP choice becomes intertwined with your back-office operations and fulfillment. It’s not just an API; it becomes integrated into all aspects of the business supply chain, including customer servicing, revenue recognition, etc. and switching isn't easy.

Jose: I’ve seen some PSPs offering something called “hosted checkout”. How does that differ from a regular integration in my website or application?

Steve Klebe: There are typically two approaches: you integrate your PSP's API and you as the merchant typically control the checkout process directly with the consumer. In the case of Google Pay, you can add the Google Pay button to your checkout pages. That's typically used by medium-to-large merchants, while smaller merchants tend to gravitate towards this concept called a hosted order page, which has some limitations because the checkout occurs on a page that the PSP hosts and different PSPs have different hosted-order-page capabilities.

If you’re an API merchant, for your non-Google Pay transactions you have a responsibility to protect the card information of your customers. With a hosted order page, all the sensitive information is being hosted on a page from the PSP. The penalties for having card information stolen from your servers are very severe, so hosted order pages are popular, flexible, and customizable.

In Europe, hosted checkouts are popular because commerce is complicated with more than 20 countries, different currencies, and payment methods. A US merchant could survive with a much simpler array of payment options if the merchant plans to only sell within US borders.

We work with most major PSPs globally and have them implement Google Pay as a default option for hosted checkouts. Usually, this is enabled by default but the PSP gives the merchant a choice to opt out.

Jose: What are e-wallets, digital wallets, and other payment facilitators, and how do they differ from a PSP.

Steve Klebe: There are a lot of acronyms, and they can start blending together and sounding the same to someone new to the space. The metaphor for a digital wallet was originally developed to represent that whatever is in your physical wallet would ultimately be in your digital wallet. While PSPs facilitate online transactions, digital wallets are a form of payment. There are many benefits to offering a digital wallet like Google Pay. One of the most obvious being the ability for customers to checkout quickly, without needing to re-enter credit card and billing information for every single transaction .

In the case of Google Pay, you can store loyalty cards, boarding passes, payment cards, and receipts in your digital wallet and use it to transact in physical stores, online websites and applications alike. The metaphor has played out, but there are a lot of differences within the broad category of alternative payment methods and digital wallets.

Those differences are evolving. Today, we have Google Pay, Apple Pay, PayPal, Samsung Pay, WeChatPay, Alipay and others. In some cases, the app or the account is only a container for credentials. In other cases, it's the account of record for your money. For example, in Asia, you see the popularity of Alipay and WeChat Pay, which are actually like bank accounts. In India, the Google Pay for India app connects directly to the consumer’s bank account, and initiates the movement of money to the merchant’s bank account.

Jose: What is a tokenized card and how does it affect online transactions?

Steve Klebe: The word tokenization is a loaded word in our industry and it creates a bunch of confusion. Tokenization and encryption (which are sometimes confused) came about because of the growing popularity of cards, and the growing use and misuse of cards by people with good and bad intentions.

The concept of exchanging a card number with a token is applied by various parties at different stages of an online transaction:

Tokenization, at the network level, came about after the industry established a standard for protecting card data that’s now referred to as PCI, which is an industry consortium funded by the major card brands that established a single standard for security.

Similarly, to assist merchants with complying with PCI, most PSPs came up with a proprietary scheme to take the card number from the merchant and give the merchant a token or reference number. The PSP, within its secure environment, would hold the card and the merchant wouldn’t need to handle it anymore. This became a dominant approach after PCI took effect.

In addition, there are two types of tokens that are used at the network level:

Device-based tokens or DPAN

When you want to use an existing card on your phone as a payment method, the call gets made to the associated network, which then calls the bank that issued the card. A call then comes back to authenticate the consumer and the most common step is the consumer is asked to enter a one time passcode they received through text. After the bank confirms your identity, it sends a signal to the network and approves your card for digital payments. The network then takes the account number, converts it to a token, and returns it to your wallet provider who securely stores it on the phone.

E-commerce tokens

This is a brand new concept where a product like Google Pay, which helps to securely store millions of cards in its cloud, delivers them to the network for conversion to a token. The network validates the status of the card with the issuing bank, turns them into e-commerce tokens, and returns the tokens to Google. Now, when you shop on any device, Google can use one of these e-commerce tokens because the network and issuer authenticated them. Even if the underlying card changes completely or the expiration date gets updated, this all happens behind the scenes. This is not only convenient for customers, but it also helps protect their card and transaction information by keeping the actual credit card number unexposed and including a dynamic element that is different for every transaction.

Jose: What is the future of payments going to bring? What are you most excited about?

Steve Klebe: I would say, due to the changes our world is going through, we are rethinking how payments are changing. It’s hard to know what the ultimate impact will be, but it's been about mobile optimization during the last couple years. Every merchant and PSP realizes that they have to enhance their digital offerings, but it’s not going to be any one individual thing. I think it’s the entire holistic experience, whether it’s web, mobile, or in-store. All of a sudden, every merchant realizes that they need to be prepared to do payments contactlessly. Even if the consumer is standing in front of you, you have to be prepared to handle the payment without contact.

There is a clear divide between card present and card not present, and those areas are now blending together. The card industry doesn’t care whether the person is in front of you. If a payment is made digitally, there are alternative rules that apply to the merchant. Merchants need to be extremely cognizant of these rules and they need to do everything they can to optimize how they accept payments.

An exception would be where you can start shopping with a merchant on your desktop and complete transactions elsewhere while your goods remain in your shopping cart. Their systems have to be capable of multiplatform payments and that requires a fresh look at who your PSPs are because not all PSPs provide such capabilities.

Device-bound tokens are very 1990ish. The whole world is moving to the cloud. A device bound token needs to be reprovisioned every time I get a new phone, which is typically every 1-2 years, and that has to change. We live in a cloud-based world and people expect to authenticate themselves and start doing business, and payments have to work this way, too.

Jose: Thank you for the chat, Steve. It sounds like payments are changing a lot, adapting to the evolution of technology and we’re excited to see where these changes take us.

--

Interested in learning more about Google Pay APIs or have questions? Follow us @GooglePayDevs and let us know in the comments or tweet using #AskGooglePayDev! For any other Google Pay-related requests and questions, or to start your Google Pay integration, visit Google Pay Business Console.

Policy changes and certification requirement updates for Smart Home Actions

Posted by Toni Klopfenstein, Developer Advocate

Illustration of 2 animated locks and phone with Actions on Google logo on screen

As more developers onboard to the Smart Home Actions platform, we have gathered feedback about the certification process for launching an Action. Today, we are pleased to announce we have updated our Actions policy to enable developers to more quickly develop their Actions, and to help streamline the certification and launch process for developers. These updates will also help to provide a consistent, cohesive experience for smart device users.

Device quality guidelines

Ensuring each device type meets quality benchmark metrics provides end users with reliable and timely responses from their smart devices.With these policy updates, minimum latency and reliability metrics have been added to each device type guide. To ensure consistent device control and timely updates to Home Graph, all cloud controlled smart devices need to maintain a persistent connection through a hub or the device itself, and cannot rely on mobile devices and tablets.

Along with these quality benchmarks, we have also updated our guides with required and recommended traits for each device. By implementing these within an Action, developers can ensure their end users can trigger devices in a consistent manner and access the full range of device capabilities. To assist you in ensuring your Action is compliant with the updated policy, the Test Suite testing tool will now more clearly flag any device type or trait issues.

Safety and security

Smart home users care deeply about the safety and security of the devices integrated into their homes, so we have also updated our requirements for secondary user verification. This verification step must be implemented for any Action that can set a device in an unprotected state, such as unlocking a door, regardless of whether you are building a Conversational Action or Smart Home Action. Once configured with a secondary verification method, developers can provide users a way to opt out of this flow. For any developer wishing to include an opt-out selection to their customers, we have provided a warning message template to ensure users understand the security implications for turning this feature off.

For devices that may pose heightened safety risks, such as cooking appliances, we require UL certificates or similar certification forms to be provided along with the Test Suite results before an Action can be released to production.

Works With 'Hey Google' badge

These policy updates also will affect the use of the Works With Hey Google badge. The badge will only be available for use on marketing materials for new Smart Home Direct Actions that have successfully integrated any device types referenced.

Any Conversational Actions currently using the badge will not be approved for use for any new marketing assets, including packaging/product refreshes. Any digital assets using the badge will need to be updated to remove the badge by the end of 2021.

Timeline

With the roll-out today, there will be a 1 month grace period for developers to update new integrations to match the new policy requirements. For Actions currently deployed to production, compliance will be evaluated when the Action is recertified. Once integrations have been certified and launched to production, Actions will need to be recertified annually, or any time new devices or device functionality is added to the Action. Notifications for recertification will be shared with the developer account associated with your Action in the console.

This policy grace-period ends April 12, 2021.

Please review the updated policy, as well as our updated docs for launching your Smart Home Action. You can also check out our policy video for more information.

We want to hear from you, so continue sharing your feedback with us through the issue tracker, and engage with other smart home developers in the /r/GoogleAssistantDev community. Follow @ActionsOnGoogle on Twitter for more of our team's updates, and tweet using #AoGDevs to share what you’re working on. We can’t wait to see what you build!

Increasing our engagement with the voice technology community

Posted by Leslie Garcia-Amaya, Global Product Partnerships Lead, Google Assistant Ashwin Karuhatty, Head of Global Product Partnerships, Google Assistant

Google assistant image

The interest and adoption of voice technology reached an important inflection point last year with the pandemic, as we immediately saw Google Assistant play a bigger role in helping people manage more of their time at home, from juggling family activities to controlling their smart home devices.

To help brands and developers stay ahead of these trends and identify potential opportunities to create impactful voice experiences for their users, we spun up a series of virtual events to stay engaged with the community when many in-person industry events were cancelled. For example, we introduced VOICE Talks last April in partnership with Modev as a monthly series of digital events that connected Google business, engineering and product leaders directly with the voice-tech ecosystem and developer community. VOICE Talks also provided a platform to companies, like Sony, Bamboo Learning, American Express, Verizon, Headspace, Vizio, iRobot, Nike, Dunkin, to share best practices on how they integrated voice technology into their products. You can watch past episodes here.

The ecosystem support and participation has been incredible with over 110,000 subscribers for VOICE Talks, over 40,000 hours of content consumed and active ongoing viewership on YouTube. In addition, we saw a huge demand for country/region-specific content in India, and started the VOICE Talks India series, which has also been received very well.

Thanks to all the positive feedback from the community, we’re looking to double down on those efforts this year. In addition to hosting more VOICE Talks events, we’re expanding our collaboration with industry-recognized influencers through podcasts, livestreams and more to continue growing the community, such as:

Additionally, we’re excited to announce that Google Assistant is the first corporate sponsor of Women In Voice, a global non-profit with a mission to amplify women and diverse people in the voice technology field that has grown to 20 chapters in 15 countries since they launched in 2018. This sponsorship builds on the momentum Women In Voice established with Google Assistant at CES 2020, where they collaborated on a “Women In Tech & Allies” event. Tune in to womeninvoice.org to stay up to date on upcoming events and collaborations between Google Assistant and Women In Voice.

There’s now more ways to hear from us, share your feedback and learn about the latest trends in the space.

ML Kit is now in GA & Introducing Selfie Segmentation

Posted by Kenny Sulaimon, Product Manager, ML Kit Chengji Yan, Suril Shah, Buck Bourdon, Software Engineers, ML Kit, Shiyu Hu, Technical Lead, ML Kit Dong Chen, Technical Lead, ML Kit

At the end of 2020, we introduced the Entity Extraction API to our ML Kit SDK, making it even easier to detect and perform actions on text within mobile apps. Since then, we’ve been hard at work updating our existing APIs with new functionality and also fine tuning Selfie Segmentation with the help of our partners in the ML Kit early access program.

Today we are excited to officially add Selfie Segmentation to the ML Kit lineup, introduce a few enhancements we’ve made to our popular Pose Detection API and announce that ML Kit has graduated to general availability!

Natural language graphic

General Availability

ML Kit image

(ML Kit is now in General Availability)

We launched ML Kit back in 2018 in order to make it easy for developers on Android and iOS to use machine learning within their apps. Over the last two years we have rapidly expanded our set of APIs to help with both vision and natural language processing based use cases.

Thanks to the overwhelmingly positive response, developer feedback and a ton of adoption across both Android and iOS, we are ready to drop the beta label and officially announce the general availability of ML Kit’s APIs. All of our APIs (except Selfie Segmentation, Pose Detection, and Entity Extraction) are now in general availability!

Selfie Segmentation

Selfie Segmentation photo

(Example of ML Kit Selfie Segmentation)

With the increased usage of selfie cameras and webcams in today's world, being able to quickly and easily add effects to camera experiences has become a necessity for many app developers.

ML Kit's Selfie Segmentation API allows developers to easily separate the background from users within a scene and focus on what matters. Adding cool effects to selfies or inserting your users into interesting background environments has never been easier. The model works on live and still images, and both half and full body subjects.

Under The Hood

Under the hood graph

(Diagram of Selfie Segmentation API)

The Selfie Segmentation API takes an input image and produces an output mask. Each pixel of the mask is assigned a float number that has a range between [0.0, 1.0]. The closer the number is to 1.0, the higher the confidence that the pixel represents a person, and vice versa.

The API works with static images and live video use cases. During live video (stream_mode), the API will leverage output from previous frames to return smoother segmentation results.

We’ve also implemented a “RAW_SIZE_MASK” option to give developers more options for mask output. By default, the mask produced will be the same size as the input image. If the RAW_SIZE_MASK option is enabled, then the mask will be the size of the model output (256x256). This option makes it easier to apply customized rescaling logic or reduces latency if rescaling to the input image size is not needed for your use case.

Pose Detection Update

Example of Pose Detection API

(Example of updated Pose Detection API; colors represent the Z value)

Last month, we updated our state-of-the-art Pose Detection API with a new model and new features. A quick summary of the enhancements is listed below:

  • More poses added The API now recognizes more poses, targeting fitness and yoga use cases, especially when a user is directly facing the camera.
  • 50% size reduction The base and accurate pose models are now significantly smaller. This change does not impact the quality of the models.
  • Z Coordinate for depth analysis The API now outputs a depth coordinate Z to help determine whether parts of the user's body are in front or behind the user’s hips.

Z Coordinate

The Z Coordinate is an experimental feature that is calculated for every point (excluding the face). The estimate is provided using synthetic data, obtained via the GHUM model (articulated 3D human shape model).

It is measured in "image pixels" like the X and Y coordinates. The Z axis is perpendicular to the camera and passes between a subject's hips. The origin of the Z axis is approximately the center point between the hips (left/right and front/back relative to the camera). Negative Z values are towards the camera; positive values are away from it. The Z coordinate does not have an upper or lower bound.

For more information on the Pose Detection changes, please see our API documentation.

Pose Classification

After the release of Pose Detection, we’ve received quite a bit of requests from developers to help with classifying specific poses within their apps. To help tackle this problem, we partnered with the MediaPipe team to release a pose classification tutorial and Google Colab. In the classification tutorial, we demonstrate how to build and run a custom pose classifier within the ML Kit Android sample app and also demo a simple push-up and squat rep counter using the classifier.

Example of Pose classification and repetition counting with MLKit Pose

(Example of Pose classification and repetition counting with MLKit Pose)

For a deep dive into building your own pose classifier with different camera angles, environment conditions, body shapes etc, please see the pose classification tutorial.

For more general classification tips, please see our Pose Classification Options page on the ML Kit website.

Beyond General Availability

It has been an exciting two years getting ML Kit to general availability and we couldn’t have gotten here without your help and feedback. As we continue to introduce new APIs such as Selfie Segmentation and Pose Detection, your feedback is more important than ever. Please continue to share your enhancement requests and questions with our development team or reach out through our community channels. Let’s build a smarter future together.

Celebrating International Women’s Day with 21 tech trailblazers

Posted by The Google Developers Team

GIF of International Women's Day 2021 header

Today we are celebrating International Women’s Day by highlighting a series of 21 tech trailblazers who are making significant strides in the developer community.

Many of the women we interviewed are directly involved with our educational outreach and inclusivity programs like Google Developer Groups and Women Techmakers while others are Google Developers Experts or Googlers who are doing amazing work around the globe.

While all of the women featured here have unique stories around their journey into tech, a commonality among all of them is the dedication to making the developer community more inclusive for all future generations of women to come.

We are honored to celebrate #IWD2021 with them.

Annyce Davis

Laurel, MD, United States ??

Android and Kotlin GDE

Photo of Annyce Davis

Photo of Annyce Davis

Tell us about your current role and a project you’re working on.

I work as Director of Engineering at Meetup. I'm currently working on moving our native applications into the future. It's exciting to take a product that I've used for so many years and help transform it into a modern application that millions of users rely on each day.

Tell us about your path into tech.

I think my path was pretty traditional. I've been interested in tech from a young age. I went to a Science and Tech high school and ended up getting my degree in Computer Engineering. But when I started out my career it was a slow start.

My first job out of college was as a Help Desk Technician. I managed to do that for 6 months before I realized that it wasn't for me and I needed to be coding. That's when I moved into Web development. From there, I spent a few years developing web apps and working on APIs. Finally, I found my true passion, Android development. I loved how I could write code that powered the tiny device I carried around in my purse.

What is one tip you would give your fellow women developers?

Grow your professional network early in your career. Spend time getting to know others in the industry. Establish your own "mentor" by reaching out and asking questions of others who are where you want to be. Having a network is invaluable. It exposes you to know opportunities and highlights areas for growth.

Florina Muntenescu

London, United Kingdom ??

Developer Relations Engineer, Android

Photo of Florina Muntenescu

Photo of Florina Muntenescu

Tell us about your current role and a project you’re working on.

I’m an engineer in the Android Developer Relations team. I focus on architecture, Jetpack and Kotlin. I give talks, write blog posts and samples and provide feedback on our products.

Recently I worked on architecture guidance in Compose and on #AndroidDevChallenge

Tell us about your path into tech.

When I was 9 years old, my mom took me to computer classes (we didn’t have a computer at home back then) and I just loved it. That’s when I decided I want to “work with computers” when I grow up. I studied computer science in high school and university and in my last year of university, I got hooked on Android.

What is one tip you would give your fellow women developers?

You have something to say—share it with the world! Share your passions and be yourself. People will respond and can tell if you really care about something.

Huyen Tue Dao

Denver, CO, United States ??

Android and Kotlin GDE

Photo of Huyen Tue Dao

Photo of Huyen Tue Dao

Tell us about your current role and a project you’re working on.

I am a senior Android developer working on the Trello Android app at Atlassian.

Tell us about your path into tech.

In high school, I dreamed of being a journalist. To graduate, we had to take one full credit of "technical classes." Since I wanted to be a journalist, I figured, "Hey, I'll probably be typing a lot. Let me take the typing class." Unfortunately, the typing class was just a half-credit so I needed one more class. Just because some of my friends were taking it, I ended up selecting "Introduction to Programming." That was the happiest happenstance. I fell immediately and deeply in love with programming. I kicked ass and afterward knew exactly what I wanted to do with my life. I majored in Computer Engineering at the University of Maryland and have never looked back.

What is one tip you would give your fellow women developers?

It can be tough but always ask questions. Ask questions when you need clarification. Ask questions when you don't agree with something. At the start of my career, I was deathly afraid of asking questions; I didn't want to seem incapable, and I didn't want to be "bothersome." Doing this, I missed out on so many opportunities and made things a bit harder on myself. Asking questions because you need clarification just makes sense and is necessary. For sure, sometimes people are not patient, but it's more important for you to get the information you need so you can do your best work. Asking questions because you don't agree with something can be really hard and may not always bring you the results that you want, but one of the biggest skills we have to constantly nurture as developers is critical thinking and the ability to communicate that thinking. Now that I'm a senior developer, I think I am most inspired and energized when other developers ask me great questions, clarifying or critical. It's not easy. It's often scary. It's a skill. But practice it and develop confidence in your right to ask questions.

Diana Rodríguez Manrique

Durham, United States ??

Firebase, Google Cloud, Google Maps Platform, and Web Technologies GDE

Photo of Diana Rodríguez Manrique

Photo of Diana Rodríguez Manrique

Tell us about your current role and a project you’re working on.

I’m transitioning between roles in developer advocacy. Currently working on many projects being one of them a diabetes monitoring tool with GPS tracking.

Tell us about your path into tech.

I started coding when I was 6 years old in a c64 and ever since then transitioned through different roles and languages being my strengths in infrastructure and Python. I’m a self taught developer with 20+ years experience

What is one tip you would give your fellow women developers?

Keep moving! Keep going forward. We have paved the way for other women to move forward and we need you!!

Laura Morinigo

London, United Kingdom ??

Firebase GDE

Photo of Laura Morinigo

Photo of Laura Morinigo

Tell us about your current role and a project you’re working on.

I am a Web Developer Advocate for Samsung Research UK, therefore I work for developers. My projects include helping developers and entrepreneurs make better decisions around tech, especially the web, by creating resources and demos, spreading the word about best practices, speaking at events, and contributing to a more diverse tech scene.

Tell us about your path into tech.

I started during my early years and learned how to code during high school. Later on, I decided to study Software Engineering which led me to start working as a developer. At the same time - I was also teaching and getting involved with the tech community, participating in events which guided me to public speaking and creating resources so others can learn from my experience. Thanks to this contribution I became a GDE on Firebase.

What is one tip you would give your fellow women developers?

To my fellow women developers: Work on yourself, in discovering your inner worth and remove a lot of beliefs that society shows you. Surround yourself with people that support you during your journey, find your community, and once you get there, open the door to other women that need guidance.

Rihanna Kedir

Rome, Italy ??

Flutter GDE, Women Techmakers Ambassador, GDG Rome Co-Lead

Image of Rihanna Kedir

Photo of Rihanna Kedir

Tell us about your current role and a project you’re working on.

Currently, I am working as a Software Engineer and I am so excited that a few months ago I joined the UN World Food Programme. Apart from that, I am GDE in web, Flutter and Dart, as well as a Women Techmakers ambassador and GDG organizer.

Tell us about your path into tech.

I ended up in the tech industry just out of curiosity. I always wanted to enroll in a scientific field. I grew up in Ethiopia and back in high-school I had very limited internet access and almost no information about Computer Science. As I graduated, I tried to enroll in the University, unfortunately, my Italian high school Diploma was not accepted in Ethiopian Universities back then.

My family was against me going abroad alone for studying. So I started working as an Accountant. Meanwhile, I took art and fashion design courses and started my own fashion business side by side. Once that I was economically independent I started to feel the urge to follow my dream, so I moved to Rome and started my computer science degree.

What is one tip you would give your fellow women developers?

Always stay passionate and never stop learning. You should always learn technical skills but you should keep in mind that soft skills are also important. Never be discouraged but try to expand your horizons as much as you can. At the same time, you should never compare yourself with others; focus on your own progress. Think about how much you’ve accomplished and where you want to go next. Always believe in yourself and speak up whenever you need to.

Mais Alheraki

Medina, Saudi Arabia ??

Flutter GDE

Image of Mais Alheraki

Photo of Mais Alheraki

Tell us about your current role and a project you’re working on.

I currently work as a lead developer in a tech startup, building a medical appointments application in Saudi Arabia, called Mawidy, all made with Flutter and Firebase, it helps patients get remote consultations with our doctors through the platform in voice and video. We also use Flutter web to give clinics access to all details of their doctors and provide appointments and services through the app, either remotely or by physical bookings.

We have over 3000 successful appointments, and counting, since we started, and we helped over 2500 patients get free medical consultations during the pandemic.

Tell us about your path into tech.

I was still in elementary school when my passion with computers started, I always knew I wanted to be in tech. My father was a programmer, I learned the basics when I was 14 y.o. After high school, I undoubtedly chose to major in IT, during college, I learned web development alongside UI design and built several small websites. I got to know Flutter & Firebase in a study jam in January 2019 and built my senior year project with them. Then I chose to continue diving deeper into application development, both as a UI designer and a Flutter developer, I released 2 free Flutter apps as personal projects in 2019 and still maintaining them, and got a base of active users.

Meanwhile, I helped in building the Women Techmakers community in Saudi Arabia, as a lead, organizer and speaker. We have helped thousands of women in the MENA region and Saudi Arabia to be more visible, learn more and get broader opportunities.

In the middle of 2020, I found my first job in tech, as a UI/UX designer. After that, within 3 months I got my current job as a Flutter developer.

What is one tip you would give your fellow women developers?

A tip I give to my fellow women developers is: have the courage to create your own opportunities, and never wait for it, build apps no matter how small they are, write tutorials, and teach what you learn.

Katarina Sheremet

Zurich, Switzerland??

Flutter GDE

Photo of Katarina Sheremet

Photo of Katarina Sheremet

Tell us about your current role and a project you’re working on.

I am a Google Developer Expert in Flutter and Dart, Women Techmakers Switzerland co-organizer, and Flutter Zürich Meetup co-organizer. I run my own company that is called FutureWare. I consult companies and Start-Ups about Flutter development, architecture, testing, and more. I also work on my own projects. One of the projects is Delern Flashcards. It is a mobile app that helps to learn anything, which is published on Google Play and App Store and has more than 3000 installs. I also organize events about technologies, gives talks, and writes articles about Flutter and Dart.

Tell us about your path into tech.

I started programming when I was 15 years old. My first programming language was Pascal. Since then, I fell in love with programming. I took part in the programming and algorithmic competitions and was also a prize-winner of regional competitions in Belarus.

What is one tip you would give your fellow women developers?

Enjoy what you are doing and be curious. It is very important to have fun and enjoy development. Curiosity will help you to dig deep into details. Knowing details is required to become an expert in your area.

Adriana Fernanda Moya

Bogotá, Colombia ??

Google Cloud GDE

Photo of Adriana Fernanda Moya

Photo of Adriana Fernanda Moya

Tell us about your current role and a project you’re working on.

Currently I work in a company that is listed for the NYS, called Globant, my role is Cloud Engineer and from my position I am dedicated to supporting a global entertainment company in cloud architecture and the implementation of large-scale growth strategies for its applications around the world.

Tell us about your path into tech.

I started my career as a software developer where I had many challenges, I suffered from the imposter syndrome, I was also always the only woman on the team. I was fortunate to have a great mentor, who always inspired me to study on my own and thanks to him I was able to meet technology communities in my city, it was a great time in which I had moments of all kinds. After some years of work as a developer I decided to make the decision to change my career path and orient it towards Cloud Computing, I was very excited to be able to translate architecture problems into new opportunities for large-scale improvement, so I did it and I do not regret it.

What is one tip you would give your fellow women developers?

I would advise her not to be afraid to think big, every small step they take will lead them to their goal, do not feel intimidated but always think that they are strong and they are going to achieve it.

Luz Maria Maida Claure

Mexico City, CDMX, Mexico ??

Google Cloud GDE, Women Techmakers Lead and Organizer for GDG Cloud MX

Photo of Luz Maria Maida Claure

Photo of Luz Maria Maida Claure

Tell us about your current role and a project you’re working on.

I'm a Software Engineer and right now I'm focused on an Ecommerce project. I take care about the web performance and infrastructure implementation using different Google Cloud Products, also I integrate analytic metrics from GMP to ensure that this measure is displayed in a way that the final customer can understand through different visualization tools.

Tell us about your path into tech.

I decided for this career when I was 7 years old, the first time that I saw a computer was while I was watching a TV show named "Where in the world is Carmen San Diego", from there the interest for the technology grew inside me, so in the college I decide to take programming lessons, with doubts but also with a lot of energy and passion to learn, I discovered my passion for the web development and infrastructure.

After the University I face different challenges, like being part of the only two women working in a company or having the Impostor syndrome while I was doing my activities, at the end, I understand that diversity is important inside the teams and don't give up no matter the circumstances. So with that in mind, I participated as a volunteer in a Women Techmakers event happening in Cochabamba, Bolivia. I'm very grateful for that experience because that allowed me to teach other people some concepts about Computer Science, and I felt awesome to help other women in the same field.

This experience encouraged me to send my first conference proposal to a Tech Conference, this action opened the door to meet more people with the same interests and also to take a look outside my country, I applied and was selected to be part of a Google Partner in Mexico City.

What is one tip you would give your fellow women developers?

Trust in yourself, for me is the most important thing! Even if you don't feel in that way or even in adverse circumstances, you need to be brave to create whatever you want and how far your imagination drives you, teach, share and don't forget to be happy.

Archana Malhotra

Sunnyvale, United States ??

Google Pay, Technical Engineering Manager

Image of Archana Malhotra

Photo of Archana Malhotra

Tell us about your current role and a project you’re working on.

I’m a technical Engineering Manager leading Google Pay Online Payments

Project. The current project I’m working on is to bring Offers to Autofill! It's about surfacing a user activated offer from the Google Pay app in Autofill. This helps the user identify and select the offer linked FOP (form of payment).

Tell us about your path into tech.

I was fascinated by computers at an early age, I started learning coding in elementary school and pursued my Bachelors and Masters in Computer Science.

What is one tip you would give your fellow women developers?

Carve out time from the busy schedule to add value to yourself. Block time on the calendar to stop, think and review and identify what you want to polish, learn, and apply.

Nalini Sewak

San Francisco, United States ??

Google Pay, Product Solutions Engineer

Image of Nalini Sewak

Photo of Nalini Sewak

Tell us about your current role and a project you’re working on.

I work as a Product Solutions Engineer in Google Pay. My role is an interesting mix of external and internal engagements which I love! I work directly with our partners (say Doordash or Lyft) to help them integrate with our APIs. These partners allow their users to checkout using Google Pay on their platforms. I also collaborate internally with our business development, product and engineering teams to ensure we can test, launch and support new features and scale existing products and processes so more developers can easily integrate with Google. I'm currently analyzing data to determine where developers drop off in our integration path to improve our offering.

Tell us about your path into tech.

I had a pretty cursory interest in tech during my high school years in India, and wasn’t certain it would be my path. My sister thought it would be a great fit for my skills and really encouraged me to pursue tech. Turns out she was right! I really enjoyed a user research course which motivated me to focus on user journeys in products, I was hooked! I immigrated to the US to get my MS in CS at Santa Cruz. It was incredibly fulfilling to do research and TA for amazing professors and I really thrived amongst the redwood forests. Go Slugs!

What is one tip you would give your fellow women developers?

Dont be afraid to ask questions or seem stupid, it makes you get stuck longer. Ask the questions, learn from it and you will be better faster! Create a network of people who support you that you can seek advice from, find mentors and sponsors in your career and you will progress more quickly. And be sure to extend the same advice or support to others who need it. Use your voice to bring your opinion into product roadmaps and strategy. After all, tech products need to be just as useful to women; nothing about us without us. We can drive systemic change and once we have critical mass in tech, it can be a green field for the next generation of women.

To stay updated on Google Pay technical updates, and news follow @GooglePayDevs on Twitter.

Rayan AL Zahab

Dubai, UAE ??

Google Workspace Product GDE, GDG Coast Lebanon and Women Techmakers Lebanon

Photo of Rayan AL Zahab

Photo of Rayan AL Zahab

Tell us about your current role and a project you’re working on.

I am the founder and CEO of BambooGeeks, a startup with the aim to make the MENA region a tech talent hub by training fresh tech talents and startups on market relevant technologies (ML, AppScript,..) and methodologies (Design thinking, agile, devops,..) with a focus on communication skills and the power of the tech community.

I am also a Google Workspace GDE, the first female GDE in the MENA and have been one of the most active GDEs worldwide since 2019.

I am a Women Techmakers ambassador and Google for Startups Accelerator MENA lead mentor and trainer.

Tell us about your path into tech.

Building and creating has always been a passion of mine. Inspired by my father, I wanted to be an electrical engineer, but then grew an interest in computers and decided to go for software engineering as it was more suitable for a woman for my family.

I started working since my second year university and was always fond of the tech ecosystem based on open source and community, made sure to participate in every event and hackathon no matter how far from my city it was.

I started my career in Lebanon in data entry and QA as an intern, then became an application developer and worked for several companies including Delteck and UNICEF innovation Lab before moving to Dubai to join McKinsey & Company as a senior digital consultant. At McKinsey, I was an Agile trainer and product management adviser where we worked with government entities and banks across the Gulf.

In early 2020 I decided to take a leap of faith and start BambooGeeks only a month before the pandemic! Considering we provide in person bootcamps and trainings, we had to pivot. We restructured all our training and materials to be completely online and launched.

In less than a year we have trained over 200 startups on design thinking from all MENA and 800+ individuals on Employability skills, Agile Development and Design thinking with a target audience of DSC leads, GDG members and Women Techmakers Ambassadors.

What is one tip you would give your fellow women developers?

Early in my career I have been told to be realistic and lower my ambitions because being a hijabi woman in Tech imposes limits on what I can achieve in the field. They said look around it isn't possible, you will never find a successful hijabi woman in tech.

And it was true, there wasn't anyone who looked like me, and it was true I got rejected for countless jobs because I'm a woman and a hijabi, and was asked to remove my hijab for other jobs.

But, I never looked at it as a barrier! With every rejection I was grateful for my hijab and for being a women, they acted as my personal "sexism and religious discrimination" sensor which protected me from working in a culture that doesn't fit my values.

There is no ceiling for your dreams! Dream as big as you wish, and you have the right to maintain all your values!

And When you don't find the role model to look up to, be that model for future generations.

In addition, Being a women in tech comes with many challenges, fortunately for us today it also comes with few extra opportunities, Tech companies understood the need of women in the industry and are creating programs and initiatives to support you, such as the Women Techmakers from Google, the TechWomen exchange program from the state friends and many others.

Seek these opportunities! Leverage the community.

Cleo Espiritu

Vancouver, BC, Canada ??

Google Workspace GDE

Photo of Cleo Espiritu

Photo of Cleo Espiritu

Tell us about your current role and a project you’re working on.

I'm a Technical Product Manager at Plenty of Fish for the Platform and Payment squads, where we design and build the infrastructure, libraries and backend services that keep our apps running smoothly for our members. Recently we've launched our CRM (Customer Relationship Management) services which expanded our capabilities and significantly reduced our development time to engage and communicate with members through multiple channels.

Tell us about your path into tech.

Going into high school, I randomly chose a computer programming course despite knowing nothing about it at the time. That led to me learning HTML to make websites on my own, as well as a summer research job with the Computing Science department at the University of Alberta. I decided to keep at it, got my degree in Computer Science, started as a developer and was fortunate enough to have the opportunities to experience different roles in software development, such as UI designer and Product Manager.

What is one tip you would give your fellow women developers?

Learn to recognize your strengths and build your confidence around it. Also learn to recognize your weaknesses and gaps, and see those as opportunities to grow and learn.

Alice Keeler

Fresno, United States ??

Google Workspace GDE

Photo of Alice Keeler

Photo of Alice Keeler

Tell us about your current role and a project you’re working on.

Along with teaching geometry, I create innovative solutions for teacher workflows that save them significant time and/or allow teachers to use workspace more effectively with their students.

Tell us about your path into tech.

I got into tech because as an educator, I am always excited to find new ways to make learning more awesome! Messing around with new tools that can, increase engagement, spark curiosity, foster collaboration, or increase efficiency is always something that I dive into. Over time I found the joy of coding those tools myself, to make them even better.

What is one tip you would give your fellow women developers?

Don’t be afraid to fail often! Failing and making mistakes is where the learning magic happens.

Louise Macfadyen

Portland, United States ??

Design Advocate

Image of Louise Macfadyen

Photo of Louise Macfadyen

Tell us about your current role and a project you’re working on.

I recently joined the Material Design team as a Design Advocate, so a lot of my work involves connecting with the design community and helping designers and developers create beautiful experiences using Material.

I’m currently recording a video series called Material Made which highlights the three winners of the Material Design awards. We just wrapped up an episode which will feature Epsy, who won the award for Material Motion. Their app aims to better the lives of those living with epilepsy, and the episode highlights how they guide users through critical tasks to better their quality of life, like logging triggers, taking medication, and reducing the feeling of isolation. We talk about how they use motion stylistically as a component of their brand expression, while also providing users with a great, meaningful experience.

Each episode dives into the way the experience was brought to life with Material Design, and we also speak to the designers who worked on the projects to hear more about their process. There will be three episodes in total, and they’ll be coming out this year - stay tuned and check out the Material Design YouTube channel here.

Tell us about your path into tech.

I graduated with a degree in English, so I thought I’d go into publishing or journalism. But this was 2012 and none of those jobs existed any more, so I ended up teaching myself how to code Wordpress sites.

I started freelancing for small galleries and studios and eventually realized that I was more drawn to the design side. I sort of pieced together a design education from a number of sources, and made a portfolio. I eventually got my foot in the door at a small shop, and everything went from there.

Working at Google was a long time aspiration, as the initial launch of Material Design guidance showed that orgs were opening the door for people like me, with non-traditional backgrounds, to benefit from their design systems and research. It’s what makes me excited to connect with other designers and developers to support them and give them a voice that previously they hadn’t had.

What is one tip you would give your fellow women developers?

For a long time, I think careers have been perceived in a linear way, as a slow climbing of the stairs up to seniority. My career hasn’t been like that, and I feel like largely the nature of the “career” is changing.

There’s less of a sense of climbing towards that north star. Instead I associate much more with this feeling of being in a forest, observing the abundance around me, tending to my skills and interests and seeing where that path leads. I find it’s important to always have an open mindset. And wear sensible shoes ?

Yasmine Evjen

San Francisco, United States ??

Lead, Material Design Advocacy

Image of Yasmine Evjen

Photo of Yasmine Evjen

Tell us about your current role and a project you’re working on.

I lead the Material Design Advocacy team at Google. We’re a team of designers and developers helping others build beautiful, human-centered experiences with Material Design.

Material is a design system, created by Google and backed by open-source code, that helps teams build high-quality digital experiences. My team helps designers and developers build with our guidelines, code components, and tools through education, resources, and hands-on partner engagements. Some days are spent writing blog posts, creating a talk, or filming for our YouTube channel. Other days are spent creating resources, such as interactive examples and tools to help make it easier to build beautiful UI on Android, the Web, or Flutter. We also work directly with external partners and internal teams across Google to help them implement and gain actionable feedback on how we can improve. And we get paid to tweet.

Tell us about your path into tech.

When I was in college I took a Flash class because I needed to complete a computer science course prerequisite, and my instructor said, “You’re really good at this, have you considered this as a career?” I did some research and learned about web development, which led to me pursuing a career as a front-end web developer, and later evolved into designing apps as a UX designer.

I’ve always been a huge fan of Android, and as an app designer, Material Design has always been a dream of mine to work on. My Google journey started with a podcast which focused on Google and Android. We talked about new products and technology coming out of Google and what we could do with it. Starting the podcast gave me an opportunity to communicate and connect with the community and be able to use my design expertise - that's what landed me in my role as a Design Advocate which later evolved into managing a team of developers and designers advocates.

Material Design is there to help both designers and developers to build beautiful digital experiences, and I look forward to continuing the exploration with my team to learn how we can bridge the gap between design and development.

What is one tip you would give your fellow women developers?

Don’t allow yourself to be limited or solely defined by a job title. Design, development, and other roles in tech are so entwined where you don’t have to be one specific thing in order to be successful. Starting off as a front-end developer, and evolving into a UX designer led me to the question: What exactly is my path? A developer or a designer? While keeping my path open to possibilities, my path has led me to a unique position where I can manage both developers and designers. If you’re leading a team like Material Design Advocacy - both are needed. If I could tell developers one thing, it would be - don't be afraid to get into the design details, and for designers the same - don’t be afraid to code. The more we can work together and demystify our roles, the better experiences we can create because we’ll be less focused on what our role is and more focused on delivering something beautiful.

Lea Truc

Atlanta, United States ??

Women Techmakers Ambassador

Photo of Lea Truc

Photo of Lea Truc

Tell us about your current role and a project you’re working on.

I lead Women Meet Tech, a STEM program funded and endorsed by the U.S. Consulate General - Ho Chi Minh City around tech and women empowerment. I’m also a Women Techmaker ambassador with technical knowledge in front-end development, co-leading Google Flutter community in Sydney and a former mentor at Women Developer Academy by Google Developers.

Amidst COVID-19 pandemic, I have builded a pilot GP-Patient Support platform to provide easier access to medical reference info for patients while assisting social-distancing in clinical visits in Australia.

I’m very glad that my works have inspired young professionals in multiple tech seminars, hackathons and international collaborations in Singapore, Malaysia, Australia, the US and Vietnam.

Tell us about your path into tech.

A college professor in Boston turned tech advocate. I once was told I would never be successful if pursuing my path in tech. I proved that wrong. That’s why I want to inspire others to have the courage to overcome social pressures, fears, obstacles to pursue their own path. I want to empower many other women and minorities through technology and education. I’m a strong believer that a person’s capability is not based on the gender one was born with.

What is one tip you would give your fellow women developers?

'What I cannot create, I do not understand.' - Richard P. Feynman.

Don’t be afraid to get your hands dirty. Just try, fail a lot, and be persistent. That’s how you can understand things at the core. That’s how you can grow.

Margaret Maynard-Reid

Seattle, United States ??

ML GDE, GDG Seattle Lead, Women Techmakers Seattle

Photo of Margaret Maynard-Reid

Photo of Margaret Maynard-Reid

Tell us about your current role and a project you’re working on.

I’m an ML research engineer and avid artist - check out my artwork made with traditional, digital and AI tools. One community project that I’m currently working on is to help launch the ML GDE (Google Developer Experts) YouTube channel with my fellow ML GDEs. Be sure to subscribe to our channel which will be launched soon with unique content created by ML GDEs worldwide.

Tell us about your path into tech.

Most of my career has actually been in the tech world. Starting from a business background with an MBA, my journey goes from managing software development releases, to Android application development, to ML research and engineering, to becoming an artist. Instead of a linear path, I have shifted my career a few times in pursuit of my various passions.

What is one tip you would give your fellow women developers?

My one tip for developers in general is - it’s never too late to learn anything! Put your mind into it and you can become an expert at it one day. Read a book, take an online class, learn from your colleagues and friends. Sharing your knowledge is also a great way to learn: give a talk, write a blog post or contribute to an open-source project. Never be afraid of being a beginner, keep learning, and you may discover a talent you never realize that you have.

Bianca Ximenes

Recife, Brazil ??

Machine Learning GDE

Photo of Bianca Ximenes

Photo of Bianca Ximenes

Tell us about your current role and a project you’re working on.

I am a Product Manager in Artificial Intelligence at Gupy, the biggest HRTech in Brazil.

Right now, the project that excites me the most is the integration of a Deep Learning model for Named Entity Recognition (NER) to our Machine Learning stack, which will allow us to help companies write higher quality job descriptions focused on the candidate, and help candidates upskill by suggesting related content to the expertise they have and positions they want to achieve.

Tell us about your path into tech.

I started out in Economics, where I got a solid formation in Mathematics, Statistics and analytical thinking. I loved all things Economics, but felt that job opportunities didn't really demand a lot of my skills, and as a person I wasn't as valued in companies where I worked, compared to my friends who were in Computer Science.

I started working in small startups and the idea of Agile, continuous improvement, and development projects really resonated with me. I liked having a finger in every pie, because I am quite curious and like understanding (and explaining) how things work. So I decided to do an MSc in Computer Science to acquire some technical skill and understanding. After that, I worked managing projects that ranged from mobile development to augmented reality, until I finally realized I really liked making Products more than Projects, and since I had an extensive background building products and managing startups, I became a Google Developer Expert in Product Strategy. A little while later, I started my PhD in Computer Science, also working for a startup where I saw up close the challenges and excitement of AI projects in real life, as well as the dilemmas of building AI applications that made decisions for thousands of people.

Working with Machine Learning allowed me to use the mathematical and statistical foundation I had, and I started researching Ethical Machine Learning, eventually migrating to the Google Developer Expert program in Machine Learning and joining Gupy and a specialized Product Manager focused on AI - something I want to do for life. That way, I was able to bring together all of my career passions: Product, AI, research, and being an active part of the developer community.

What is one tip you would give your fellow women developers?

In Tech, no-one's path is like any other. We have more liberty to change and innovate, and everything can have an impact really quickly. So always be mindful of what you're doing or your responsibility, and try as best you can not to compare what you do and your path with others'. Tech is everywhere, we do so many different and exciting things! Find a way to deliver value that works for real people and make it your own. Be proud of your history (:

Sharmistha Chatterjee

Bengaluru, Karnataka, India ??

Machine Learning GDE

Photo of Sharmistha Chatterjee

Photo of Sharmistha Chatterjee

Tell us about your current role and a project you’re working on.

I work as a Senior Manager of Data Sciences in Publicis Sapient. I am currently working on different algorithms for Ethical AI solutions, one of which is Federated learning.

Tell us about your path into tech.

Starting from my school days, I have always been curious about Programming Languages like Basic and Logo, and used to try out new kinds of stuff. In those days (25 years back) the computer was just getting introduced in very few schools. Even during my high school and college days, I tried to build my own projects like A User Interface for a Retail System, an Interactive Quiz Simulator, and so on. I remember the days when there were no python libraries and instead I had to code libraries using C/C++ for my thesis.

The curiosity to solve unsolved problems, and the desire to wait and see new results coming up, have always kept me going and motivated to transfer this characteristic to other women. Hence blogging (my own platform techairesearch.com), and giving talks in meetups or conferences energizes me and helps me to learn and evolve in the process.

What is one tip you would give your fellow women developers?

Always ask why and be bold to question, and showcase your talent by giving talks, participating in hackathons, open-source projects.

I think it's time to give back to the community by mentoring more young women who can get more visibility and become leaders in STEM. As women's representation in STEM is lacking, this is a great avenue to encourage young talented women to showcase their skills in different technologies (Android, Web, Flutter, AI, Cloud, etc) and become experts and gain visibility in the tech community. Once they become more active in open source contributions, giving talks, and blogging, other career paths for progression would automatically open, which would enable them to become recognized leaders in their domain. Since Google is already providing an avenue to young women to seek mentorship and become experts, it's time that women feel highly encouraged and come forward and make the best use of it.


Interested in becoming a part of the Google developer community? Here’s more information on the programs we’ve shared above:

GDG logo

The Google Developer Groups program gives developers the opportunity to meet local developers with similar interests in technology. A virtual or in-person GDG meetup event includes talks on a wide range of technical topics where you can learn new skills through hands-on workshops. The community prides itself on being an inclusive environment where everyone and anyone interested in tech - from beginner developers to experienced professionals - all are welcome to join.

Join a Google Developer Group chapter near you here.

Apply to become a Google Developer Group organizer here.

Follow Google Developer Groups on Twitter here.

Subscribe to the Google Developer Groups YouTube channel here.

Women Techmakers logo

Founded in 2014, Google’s Women Techmakers is dedicated to helping all women thrive in tech through community, visibility and resources. With a member base of over 100,000 women developers, we’re working with communities across the globe to build a world where all women can thrive in tech. Our community consists of over 1000 Women Techmakers Ambassadors across over 100 countries. These Ambassadors are the north star of our movement. They are leaders committed to their communities, using Women Techmaker resources to build space and visibility so that all women could thrive in tech.

Become a Women Techmakers Member here.

Follow Women Techmakers on Twitter here.

Google Developer Experts logo

The Google Developers Experts program is a global network of highly experienced technology experts, influencers and thought leaders who actively support developers, companies and tech communities by speaking at events, publishing content, and building innovative apps. Experts actively contribute to and support the developer and startup ecosystems around the world, helping them build and launch highly innovative apps. More than 800 Experts represent 18+ Google technologies around the world!

Learn more about the Google Developers Experts program and its eligibility criteria here.

Follow Google Developers Experts on Twitter here and LinkedIn here.

Eight women kicking butt and taking (domain) names

Posted by Christina Yeh, Google Registry Team

Who do you think of when you hear the words sister, daughter, mother? How about when the words are leader, founder, CEO? As a mom of three, I want my kids to grow up in a world where the second set of words is as likely as the first to bring a woman to mind. Which is why we’re elevating the voices of women and making sure their stories are heard in today’s #MyDomain series. On this International Women’s Day, Google Registry is sharing eight new videos — all featuring female leaders who are taking care of business on their .app and .dev domains.

Alice Truswell

Alice Truswell is co-founder of Snoop.app, a money-saving app. “Fear being forgettable more than fearing not fitting in,” she says, “because the earlier you get comfortable with your voice, the earlier you can start refining results.”

Annie Hwang

Annie Hwang is co-founder of Jemi.app, a company that helps creators and public figures interact with their audiences and make money. “Don't let imposter syndrome ever stop you,” she advises.“We've grown up in a society where we are constantly told that we should be a follower. Don't be a follower anymore; be a leader!”

Elena Czubiak

Elena Czubiak is the developer and designer behind saturdaydesign.dev and co-founder of imaginarie.app. She quit her day job in 2018 to start her own business and hasn’t looked back since. Elena says, "Remember that although it might feel like starting over, you'll quickly see that your unique experiences will help you solve problems and make connections that nobody else could."

Ifrah Khan

Ifrah Khan is co-founder of Clubba.app, a platform that provides virtual creative extracurricular clubs (led by college students) for kids ages 6 to 12. Ifrah encourages entrepreneurial women to find and connect with other women who are also working on their own ventures. “Really talk to them and get to know their journey,” she says. “If they fundraised, how did they fundraise? Fundraising is so hard when you start your own business in general, but as a woman it’s even harder.”

Rita Kozlov

Rita Kozlov is a product manager who leads the Cloudflare Workers product, which uses the workers.dev domain. Rita’s advice for women who want to become a product manager is, “Don’t be afraid to ask lots of questions. In product management that’s definitely 100% a strength and never a weakness.”

Romina Arrigoni Samsó

Romina Arrigoni Samsó is founder and CEO of ADDSKIN.app, a social marketplace for skincare, where community recommendations help customers choose the best products. Romina says, “La gracia de la tecnología es que como dice el dicho, el avión se construye en el aire. Lo importante es lanzarse,” which translates to, “The grace of technology is that, as the saying goes, the plane is built in the air. The important thing is to launch.”

Soraya Jaber

Soraya Jaber is co-founder and CEO of Minsar.app, a no-code AR-VR creative and publishing platform. “We don't care about your age, your gender, your race, or sexual orientation — there is no space where you are not allowed,” Soraya says.“Don't hinder yourself, jump into entrepreneurship. I can assure you that's a hell of a great adventure!”

Stefania Olafsdóttir

Stefania Olafsdóttir is the co-founder and CEO of Avo.app, a next-generation analytics governance company. Her advice? “It’s way more important to be brave than to be perfect.”

To see a special video featuring all these amazing women, check out goo.gle/mydomain. If you have a unique story to share about a .app, .dev, or .page domain and would like to be considered for our series, please fill out this short application form. Here’s to helping tell the stories of women everywhere so that we may inspire generations to come.

Google and Debian work together to make COVID-19 researchers’ lives easier

Posted by Joe Hicks, Yun Peng, Olek Wojnar

debian logo

Google and Debian work together to make COVID-19 researchers’ lives easier

  • Bazel is now available as an easy to install package distributed on Debian and Ubuntu.
  • Tensorflow packaging for Debian is progressing.

Olek Wojnar, Debian Developer, reached out to the Bazel team about packaging and distributing Bazel on Debian (and other Linux distributions such as Ubuntu) in service of delivering Tensorflow Machine Learning functionality for COVID-19 researchers:

“I'm working with the Debian Med team right now to get some much-needed software packaged and available for users in the medical community to help with the COVID-19 pandemic. At least one of the packages we desperately need requires Bazel to build. Clearly this is an unusual and very critical situation. I don't think it's an exaggeration to say that lives may literally depend on us getting better tools to the medical professionals out there, and quickly. The entire international community would be extraordinarily grateful if @google and the @bazelbuild team could prioritize helping with this!”

The Bazel team jumped in to help Olek and the COVID-19 research community. Yun Peng, Software Engineer at Google with Olek Wojnar led the team of Bazel and Debian volunteers to move the project forward. The joint effort between Debian and Google has produced some great results, including packaging the Bazel bootstrap variant in 6 months time (Debian 11 -- released in Late 2021; Ubuntu 21.04 -- 22 April 2021). Bazel is now available as an easy to install package distributed on Debian and Ubuntu. The extended Google team continues to work with Debian towards the next step of packaging and distributing Tensorflow on Debian and other Linux distributions.

In addition to Yun and Olek, other contributors to this project include Michael R. Crusoe of Debian, Joe Hicks, John Field, Philipp Wollermann, and Tobias Werth of Google.

Announcing Flutter 2

Our next generation of Flutter, built for web, mobile, and desktop

Today, we’re announcing Flutter 2: a major upgrade to Flutter that enables developers to create beautiful, fast, and portable apps for any platform. With Flutter 2, you can use the same codebase to ship native apps to five operating systems: iOS, Android, Windows, macOS, and Linux; as well as web experiences targeting browsers such as Chrome, Firefox, Safari, or Edge. Flutter can even be embedded in cars, TVs, and smart home appliances, providing the most pervasive and portable experience for an ambient computing world.

Flutter 2 logo

Our goal is to fundamentally shift how developers think about building apps, starting not with the platform you’re targeting but rather with the experience you want to create. Flutter allows you to handcraft beautiful experiences where your brand and design comes to the forefront. Flutter is fast, compiling your source to machine code, but thanks to our support for stateful hot reload, you still get the productivity of interpreted environments, allowing you to make changes while your app is running and see the results immediately. And Flutter is open, with thousands of contributors adding to the core framework and extending it with an ecosystem of packages.

5 tablet and mobile device screens

In Flutter 2, released today, we’ve broadened Flutter from a mobile framework to a portable framework, unleashing your apps to run on a wide variety of different platforms with little or no change. There are already over 150,000 Flutter apps out there on the Play Store alone, and every app gets a free upgrade with Flutter 2 because they can now grow to target desktop and web without a rewrite.

Customers from all around the world are using Flutter, including popular apps like WeChat, Grab, Yandex Go, Nubank, Sonos, Fastic, Betterment and realtor.com. Here at Google, we’re depending on Flutter, and over a thousand engineers at Google are building apps with Dart and Flutter. In fact, many of those products are already shipping, including Stadia, Google One, and the Google Nest Hub.

Logos of Google apps powered by Flutter

Google Pay switched to Flutter a few months ago for their flagship mobile app, and they already achieved major gains in productivity and quality. By unifying the codebase, the team removed feature disparity between platforms and eliminated over half a million lines of code. Google Pay also reports that their engineers are far more efficient, with a huge reduction in technical debt and unified release processes such as security reviews and experimentation across both iOS and Android.

Flutter on the web

Perhaps the single largest announcement in Flutter 2 is production-quality support for the web.

The early foundation of the web was document-centric. But the web platform has evolved to encompass richer platform APIs that enable highly sophisticated apps with hardware-accelerated 2D and 3D graphics and flexible layout and paint APIs. Flutter’s web support builds on these innovations, offering an app-centric framework that takes full advantage of all that the modern web has to offer.

This initial release focuses on three app scenarios in particular:

  • Progressive web apps (PWAs) that combine the web’s reach with the capabilities of a desktop app.
  • Single page apps (SPAs) that load once and transmit data to and from internet services.
  • Bringing existing Flutter mobile apps to the web, enabling shared code for both experiences.

In the last months, as we prepared for the stable release of web support, we made lots of progress on performance optimization, adding a new CanvasKit-powered rendering engine built with WebAssembly. Flutter Plasma, a demo built by community member Felix Blaschke, showcases the ease of building sophisticated web graphics experiences with Dart and Flutter that can also run natively on desktop or mobile devices.

We’ve been extending Flutter to offer the best of the web platform. In recent months, we added text autofill, control over address bar URLs and routing, and PWA manifests. And because desktop browsers are as important as mobile browsers, we added interactive scrollbars and keyboard shortcuts, increased the default content density in desktop modes, and added screen reader support for accessibility on Windows, macOS, and Chrome OS.

Some examples of web apps built with Flutter are already available. Among educators, iRobot is well known for their popular Root educational robots. Flutter’s production support for the web allows iRobot to take their existing educational programming environment and move it to the web, expanding its availability to Chromebooks and other devices where the browser is the best choice. iRobot's blog post has all the details on their progress so far and why they chose Flutter.

iRobot interface with Flutter

Another example is Rive, who offers designers a powerful tool for creating custom animations that can ship to any platform. Their updated web app, now available in beta, is built entirely with Flutter, and is a love letter to all that Flutter can offer in this environment.

Rive interface with Flutter

You can find out more about Flutter on the web from our dedicated blog post over at our Medium publication.

Flutter 2 on desktops, foldables, and embedded devices

Beyond traditional mobile devices and the web, Flutter is increasingly stretching out to other device types, and we highlighted three partnerships in today’s keynote that demonstrate Flutter’s portability.

To start with, Canonical is partnering with us to bring Flutter to desktop, with engineers contributing code to support development and deployment on Linux. During today’s event, the Ubuntu team showed an early demo of their new installer app that was rewritten with Flutter. For Canonical, it is critical that they can deliver rock-solid yet beautiful experiences on a huge variety of hardware configurations. Moving forward, Flutter is the default choice for future desktop and mobile apps created by Canonical.

Flutter is the default choice for future desktop and mobile apps created by Canonical.

Secondly, Microsoft is continuing to expand its support for Flutter. In addition to an ongoing collaboration to offer high-quality Windows support in Flutter, today Microsoft is releasing contributions to the Flutter engine that support the emerging class of foldable Android devices. These devices introduce new design patterns, with apps that can either expand content or take advantage of the dual-screen nature to offer side-by-side experiences. In a blog post from the Surface engineering team, they demonstrate their work and invite others to join them in completing a high-quality implementation that works on Surface Duo and other devices.

Windows support in Flutter

Lastly, Toyota, the world’s best-selling automaker, announced its plans to bring a best-in-market digital experience to vehicles, by building infotainment systems powered by Flutter. Using Flutter marks a large departure in approach from how in-vehicle software has been developed in the past. Toyota chose Flutter because of its high performance and consistency of experience, fast iteration and developer ergonomics as well as smartphone-tier touch mechanics. By using Flutter’s embedder API, Toyota is able to tailor Flutter for the unique needs of an in-vehicle system.

Toyota using Flutter in vehicle infotainment systems

We’re excited to continue our work with Toyota and others to bring Flutter to vehicles, TVs, and other embedded devices, and we hope to share further examples in the coming months.

The growing Flutter ecosystem

There are now over 15,000 packages for Flutter and Dart: from companies like Amazon, Microsoft, Adobe, Alibaba, eBay, and Square; to key packages like Lottie, Sentry and SVG, as well as Flutter Favorite packages such as sign_in_with_apple, google_fonts, geolocator, and sqflite.

Today we’re announcing the beta release of Google Mobile Ads for Flutter, a new SDK that works with AdMob and AdManager to offer a variety of ad formats, including banner, interstitial, native, and rewarded video ads. We’ve been piloting this SDK with several key customers, such as Sua Música, the largest music platform for independent artists in Latin America, and we’re now ready to open the Google Mobile Ads for Flutter SDK for broader adoption.

Google Mobile Ads SDK for Flutter

We’re also announcing updates to our Flutter plug-ins for several core Firebase services: Authentication, Cloud Firestore, Cloud Functions, Cloud Messaging, Cloud Storage, and Crashlytics, including support for sound null safety and an overhaul of the Cloud Messaging package.

Dart: The secret sauce behind Flutter

As we’ve noted, Flutter 2 is portable to many different platforms and form factors. The easy transition to supporting web, desktop, and embedded is thanks in large part to Dart, Google’s programming language that is optimized for multiplatform development.

Dart combines a unique set of capabilities for building apps:

  • No-surprise portability, with compilers that generate high-performance Intel and ARM machine code for mobile and desktop, as well as tightly optimized JavaScript output for the web. The same Flutter framework source code compiles to all these targets.
  • Iterative development with stateful hot reload on desktop and mobile, as well as language constructs designed for the asynchronous, concurrent patterns of modern UI programming.
  • Google-class performance across all of these platforms, with sound null safety guaranteeing null constraints at runtime as well as during development.

There’s no other language that combines all these capabilities; perhaps this is why Dart is one of the fastest growing languages on GitHub.

Dart 2.12, available today, is our largest release since 2.0, with support for sound null safety. Sound null safety has the potential to eradicate dreaded null reference exceptions, offering guarantees at development and runtime that types can only contain null values if the developer expressly chooses. Best of all, this feature isn’t a breaking change: you can incrementally add it to your code at your own pace, with migration tooling available to help you when you’re ready.

Today’s update also includes a stable implementation of FFI, allowing you to write high-performance code that interoperates with C-based APIs; new integrated developer and profiler tooling written with Flutter; and a number of performance and size improvements that further upgrade your code for no cost other than a recompile. For more information, check out the dedicated Dart 2.12 announcement blog post.

Flutter 2: Available now

There’s far more to say about Flutter 2 than we can include in this article. In fact, the raw list of pull requests merged is a 200 page document! Head over to the separate technical blog on Flutter 2 for more information about the many new features and performance improvements that we think will please existing Flutter developers, and download it today.

image of companies using Flutter 2

We also have a major new sample that showcases everything we just mentioned, built in collaboration with gskinner, an award-winning design team based in Edmonton, Canada. Flutter Folio is a scrapbooking app that is designed for all your devices. The small-screen experience is designed for capturing content; larger screens support editing with desktop- and tablet-specific idioms; and the web experience is tailored for sharing. All these tailored experiences share the same codebase, which is open source and available for you to peruse.

Flutter Folio

If you haven’t yet tried Flutter, we think you’ll find it to be a major upgrade for your app development experience. In Flutter, we’re offering an open source toolkit for building beautiful and fast apps that target mobile, desktop, web, and embedded devices from a single codebase, built both to solve Google’s demanding needs and those of our customers.

Flutter is free and open source. We’re excited to see what you build with Flutter 2!