Author Archives: Google Developers

Now in Developer Preview: Create Spaces and Add Members with the Google Chat API

Posted by Mike Rhemtulla, Product Manager & Charles Maxson, Developer Advocate

The Google Chat API updates are in developer preview. To use the API, developers can apply for access through our Google Workspace Developer Preview Program.

In Google Chat, Spaces serve as a central place for team collaboration—instead of starting an email chain or scheduling a meeting, teams can move conversations and collaboration into a space, giving everybody the ability to stay connected, reference team or project info and revisit work asynchronously.

Programmatically create and populate Google Chat spaces

We are pleased to announce that you can programmatically create new Spaces and add members on behalf of users, through the Google Workspace Developer Preview Program via the Google Chat API.

These latest additions to the Chat API unlock some sought after scenarios for developers looking to add new dimensions to how they can leverage Chat. For example, organizations that need to create Spaces based on various business needs will now be able to do so programmatically. This will open up the door for Chat solutions that can build out Spaces modeled to represent new teams, projects, working groups, or whatever the specific use case may be that can benefit from automatically creating new Spaces.

Coming soon, example from an early developer preview partner

One of our developer preview partners, PagerDuty, is already leveraging the API as part of their upcoming release of PagerDuty for Google Chat. The app will allow users of their incident management solution to take quick actions around an incident with the right team members needed. PagerDuty for Chat will allow the incident team to isolate and focus on the problem at hand without being distracted by having to set up a new space, or further distract any folks in the current space who aren’t a part of the resolution team for a specific incident. All of this will be done seamlessly through PagerDuty for Chat as part of the natural flow of working with Google Chat.

Example of how a Chat app with the new APIs can enable users to easily create new Spaces and add members to an incident.

Learn more and get started

As you can imagine, there are many use cases that show off the potential of what you can build with the Chat API and the new Create methods. Whether it’s creating Spaces with specified members or extending Chat apps that spawn off new collaboration Spaces for use with help desk, HR, sales, customer support or any endless number of scenarios, we encourage you to explore what you can do today.

How to get started:



Now in Developer Preview: Create Spaces and Add Members with the Google Chat API

Posted by Mike Rhemtulla, Product Manager & Charles Maxson, Developer Advocate

The Google Chat API updates are in developer preview. To use the API, developers can apply for access through our Google Workspace Developer Preview Program.

In Google Chat, Spaces serve as a central place for team collaboration—instead of starting an email chain or scheduling a meeting, teams can move conversations and collaboration into a space, giving everybody the ability to stay connected, reference team or project info and revisit work asynchronously.

Programmatically create and populate Google Chat spaces

We are pleased to announce that you can programmatically create new Spaces and add members on behalf of users, through the Google Workspace Developer Preview Program via the Google Chat API.

These latest additions to the Chat API unlock some sought after scenarios for developers looking to add new dimensions to how they can leverage Chat. For example, organizations that need to create Spaces based on various business needs will now be able to do so programmatically. This will open up the door for Chat solutions that can build out Spaces modeled to represent new teams, projects, working groups, or whatever the specific use case may be that can benefit from automatically creating new Spaces.

Coming soon, example from an early developer preview partner

One of our developer preview partners, PagerDuty, is already leveraging the API as part of their upcoming release of PagerDuty for Google Chat. The app will allow users of their incident management solution to take quick actions around an incident with the right team members needed. PagerDuty for Chat will allow the incident team to isolate and focus on the problem at hand without being distracted by having to set up a new space, or further distract any folks in the current space who aren’t a part of the resolution team for a specific incident. All of this will be done seamlessly through PagerDuty for Chat as part of the natural flow of working with Google Chat.

Example of how a Chat app with the new APIs can enable users to easily create new Spaces and add members to an incident.

Learn more and get started

As you can imagine, there are many use cases that show off the potential of what you can build with the Chat API and the new Create methods. Whether it’s creating Spaces with specified members or extending Chat apps that spawn off new collaboration Spaces for use with help desk, HR, sales, customer support or any endless number of scenarios, we encourage you to explore what you can do today.

How to get started:



Coral, Google’s platform for Edge AI, chooses ASUS as OEM partner for global scale

We launched Coral in 2019 with a mission to make edge AI powerful, private, and efficient, and also accessible to a wide variety of customers with affordable tools that reliably go from prototype to production. In these first few years, we’ve seen a strong growth in demand for our products across industries and geographies, and with that, a growing need for worldwide availability and support.

That’s why we're pleased to announce that we have signed an agreement with ASUS IoT, to help scale our manufacturing, distribution and support. With decades of experience in electronics manufacturing at a global scale, ASUS IoT will provide Coral with the resources to meet our growth demands while we continue to develop new products for edge computing.

ASUS IoT is a sub-brand of ASUS dedicated to the creation of solutions in the fields of AI and the internet of things (IoT). Their mission is to become a trusted provider of embedded systems and the wider AI and IoT ecosystem. ASUS IoT strives to deliver best-in-class products and services across diverse vertical markets, and to partner with customers in the development of fully-integrated and rapid-to-market applications that drive efficiency – providing convenient, efficient, and secure living and working environments for people everywhere.

ASUS IoT already has a long-standing history of collaboration with Coral, being the first partner to release a product using the Coral SoM when they launched the Tinker Edge T development board. ASUS IoT has also integrated Coral accelerators into their enterprise class intelligent edge computers and was the first to release a multi Edge TPU device with the award winning AI Accelerator PCIe Card. Because we have this history of collaboration, we know they share our strong commitment to new innovation in edge computing.

ASUS IoT also has an established manufacturing and distribution processes, and a strong reputation in enterprise-level sales and support. So we're excited to work with them to enable scale and long-term availability for Coral products.

With this agreement, the Coral brand and user experience will not change, as Google will maintain ownership of the brand and product portfolio. The Coral team will continue to work with our customers on partnership initiatives and case studies through our Coral Partnership Program. Those interested in joining our partner ecosystem can visit our website to learn more and apply.

Coral.ai will remain the home for all product information and documentation, and in the coming months ASUS IoT will become the primary channel for sales, distribution and support. With this partnership, our customers will gain access to dedicated teams for sales and technical support managed by ASUS IoT.

ASUS IoT will be working to expand the distribution network to make Coral available in more countries. Distributors interested in carrying Coral products will be able to contact ASUS IoT for consideration.

We continue to be impressed by the innovative ways in which our customers use Coral to explore new AI-driven solutions. And now with ASUS IoT bringing expanded sales, support and resources for long-term availability, our Coral team will continue to focus on building the next generation of privacy-preserving features and tools for neural computing at the edge.

We look forward to the continued growth of the Coral platform as it flourishes and we are excited to have ASUS IoT join us on our journey.

Building better products for new internet users

Since the launch of Google’s Next Billion Users (NBU) initiative in 2015, nearly 3 billion people worldwide came online for the very first time. In the next four years, we expect another 1.2 billion new internet users, and building for and with these users allows us to build better for the rest of the world.

For this year’s I/O, the NBU team has created sessions that will showcase how organizations can address representation bias in data, learn how new users experience the web, and understand Africa’s fast-growing developer ecosystem to drive digital inclusion and equity in the world around us.

We invite you to join these developers sessions and hear perspectives on how to build for the next billion users. Together, we can make technology helpful, relevant, and inclusive for people new to the internet.

Session: Building for everyone: the importance of representative data

Mike Knapp, Hannah Highfill and Emila Yang from Google’s Next Billion Users team, in partnership with Ben Hutchinson from Google’s Responsible AI team, will be leading a session on how to crowdsource data to build more inclusive products.

Data gathering is often the most overlooked aspect of AI, yet the data used for machine learning directly impacts a project’s success and lasting potential. Many organizations—Google included—struggle to gather the right datasets required to build inclusively and equitably for the next billion users. “We are going to talk about a very experimental product and solution to building more inclusive technology,” says Knapp of his session. “Google is testing a paid crowdsourcing app [Task Mate] to better serve underrepresented communities. This tool enables developers to reach ‘crowds’ in previously underrepresented regions. It is an incredible step forward in the mission to create more inclusive technology.”

Bookmark this session to your I/O developer profile.

Session: What we can learn from the internet’s newest users

“The first impression that your product makes matters,” says Nicole Naurath, Sr. UX Researcher - Next Billion Users at Google. “It can either spark curiosity and engagement, or confuse your audience.”

Everyday, thousands of people are coming online for the first time. Their experience can be directly impacted by how familiar they are with technology. People with limited digital experience, or novice internet users, experience the web differently and sometimes developers are not used to building for them. Design elements such as images, icons, and colors play a key role in digital experience. If images are not relatable, icons are irrelevant, and colors are not grounded in cultural context, the experience can confuse anyone, especially someone new to the internet.

Nicole Naurath and Neha Malhotra, from Google’s Next Billion Users team, will be leading the session on what we can learn from the internet’s newest users, how users experience the web and share a framework for evaluating products that work for novice internet users.”

Bookmark this session to your I/O developer profile.

Session: Africa’s booming developer ecosystem

Software developers are the catalyst for digital transformation in Africa. They empower local communities, spark growth for businesses, and drive innovation in a continent which more than 1.3 billion people call home. Demand for African developers reached an all-time high last year, driven by both local and remote opportunities, and is growing even faster than the continent's developer population.

Andy Volk and John Kimani from the Developer and Startup Ecosystem team in Sub-Saharan Africa will share findings from the Africa Developer Ecosystem 2021 report.

In their words, “This session is for anyone who wants to find out more about how African developers are building for the world or who is curious to find out more about this fast-growing opportunity on the continent. We are presenting trends, case studies and new research from Google and its partners to illustrate how people and organizations are coming together to support the rapid growth of the developer ecosystem.”

Bookmark this session to your I/O developer profile.

To learn more about Google’s Next Billion Users initiative, visit nextbillionusers.google

What is black and white and read all over?

Noto emoji, a new black and white emoji font with less color, may gain us more in the long run

Posted by Jennifer Daniel, Creative Director - Emoji & Expression

Seven different black and white emojis in 5 collumns: cat, donut, chicken, flower, sheep, mouse, donut, doll 

In 1999 — back when Snake ? was the best thing about your phone ? — there were three phone carriers in Japan ? . On these phones were tiny, beautiful pictures called emoji (meaning “picture” and “character” in Japanese ?). These 176 images were very simple — think 8-bit tech — and as a result were exquisitely abstract and tremendously useful when texting Twenty years later ??????????????, emoji are a global phenomenon ?. Now, our phones have fancy retina screens and somewhere along the way an important part of what made emoji so handy was left by the wayside: their simplicity. That’s why we’ve created a new emoji font: a monochrome Noto Emoji (a black and white companion to Noto Emoji Color).

Noto Emoji works like any other font you might use: You can change any character's color, size and weight. Download it and give it a whirl.

Noto Emoji webpage

What’s old is new again ?

Over time, emoji have become more detailed. Instead of representing broad concepts there has been a trend to design emoji to be hyper realistic. This wouldn't be a problem except skeuomorphism's specificity has resulted in the exclusion of other similar concepts in your keyboard. Today we have "?" … but what about other types of dance? Hula dancing? Belly dancing? Salsa dancing? Boogie woogie? By removing as much detail as possible, emoji could be more flexible, representing the idea of something instead of specifically what is in front of you (that … is what your camera is for ?).

Example of Noto Emoji cycling through different customizations like font color, size, and variable weights 

We also want to make sure emoji keep up with platform technology. We’ve got dark mode … we’ve got light mode … and now you can change the color of your emoji font so it can operate with the same dynamism as your operating system. Noto Emoji is also a variable font — opt for a "light" grade if it appears small ? or "bold" if you want them to have some weight. ? .

When translating our color emoji to black and white: some details can be removed, others will need to be completely redrawn. 

New designs, fewer details

To design something simple seems like it would be … well, simple … but it's deceptively complex ?

At first the approach seemed obvious — simply redraw the Noto Emoji Color designs in black and white. They are iconic, they will be legible. Done deal. Easy peasy, lemon squeezy. Not so fast. The removal of color is no trivial task. Take for example: Flags.

four flags in color - Sweeden, Denmark, USA, Brazil. Then four flags in black and white - SE, DK, US, BR.

You can't simply convert flags into black and white. You wouldn't be able to tell the difference between Finland and Sweden. You could redraw the flags but that puts them at risk of being incorrect. Instead, we leveraged the ISO's country codes. These sequences of letters are unique and represent each country. As a result, black and white flags have a much more contemporary aesthetic — kind of like bumper stickers ?.

Let's also take a look at the process involved to redesign the people emoji. For some characters, color is baked into the concept (like skin tone or hair color). It simply didn’t look right to replace color with hash marks or polka dots. And that my dear is how the blobs came back. Say hello (again) to our little friends.

Early sketch as we explored black and white designs

Likable. Nostalgic. Relatable without maintaining a distinction between genders. Google’s blob emoji were really something special. Cute, squishy, and remarkably friendly. We were able to bring back a little bit of what made them special while simultaneously discarding the parts that weren’t working. Most notably, the blobs’ facial expressions were wildly inconsistent but that was very easily fixed in black and white mode. It’s important emoji work cross-platform. The real world is not black and white but in emoji land we can finally have our favorite little dancer back ?.

So here we are today, dancing into the future with our favorite new emoji font. We can't wait to see how you use it. Visit Google Fonts to download or embed onto your website. Happy emoji-ing! ????

How can App Engine users take advantage of Cloud Functions?

Posted by Wesley Chun (@wescpy), Developer Advocate, Google Cloud

Introduction

Recently, we discussed containerizing App Engine apps for Cloud Run, with or without Docker. But what about Cloud Functions… can App Engine users take advantage of that platform somehow? Back in the day, App Engine was always the right decision, because it was the only option. With Cloud Functions and Cloud Run joining in the serverless product suite, that's no longer the case.

Back when App Engine was the only choice, it was selected to host small, single-function apps. Yes, when it was the only option. Other developers have created huge monolithic apps for App Engine as well… because it was also the only option. Fast forward to today where code follows more service-oriented or event-driven architectures. Small apps can be moved to Cloud Functions to simplify the code and deployments while large apps could be split into smaller components, each running on Cloud Functions.

Refactoring App Engine apps for Cloud Functions

Small, single-function apps can be seen as a microservice, an API endpoint "that does something," or serve some utility likely called as a result of some event in a larger multi-tiered application, say to update a database row or send a customer email message. App Engine apps require some kind web framework and routing mechanism while Cloud Function equivalents can be freed from much of those requirements. Refactoring these types of App Engine apps for Cloud Functions will like require less overhead, helps ease maintenance, and allow for common components to be shared across applications.

Large, monolithic applications are often made up of multiple pieces of functionality bundled together in one big package, such as requisitioning a new piece of equipment, opening a customer order, authenticating users, processing payments, performing administrative tasks, and so on. By breaking this monolith up into multiple microservices into individual functions, each component can then be reused in other apps, maintenance is eased because software bugs will identify code closer to their root origins, and developers won't step on each others' toes.

Migration to Cloud Functions

In this latest episode of Serverless Migration Station, a Serverless Expeditions mini-series focused on modernizing serverless apps, we take a closer look at this product crossover, covering how to migrate App Engine code to Cloud Functions. There are several steps you need to take to prepare your code for Cloud Functions:

  • Divest from legacy App Engine "bundled services," e.g., Datastore, Taskqueue, Memcache, Blobstore, etc.
  • Cloud Functions supports modern runtimes; upgrade to Python 3, Java 11, or PHP 7
  • If your app is a monolith, break it up into multiple independent functions. (You can also keep a monolith together and containerize it for Cloud Run as an alternative.)
  • Make appropriate application updates to support Cloud Functions

    The first three bullets are outside the scope of this video and its codelab, so we'll focus on the last one. The changes needed for your app include the following:

    1. Remove unneeded and/or unsupported configuration
    2. Remove use of the web framework and supporting routing code
    3. For each of your functions, assign an appropriate name and install the request object it will receive when it is called.

    Regarding the last point, note that you can have multiple "endpoints" coming into a single function which processes the request path, calling other functions to handle those routes. If you have many functions in your app, separate functions for every endpoint becomes unwieldy; if large enough, your app may be more suited for Cloud Run. The sample app in this video and corresponding code sample only has one function, so having a single endpoint for that function works perfectly fine here.

    This migration series focuses on our earliest users, starting with Python 2. Regarding the first point, the app.yaml file is deleted. Next, almost all Flask resources are removed except for the template renderer (the app still needs to output the same HTML as the original App Engine app). All app routes are removed, and there's no instantiation of the Flask app object. Finally for the last step, the main function is renamed more appropriately to visitme() along with a request object parameter.

    This "migration module" starts with the (Python 3 version of the) Module 2 sample app, applies the steps above, and arrives at the migrated Module 11 app. Implementing those required changes is illustrated by this code "diff:"

    Migration of sample app to Cloud Functions

    Next steps

    If you're interested in trying this migration on your own, feel free to try the corresponding codelab which leads you step-by-step through this exercise and use the video for additional guidance.

    All migration modules, their videos (when published), codelab tutorials, START and FINISH code, etc., can be found in the migration repo. We hope to also one day cover other legacy runtimes like Java 8 as well as content for the next-generation Cloud Functions service, so stay tuned. If you're curious whether it's possible to write apps that can run on App Engine, Cloud Functions, or Cloud Run with no code changes at all, the answer is yes. Hope this content is useful for your consideration when modernizing your own serverless applications!

How GDSC students are using their skills to support communities in Ukraine

Posted by Laura Cincera, Program Manager Google Developer Student Clubs, Europe

Revealing character in moments of crisis

The conflict in Ukraine is a humanitarian crisis that presents complex challenges. During this time of uncertainty, communities of student developers are demonstrating extraordinary leadership skills and empathy as they come together to support those affected by the ongoing situation. Student Patricijia Čerkaitė and her Google Developer Student Club (GDSC) community at the Eindhoven University of Technology in the Netherlands organized Code4Ukraine, an international hackathon that brought diverse groups of over 80 student developers together on March 3-4, 2022, to develop technology solutions to support people affected by the conflict in Ukraine.

Even far from the conflict in the Netherlands, they felt compelled to make an impact. “I have relatives in Ukraine; they live in Crimea,” says Patricijia. “In my childhood, I used to spend summer holidays there, eating ice cream and swimming in the Black Sea.”

Patricijia sitting at desk in black chair looking back and smiling

Patricijia working on the details for Code4Ukraine.

Rushing to help others in need with technology

Time was of the essence. The organizing team in Eindhoven contacted other students, connected with communities near and far, and sprang into action. The team invited Ukrainian Google Developer Expert Artem Nikulchenko to share his technology knowledge and first-hand experience of what is happening in his country. Students discussed issues faced by Ukrainians, reviewed problems citizens faced, and ideated around technology-centric solutions. Feelings of exasperation, frustration, and most importantly, hope became lines of code. Together, students built solutions to answer the call: Code4Ukraine.

Blue and yellow emblem that says Code 4 Ukraine

Then, gradually, through a collaborative effort, problem solving, and hours of hard work, the winners of the Code4Ukraine Hackathon emerged: Medicine Warriors, a project built by a diverse, cross-cultural group of undergraduate students and IT professionals from Ukraine, Poland, and Georgia, aiming to address the insulin shortage in Ukraine. The project gathers publicly available data from Ukrainian government notices on insulin availability across Ukraine and presents it in an easily readable way.

Photograph of the Medicine Warriors application design

Photograph of the Medicine Warriors application design

Helping: at the heart of their community

One member of the winning team is the GDSC chapter lead at the National Technical University of Ukraine Kyiv Polytechnic Institute, Ekaterina Gricaenko. “In Ukraine, there is a saying: ‘друг пізнається в біді,’ which translates to, ‘you will know who your friends are when the rough times arrive,’” says Ekaterina. “And now, I can say that the GDSC community is definitely on my family list.”

Photograph of Ekaterina Gricaenko, GDSC Lead

Ekaterina Gricaenko, GDSC Lead, Kyiv Polytechnic Institute

The Code4Ukraine initiative's goal of bringing others together to make an impact offers a prime example of what the Google Developer Student Clubs (GDSC) program aims to achieve: empowering student developers in universities to impact their communities through technology.

Reflecting on her experience leading the Kyiv GDSC chapter, Ekaterina says, “I started my journey with GDSC as a Core Team member, and during that time, I fell in love with our community, goals, and key concepts. Then, I decided to become a lead, to share my enthusiasm and support students as they pursue their professional dreams.

The Kyiv GDSC has organized over 18 workshops, written over 200 articles, run multiple study groups, and reached over a thousand followers on social media. “It’s incredible to realize how far we have come,” Ekaterina says.

A visual collage displays multiple activities organized by GDSC KPI

A visual collage displays multiple activities organized by GDSC KPI, led by Ekaterina Gricaenko.

Getting involved in your community

Through efforts like Code4Ukraine and other inspiring solutions like the 2022 Solution Challenge, students globally are giving communities hope as they tackle challenges and propose technical solutions. By joining a GDSC, students can grow their knowledge in a peer-to-peer learning environment and put theory into practice by building projects that solve for community problems and make a significant impact.

Photo of students in class in the upper right hand corner with a sign in the center that says Become a leader at your university

Learn more about Google Developer Student Clubs

If you feel inspired to make a positive change through technology, applications for GDSC leads for the upcoming 2022-2023 academic year are now open. Students can apply at goo.gle/gdsc-leads. If you’re passionate about technology and are ready to use your skills to help your student developer community, then you should consider becoming a Google Developer Student Clubs Lead!

We encourage all interested students to apply here and submit their applications as soon as possible. The applications in Europe will be open until 31st May 2022.

GDE community highlight: Nishu Goel

Posted by Monika Janota, Community Manager

Red graphic image shows woman holding microphone on stage next to some gears and the GDE logo

Nishu Goel is a renowned web engineer from India, Google Developer Expert for Angular and web technologies, Microsoft Most Valuable Professional. She’s the author of Step by Step Angular Routing (BPB, 2019) and A Hands-on Guide to Angular (Educative, 2021) as well as the author of Web Almanac 2021 JavaScript chapter. Nishu currently works at epilot GmbH as a full stack engineer. She told us about her community involvement, career plans and the best ways to learn web development.

Monika: Let’s start with your story. What inspired you to become a developer and take on an active role within dev communities?

Nishu: I got my bachelor’s degree in computer science, we studied data structures, and that’s where the interest in programming started. During the third year of engineering, a connection with the developer community was established through my participation in the Microsoft Imagine Cup Nationals competition where we presented solutions through code. The idea of the application we built was to bring educational opportunities to local students, especially girls. I met some very inspiring people, both contestants and organizers in this journey.

In 2018, my professional career took off, and I started working with Angular. Angular became the primary technology that connected me to the GDE program. Around the same time, I started writing blog posts and creating content around the subject I was working on and learning . Dhananjay Kumar helped me get started on this journey and ensured to keep me on track. My first articles tackled the basics of Angular. Soon after I started speaking at events-the first one being ngNepal, Nepal’s Angular Conference. This led to more speaking invitations about Angular and web technologies.

GDE Nishu Goel stands in the middle of the photo with 4 men on her left and 4 men on her right. They all look into the camera with half smiles

Monika: What’s your professional experience technology-wise?

Nishu: It was all about Angular and web components for the first two years. I was using Angular for building the web, but soon I decided to go beyond that and explore other fields. I didn’t want to limit myself in case I’d have to switch projects. That’s how I started creating web components in Angular to use in other frameworks.

The first thing I did was to create web components using Angular. I published it to npm and used it as a demo in a React project. I’ve discussed this during some of my talks and presentations later. My next job required using React and Typescript. Now, because I was working with React, I wasn’t just using one framework anymore, but the web in general. At that moment I learned a lot about the web, especially web performance. That’s when I had to start thinking about the Largest Contenful Paint (LCP) or First Contentful Paint (FCP), which means how much time it will take your application to load or what’s going to be the maximum time for the page to render. I have been working towards choosing best practices and an improved performance of the applications.

Because of this interest in web performance, I got involved in the Web Almanac and wrote the JavaScript chapter. Web Almanac is an annual report on the state of the web in general — it tells us how people are using different features. Last year 8.6 million websites were screened, the data was analyzed and presented in the report. The report includes statistics like the usage of the async and defer attributes in a <script> element. How many websites are using them correctly, how many are not using that at all, and how many improved those compared to 2020. The last Web Almanac report mentioned that around 35% of websites used two attributes on the same script, which was an anti-pattern, decreasing the performance. This was pointed out last year, and this year we tried to see if the situation improved. I also spoke at ngConf and Reliable Dev Summit, where I focused on the performance of the web.

Close up of the front of a book titled 2021 Web Almanac, HTTP Archive's Annual state of the web report

Monika: You’re also very much involved in giving back to the community. Lately you’ve been volunteering with a Ugandan NGO YIYA — how did it start and what was the main point of that cooperation?

Nishu: It started with the GDE team informing us about the volunteering opportunity with YIYA. The Ugandan NGO was looking for engineers to help them with either the content preparation or technical features. The program aims to empower school-aged children in Uganda and offer them education opportunities using the technologies available locally — not computers or textbooks, but rather basic keypad phones and radios. The children would dial a certain number and receive a set of information, dial another one for more insights, and so on. It became even more useful during the pandemic.

Since I’ve always been involved with the community and sustainable development goals, I decided to reach out. After a meeting with the YIYA team, I offered my help with the Python scripts or any bugs they came up with, any issues with the portal. We worked together for a brief amount of time.

Monika: What are your plans for 2022? Is there anything you’re focusing on in particular?

Nishu: I’m switching jobs and moving to another country. I’ll be working on the web in general, improving the site performance, and also on the backend, using Golang. I’ll continue to zero in on the web performance area since it’s very interesting and complex, and there’s a lot to understand and optimize. Even now, after dedicating a lot of my time to that, there’s still so much to learn. For example, I’d love to understand how using a CDN for my image resources would help me make my app even faster. I want to become THE expert of web performance — I’m gradually getting there, I like to believe :)

Monika: You’ve mentioned starting to write at a point when you were not an expert, you were just writing what you were learning. What would your advice be to new developers coming through and feeling they don’t have anything to share?

Nishu: That’s exactly how I felt when I started writing. I thought that maybe I should not put this out? Maybe it’s just wrong? I was worried my writing was not going to help the readers. But the important thing was that my writing was helping me. I would forget things after some time and then come back to something I wrote earlier. Writing things down is a great idea.

Close up of the front of a book titled Step-by-step Angular Routing, authored by Nishu Goel

So I would suggest everyone — just write, at whatever stage. Even if you’ve only finished one part of a course you’re going through — you’re learning by writing it down. A piece of information that you got to know at some point may be useful to others who don’t know that yet. You don’t need to be an expert. Writing will help you. And anyone, at any stage of their career.

Monika: It’s best to follow people who just learned something because they know all the things they had to figure out. Once you’re an expert, it’s hard to remember what it was like when you were new. And any advice for someone who’s just getting into web development?

Nishu: Many people ask which framework they should choose when they’re starting, but I think that’s not the right question. Whatever we are learning at any point should be useful at a later stage as well. I would advise anyone to drop the limitations and start with HTML or JavaScript — that’s going to be profitable in the future.

And then take any opportunity that comes your way. This happened to me when I stumbled upon information about the Web Almanac looking for authors. I just thought, “oh, this is interesting, this may help everyone with the performance side of things”. That’s how I became a content lead for the JavaScript chapter, and I’ve spent six months writing it. So I think it’s just about grabbing the opportunities and working hard.

Monika: Do you have any predictions or ideas about the future of web technology in general? What’s going to be the next hot topic? What’s going to be growing fast?

Nishu: I love the fact that we’re able to run servers within browsers now, this is a great advancement. For example, running Node.js from the browser has been introduced lately, meanwhile in the past we could not run anything without having Node.js installed in our systems. Now we can do anything from the browser. This is a huge step further in the web ecosystem. And the OMT — Off the Main Thread. Working on the threads is going to be much improved as well. Web Assembly is advancing and enables developers to do that, and I think that is the future of the web ecosystem.

Exploring accessibility through community with Pescara’s Google Developer Group

Posted by Alessandro Palmieri, Regional Lead, Europe, Google Developer Groups

Blue banner with text that reads Exploring accessibility through community in GDG Pescara. Includes an image of two men giving standing in front of a projector screen

You never quite know exactly how someone else experiences the world - but making an effort to connect and understand others remains a hallmark of a strong community. In November 2019, Google Developer Group Pescara invited backend developer Filippo Tenaglia to speak at a local DevFest program, as part of the global developer event. The group turned the lights down and connected Filippo’s PC to the room’s speakers, and Filippo told attendees about his life as a visually impaired developer. He let them hear what he hears when he works with the code and let them hear the different speech synthesizers he uses: the one he uses to browse on the Internet, as well as the one that he uses to read source code, that reads any punctuation character.

One attendee asked Filippo how many lines of code he’s able to remember without seeing them, and Filippo answered, “I have to remember the whole block. I can’t see the code, so I memorize it. Usually, I can remember 20, even 30 lines of code.” The attendee replied, “you’re a dragon,” alluding to folklore that the mystical creatures have strong memories. Filippo laughed, and his colleague, Gregorio Palama, leader of GDG Pescara, says he got goosebumps.

Gregorio met Filippo when the two worked together at an IT consultancy. Filippo brought his guide dog Lila to work and impressed Gregario with his remarkable ability to memorize 20-30 lines of code at a time. Filippo used assistive technology, like speech synthesizers and screen readers, as well as his extraordinary memorization ability, to code. Through his friendship with Filippo, Gregorio came to understand the importance of accessibility.

Gregorio uses his Google Developer Group (GDG) Pescara community, in a small city in the central part of Italy, to advocate for people with disabilities and educate other developers about the technical tools needed to make programming, websites, and software truly accessible for the visually impaired.

Leveraging tools to stay connected

Developers with visual impairments similar to Fillipo can leverage assistive technology in Chrome like screen readers and magnifiers. When browsing the web using various accessibility extensions, there are ways for people with visual impairments to make the browser more accessible, without installing external software.

Through their friendship, Filippo continued to educate Gregorio about accessibility when he called Gregorio to volunteer for more GDG Pescara events in Italy. Filippo explained that he was calling because the group’s community messaging platform and application, where they post calls for volunteers and share event details, isn’t accessible, so Fialippo can’t see the posted information and needs to use a different method of staying up to date on GDG activities.

Using community to share the importance of accessibility

GDG Pescara plans to host a DevFest focused accessibility and other selected topics. The organizers are thinking of having a hackathon that could expose developers to Google’s accessibility tools, like the ChromeVox screen reader, which developers can use to test the accessibility of their web apps, or Chrome’s documentation on designing accessible extensions. With this community-led programming, Gregorio and his team hope to inspire other developers to build new accessibility tools, like a better community platform.

Through his friendship with Filippo, Gregorio learned the importance of accessibility. Now, he is using his GDG community and a suite of tools to help educate about accessibility and advocate for people with disabilities.

If you’re inspired to lead fellow developers into an exploration of accessibility in technology, we encourage you to join a GDG near you, or consider leading a GDG chapter. You can learn more about Google’s accessibility initiatives and developer tools here and check out an upcoming GDG community accessibility awareness event here.

Machine Learning Communities: Q1 ‘22 highlights and achievements

Posted by Nari Yoon, Hee Jung, DevRel Community Manager / Soonson Kwon, DevRel Program Manager

Let’s explore highlights and accomplishments of vast Google Machine Learning communities over the first quarter of the year! We are enthusiastic and grateful about all the activities that the communities across the globe do. Here are the highlights!

ML Ecosystem Campaign Highlights

ML Olympiad is an associated Kaggle Community Competitions hosted by Machine Learning Google Developers Experts (ML GDEs) or TensorFlow User Groups (TFUGs) sponsored by Google. The first round was hosted from January to March, suggesting solving critical problems of our time. Competition highlights include Autism Prediction Challenge, Arabic_Poems, Hausa Sentiment Analysis, Quality Education, Good Health and Well Being. Thank you TFUG Saudi, New York, Guatemala, São Paulo, Pune, Mysuru, Chennai, Bauchi, Casablanca, Agadir, Ibadan, Abidjan, Malaysia and ML GDE Ruqiya Bin Safi, Vinicius Fernandes Caridá, Yogesh Kulkarni, Mohammed buallay, Sayed Ali Alkamel, Yannick Serge Obam, Elyes Manai, Thierno Ibrahima DIOP, Poo Kuan Hoong for hosting ML Olympiad!

Highlights and Achievements of ML Communities

TFUG organizer Ali Mustufa Shaikh (TFUG Mumbai) and Rishit Dagli won the TensorFlow Community Spotlight award (paper and code). This project was supported by provided Google Cloud credit.

ML GDE Sachin Kumar (Qatar) posted Build a retail virtual agent from scratch with Dialogflow CX - Ultimate Chatbot Tutorials. In this tutorial, you will learn how to build a chatbot and voice bot from scratch using Dialogflow CX, a Conversational AI Platform (CAIP) for building conversational UIs.

ML GDE Ngoc Ba (Vietnam) posted MTet: Multi-domain Translation for English and Vietnamese. This project is about how to collect high quality data and train a state-of-the-art neural machine translation model for Vietnamese. And it utilized Google Cloud TPU, Cloud Storage and related GCP products for faster training.

Kaggle announced the Google Open Source Prize early this year (Winners announcement page). In January, ML GDE Aakash Kumar Nain (India)’s Building models in JAX - Part1 (Stax) was awarded.

In February, ML GDE Victor Dibia (USA)’s notebook Signature Image Cleaning with Tensorflow 2.0 and ML GDE Sayak Paul (India) & Soumik Rakshit’s notebook gaugan-keras were awarded.

TFUG organizer Usha Rengaraju posted Variable Selection Networks (AI for Climate Change) and Probabilistic Bayesian Neural Networks using TensorFlow Probability notebooks on Kaggle. They both got gold medals, and she has become a Triple GrandMaster!

TFUG Chennai hosted the two events, Transformers - A Journey into attention and Intro to Deep Reinforcement Learning. Those events were planned for beginners. Events include introductory sessions explaining the transformers research papers and the basic concept of reinforcement learning.

ML GDE Margaret Maynard-Reid (USA), Nived P A, and Joel Shor posted Our Summer of Code Project on TF-GAN. This article describes enhancements made to the TensorFlow GAN library (TF-GAN) of the last summer.

ML GDE Aakash Nain (India) released a series of tutorials about building models in JAX. In the second tutorial, Aakash uses one of the most famous and most widely used high-level libraries for Jax to build a classifier. In the notebook, you will be taking a deep dive into Flax, too.

ML GDE Bhavesh Bhatt (India) built a model for braille to audio with 95% accuracy. He created a model that translates braille to text and audio, lending a helping hand to people with visual disabilities.

ML GDE Sayak Paul (India) recently wrote Publishing ConvNeXt Models on TensorFlow Hub. This is a contribution from the 30 versions of the model, ready for inference and transfer learning, with documentation and sample code. And he also posted First Steps in GSoC to encourage the fellow ML GDEs’ participation in Google Summer of Code (GSoC).

ML GDE Merve Noyan (Turkey) trained 40 models on keras.io/examples; built demos for them with Streamlit and Gradio. And those are currently being hosted here. She also held workshops entitled NLP workshop with TensorFlow for TFUG Delhi, TFUG Chennai, TFUG Hyderabad and TFUG Casablanca. It covered the basic to advanced topics in NLP right from Transformers till model hosting in Hugging Face, using TFX and TF Serve.