Tag Archives: Flutter

Celebrating Google Dev Library’s Women Contributors in AI/ML

Posted by Swathi Dharshna Subbaraj, Google Dev Library

Women have made remarkable progress in advancing AI/ML technology through their contributions to open source projects. They have developed and maintained tools, algorithms, and frameworks that enable researchers, developers, and businesses to create and implement cutting edge AI/ML solutions.

To celebrate those achievements, Google Dev Library has featured outstanding contributions from developers worldwide. It has also provided an opportunity to showcase contributions from women developers who are working on AI/ML projects. Read on to learn their projects and insights.

Contributors in Spotlight


Suzen Fylke

Suzen is a machine learning engineer with a passion for helping mission-driven and socially-minded companies leverage AI and data to drive impactful outcomes. With 3 years of experience at Twitter, Suzen developed platform tools that streamlined model development and deployment processes, allowing for faster iteration and improved efficiency. Sue recently shared her blog post titled "How to Visualize Custom TFX Artifacts With InteractiveContext" with Dev Library. Let's speak with Sue and learn more about her experience.

Headshot of Suzen Fylke, smiling

1.    Tell us more about your recent Dev Library submission on inspecting TFX artifactswith InteractiveContext and why you consider it invaluable for debugging TFX pipelines?
    One of my favorite things about TFX is being able to run pipeline steps individually and interactively inspect their results with InteractiveContext. I used to think you could only display standard artifacts with built-in visualizations, but, as it turns out, you can also use InteractiveContext with custom artifacts. Since I hadn't found any examples or documentation explaining how to display custom artifacts, I wrote a tutorial.


    2.    Can you walk me through your process for creating technical documentation for your projects to help other developers?   

    When I create technical documentation for work or open source projects, I do my best to follow the community's best practices and style guides and to center the reader. I think a lot about what readers can hope to learn or be able to do after reading the docs. I followed a similar approach when writing the tutorial I submitted.

    Most of my personal projects are active learning exercises. When I write about such projects, I focus much more on the process of building them than on the outcome. So, in addition to showing how they work, I describe what inspired me to create them, the challenges I encountered, and what's next for the project. I also include lots of links to resources I found helpful for understanding the tools and concepts I learned about.

    3.    What advice do you have for other women interested in developing open source AL/ML projects, and how can they get started? 

    I recommend contributing to communities you care about and projects you use and want to help improve. Create things using the project. Ask questions when documentation needs to be clarified. Report bugs when you encounter them. If you build something cool, demo it or write about it. If you find a problem you can fix, volunteer to do so. And if you get stuck or don't understand something, ask for help. I also recommend reading GitHub's "How to Contribute to Open Source" guide (https://opensource.guide/how-to-contribute/). My favorite takeaway is that open source projects are more than code and that there are many different ways to contribute based on your interests.

    4.    Your Dev Library author profile bio states that you’re exploring how to “make learning languages fun and approachable.” Can you walk me through that process? 
     
    This is aspirational and mainly a hobby right now. I love learning languages and learning how to learn languages. Languages are my "thing I can talk about for hours without getting bored." I don't actually have a process for this. Instead, I do a lot of exploring and experimenting and let my curiosity guide me. Sometimes this involves reading linguistics textbooks, trying different language-learning apps, contributing to projects like Common Voice, or learning how to use libraries like spaCy.

    5.    How do you see the field of open source AI/ML development evolving in the coming years, and how are you preparing for these changes?
    I see the continued development of tools and platforms aimed at democratizing machine learning. I hope this will enable people to meaningfully engage with the models and AI-powered products they use and better understand how they work. I also hope this will lead to more grassroots participatory research communities like Masakhane and encourage people without ML or software engineering backgrounds to create and contribute to open source projects.

    Aqsa is a passionate machine learning engineer with a strong curiosity for technology and a desire to share ideas with others. She has practical experience in diverse projects, including footfall forecasting, cataract detection, augmented reality, object detection, and recommender systems. Aqsa shared her blog post titled "Callbacks in TensorFlow — Customize the Behavior of your training" with Dev Library. Let's speak with Aqsa and learn more about her experience.

    Photo of Aqsa Kausar holding a microphone
    1.    Being Pakistan’s first Google Developer Expert (GDE), how do you approach building inclusive and diverse communities around you?
      As a Google Developer Expert (GDE), my responsibility is to help improve the tech community through inclusive and diverse events, workshops, and mentorship. With support from Google, fellow GDEs, and Google Developer Groups, we aim to create accessible opportunities for everyone, regardless of their background or experience level. As a speaker, I share my knowledge in ML with diverse audiences and offer mentorship to underrepresented individuals in tech, including women, minorities, and individuals from different backgrounds. I provide guidance on educational and career opportunities and connect people with resources, catering to as many as I can through various means of communication.

      2.     How do you approach collaborating with other developers on open source AI/ML projects, and what are some best practices you follow to ensure success?

      In our GDE community, we have active open source contributors who collaborate in groups for tutorials, research papers, and more. Collaboration is encouraged, and Googlers sometimes lead open source projects with GDEs. When you express interest, developers are open to working together. To foster a positive culture, we emphasize value and respect, clear goals, manageable tasks, communication channels, open communication, constructive feedback, and celebrating milestones. Successful collaboration hinges on valuing each other's time and skills.

      3.    How do you balance the need for technical rigor with the need for usability and accessibility in your open source projects?

      Understanding your audience and their needs is crucial to strike the right balance between technical rigor and usability. Simplify technical concepts for non-technical audiences and focus on practical applications. In open source projects, you have more flexibility, but in workshops or training, choose tools and technologies suitable for your audience. For beginners, use simpler language and interactive demos. For intermediate or advanced audiences, go deeper into technical details with coding snippets and complex concepts.

      4.    Why do you think it is important for technical writers to revise your content or projects regularly? Do you think it’s important that every tech writer or open source maintainer follow this best practice?

      Technology is ever-changing, so technical writers need to revise content regularly to ensure accuracy. Feedback from the audience can help make it accessible and relevant. However, contributors may not always have time to update their work due to busy schedules. Nevertheless, tech blogs and projects still provide a valuable kickstart for new developers, who can contribute with updates or follow-up blogs.

      5.    Can you tell me about a project you've worked on that you're particularly proud of, and what impact it has had on the open source community?

      I have been part of impactful initiatives such as Google Women Developer Academy, where I was a mentor for their pilot. The program helps women in tech improve their communication skills and prepares them for showcasing their talents, boosting their confidence. I also collaborated with fellow Google Developer Experts (GDEs) during the COVID-19 pandemic to create an open source course called "ML for Rookies," which simplifies machine learning concepts. Currently, I am working on a Cloud AI project supported by GCP and have started an open source "Cloud Playground" repo to make cloud-ai learning more accessible.

      Margaret, an ML Google Developer Expert (GDE) since 2018, is an ML research engineer who applies AI/ML to real world applications ranging from climate change to art and design. With expertise in deep learning, computer vision, TensorFlow, and on-device ML, she often writes and speaks at conferences. Margaret has shared multiple projects in topics like TensorFlow Lite with Dev Library. Let's speak with Margaret and learn more about her experience.

      Photo of Margaret Maynard-Reid, smiling

      1.    Can you share the Google technologies you work with?  
       
      Some of the Google technologies I work with are TensorFlow, TensorFlow Lite, Keras, Android, MediaPipe, and ML Kit. 

      2.    How do you approach collaborating with other developers on open source projects, and what are some best practices you follow to ensure a successful collaboration? 

      I’ve collaborated with Googlers, ML GDEs, students and professionals in tech. Consistent communication and observing best practices, such as code check-in and code reviews, are helpful to ensure a successful collaboration. 

      3.    What is your development process like for creating and maintaining open source AI/ML projects, and how do you prioritize which projects to work on? 

      There is limited time so prioritization is super important. I like to showcase new technologies or areas where developers including myself may have challenges with. Aside from code and tutorials, I also like to share my knowledge with sketchnotes and visual illustrations. 

      4.    You have been sharing learning resources on TensorFlow Lite. What advice do you have for other women interested in developing open source projects, and how can they get started? 
       
      There are many ways to contribute to open source projects: provide feedback on documentation or product features; write a tutorial with sample code; help fix bugs or contribute to libraries etc. It’s best to start simple and easy first, and then progress to more challenging projects. 

      5.    How do you see the field of open source AI/ML development evolving in the coming years, and how are you preparing for these changes? 

      Open source is becoming increasingly important for AI/ML development, evident in the recent development of generative AI and on-device machine learning for example. There will be even more opportunities for open source projects. Keep contributing because open source projects are a great way to learn the latest while helping others.

      Are you actively contributing to the AI/ML community? Become a Google Dev Library Contributor!

      Google Dev Library is a platform for showcasing open source projects featuring Google technologies. Join our global community of developers to showcase your projects. Submit your content.

      How It’s Made: I/O FLIP adds a twist to a classic card game with generative AI

      Posted by Jay Chang, Product Marketing Manager for Flutter & Dart and Glenn Cameron, Product Marketing Manager for Core ML

      I/O FLIP is an AI-designed take on a classic card game, powered by Google, and created to inspire developers to experiment with what is possible with Google’s new generative AI technologies. Thousands of custom character images were pre-generated with DreamBooth on Muse and their descriptions were written using the PaLM API. The game’s UI and backend were built in Flutter and Dart, a suite of Firebase tools were used for hosting, and sharing, and Cloud Run was used to help scale.

      When a user plays I/O FLIP, they:

      1. Select a character class and a power to generate a pack of 12 cards
      2. Select three cards from the pack to create their team
      3. Join a match and win a best-of-3
      4. Win multiple matches in a row to create a streak of wins for a chance to make the leaderboard
      5. Share their deck with players from all over the globe
      Four phones side by side showing the I/O FLIP game, including drop-downs to select classes and powers for cards and various card battles.

      Let’s dig into how we built the game.

      Flutter and Dart: User Interface, Hologram effects, and backend

      I/O FLIP’s game logic and UI is built on a foundation provided by features from the Flutter Casual Games Toolkit, including audio functionality and app navigation via the go_router package. Since FLIP is a web app, it was important that it was responsive – resizing depending on the user’s screen size and that it took input from a variety of devices, mobile, tablet, and desktop.

      Much of the logic in FLIP is based on the game cards, so they’re a good place to start. Each card consists of an image of one of four Google mascots: Dash, Sparky, Dino, and Android, and a description – both of which are inspired by the class and power the user selects at the beginning of the game. Cards are also randomly assigned an elemental power (air, water, fire, metal, earth) and a number between 10-100 indicating the card’s strength. Elemental powers can impact each other in match play, indicated in the image below.

      Five phones side by side showing the I/O FLIP game, including screens including illustrations of the elemental powers and their effects on each other

      Elemental powers aren’t just for show. Cards receive a 10 point penalty if they are on the wrong end of an element matchup, as explained in the images above.

      Speaking of matchups, each match is a best-of-3. The winner continues playing with their chosen hand to start (or continue) their streak, while the loser can share their hand or pick a new hand to try again.

      New Flutter and Dart features helped us quickly bring this life: For instance, records, a Dart feature announced at Flutter Forward, helped us to render a frame based on the card element, and Flutter’s official support for fragment shaders on web helped us to create a special hologram effect on some cards, which are the only cards in the game that have 100 points.

      A screen recording from I/O FLIP, showing a character card with the shader effect applied

      Dreambooth on Muse and PaLM API: AI-generated images and descriptions


      Four cards side by side from the I/O FLIP game, including screens

      Each card in I/O FLIP is unique because it contains an AI-generated image and description.

      Images were pre-generated using two technologies pioneered out of Google Research: Muse, a text-to-image AI model from the Imagen family of models, and DreamBooth, a technique running on top of Muse that allows you to personalize text-to-image models to generate novel images of a specific subject using a small set of your own images for training.

      Card descriptions were prototyped in MakerSuite and pre-generated using the PaLM API which accesses Google’s large language models. Based on the power a player selects at the beginning of the game, you may get a card description that provides context to the image, including the character’s special powers such as: “Dash the Wizard lives in a castle with his pet dragon. He loves to cast spells and make people laugh.” Join the PaLM API and MakerSuite waitlist here.

      Flutter is used to compose the cards from a name, description, image and power using the GameCard widget. Once the card is created, a border indicating its element is applied. If you’re lucky enough to land a hologram card, a special foil shader effect will be applied to the design.


      Firebase: game hosting, sharing, and real-time game play

      Cloud Storage for Firebase stores all of the images, descriptions, elements, and numbers that generate players’ card decks. Firestore keeps track of the leaderboard for “Highest Win Streak” with new leaders added using the firedart package.

      In all cases where the Flutter app directly accesses Firestore, we've used App Check to ensure that only the code that we wrote ourselves is allowed, and we used Firebase security rules to ensure the code can only access data and make changes that it is authorized to.


      Dart Frog: sharing code between the backend and frontend

      I/O FLIP needed more ways to prevent cheating. This is where Dart Frog came in handy. It allowed us to keep the game logic, such as the winner of each round, on the backend, but also share this code between the Flutter frontend and the Firestore backend, which not only helped with cheating prevention, but also allowed the team to move just a little bit faster, since we were writing our backend and frontend code in the same language.

      I/O FLIP is most fun when many players are online and playing. By deploying the I/O FLIP Dart Frog server to Cloud Run, the game can take advantage of features like autoscaling, which allows it to handle many players at once.

      Finally, Dart Frog also enables downloading or sharing cards on social media. At the end of a round, a player can choose to download or share to Twitter or Facebook. When a user clicks the share button, Dart Frog generates a pre-populated post that contains text to share and a link to a webpage with the corresponding hand or card and a button for visitors to play the game too!


      Try it yourself

      We hope you’ve had a chance to try I/O FLIP and that it inspires you to think about ways generative AI can be used in your products, safely and responsibly. We’ve open sourced the code for I/O FLIP so you can take a deeper look at how we built it too. If you’d like to try your hand at some of the generative AI technologies used in I/O FLIP, tune in to Google I/O to learn more.

      6 Flutter/Dart Projects from Google Dev Library to Kickstart Your Next Project

      Posted by Swathi Dharshna Subbaraj, Project Coordinator, Google Dev Library

      Developers can build, test, and deploy any application from a single codebase in Flutter. With high performance and code reusability, it has transformed the app development process. Flutter has become the go-to framework for developers as it streamlines the development process, allowing applications to be built on multi-platform with ease and efficiency.

      In this blog, we will explore 6 Flutter/Dart projects from Google Dev Library from building weather apps to Tetris games. These projects will help you grow as a developer, and inspire you to build your first open source project. Let's dive in!

      Flutter Design Patterns by Mangirdas Kazlauskas

      screen grab of Flutter design patterns by Mangirdas Kazlauskas

      Design patterns are reusable solutions to common software development problems. They help you create software that is easier to maintain, extend, and refactor. Written in Dart, this repository showcases all 23 design patterns, as described in Design Patterns: Elements of Reusable Object-Oriented Software, to help you learn and apply design patterns in your own projects, improving the quality and maintainability of your code. 

      Check out Flutter design patterns


      Smart Home App by Lakhan Kumawat

      A mobile application (developed using Flutter and Dart) designed to control various smart home devices. The app also allows users to create custom scenes to automate device actions based on certain conditions or events. 

      Check out the Smart Home App


      Photo Manager by Alex Li

      Learn about an easy-to-use package for accessing a device's photo library, including operations like retrieving images, videos, and albums, as well as deleting, creating, and updating files in the photo library. This package is built using the Flutter plugin architecture, which enables it to interact with native platform APIs for accessing photos and videos on iOS and Android devices. 

      Check out photo_manager


      Tetris Flutter Game by Mouaz M. Al-Shahmeh

      This project implements the classic Tetris game using the Flutter framework. It’s structured into several classes that handle different aspects of the game. 

      Check out Tetris Flutter game


      FlutterGen by Daichi Furiya

      FlutterGen is a code generator tool that helps you automate the process of generating boilerplate code for assets and fonts, making it easier to use them in Flutter projects. It works by scanning a project directory for specified assets and font files and generates code that can be easily used within a Flutter application. Overall, FlutterGen can save you time and effort in managing assets and fonts in your Flutter projects. 

      Check out the FlutterGen package


      Flutter Maps by Souvik Biswas

      This app uses the Google Maps SDK & Directions API when coding with Flutter. It offers several location-based functions, including the ability to detect the user's current location. It also uses Geocoding to convert addresses into coordinates and vice versa, and allows users to add markers to the map view. 

      Check out the Flutter Maps package


      Are you actively contributing to the #FlutterDev community? Become a Google Dev Library Contributor!

      Google Dev Library is a platform for showcasing open-source projects featuring Google technologies. Join our global community of developers to showcase your projects. Submit your content.

      Flutter Cocoon Achieves SLSA Level 3

      As part of Dart and Flutter's ongoing mission to harden security, we have achieved Supply Chain Levels for Software Artifacts (SLSA) Level 3 security on Flutter’s Cocoon application. Flutter achieved SLSA Level 2 on Cocoon in 2022.

      Highlights

      Flutter’s Cocoon application provides continuous integration orchestration for Flutter Infrastructure. Cocoon also helps integrate several CI services with GitHub and provides tools to make GitHub development easier. Achieving SLSA Level 3 for Cocoon means we have addressed all the security concerns of levels 1, 2, and 3 across the application. SLSA Level 3 is all about improving security and ensuring Cocoon’s source code and build artifacts are valid. This is done by adding increased validation to the artifact’s provenance.

      What is Provenance?

      Provenance is a description of how an artifact is built. Provenance includes information about the type of machine used to build the artifact, the location of the source code, and the instructions used to build the artifact. While SLSA Level 2 requires provenance to exist, SLSA Level 3 goes further by requiring proof that the provenance is valid and legitimate.

      Cocoon uses the SLSA Verifier tool to verify provenance using a single-line command. With SLSA Verifier, all Cocoon builds will only be accepted if they have valid provenance. The provenance must prove the artifact was built on a Cloud Build instance with the source code coming from the Cocoon repository on GitHub. This ensures the Cocoon artifacts generated are safe and securely generated.

      SLSA Verifier is easy to add into an existing workflow. For Cocoon, this required adding a provenance verification script to run SLSA Verifier on an artifact’s provenance. This script is configured in our Cloud Build template and must run and pass verification before an artifact can be deployed.

      Future Work

      In addition to improving SLSA Levels for Cocoon, the Flutter team is working towards improving our SLSA levels across some of our larger and more complex projects, such as Flutter and Engine. These projects have their own set of challenges, such as overhauling our artifact generation process to use Gn and Ninja (Engine), and hardening security requirements for our release workflows (Flutter). We are excited to continue to deliver new security updates and solutions!

      Navigating new routes, places and distance: Introducing Google Maps Platform to Dev Library

      Posted by Swathi Dharshna Subbaraj, Project Coordinator, Google Dev Library

      We are excited to announce that Google Maps Platform has now been officially added to the Dev Library! Continuous innovation and the integration of technology into our physical environment have become increasingly important. One product, Google Maps, has played a critical role in shaping the future of the internet. With these resources, developers have created applications that enable them to visualize geospatial data and build projects ranging from hyperlocal logistics to location-driven app development.

      By adding Google Maps Platform, Dev Library contributors will be better able to create innovative and useful applications that utilize Google’s mapping, places, and routing data and features. Developers now have access to even more resources that can help take their projects to the next level.

      As Alex Muramoto, the Google Maps Platform curator for Dev Library, said,“We’re excited to see developers across tech stacks using Google Maps Platform to build and showcase their projects on Google Dev Library. We hope these projects will provide inspiration and guidance to help your own development efforts”.

      Let's explore some contributions from Dev Library authors who have implemented Google Maps Platform APIs and SDKs into their applications.


      Contributions in Spotlights:



      Flutter Maps by Souvik Biswas

      This app uses Google Maps SDK & Directions API on flutter framework. It offers several location-based functionalities, including the ability to detect the user's current location.

      It also utilizes Geocoding to convert addresses into coordinates and vice versa, and allows users to add markers to the map view. Moreover, it enables the drawing of routes between two places through the use of Polylines and Directions API, and calculates the actual distance of the route.

      Learn more about Flutter Maps


      How to integrate a customized Google Map in Flutter by Jaimil Patel

      Learn how to use the Google Maps Flutter plugin to display a customized Google Maps view.

      Explore key customization features like configuring the integration with Google Maps, adding a custom style to the map, and fetching the current location with the user's permission.

      Learn more about the blog post

      Customize the Google Map marker icon In Flutter by Lakshydeep Vikram

      Learn how to use the Google Maps Flutter plugin to display a customized Google Maps view.

      EDiscover how to customize a Google Maps marker icon by adding an image of your choice in Flutter in just a few steps: add the Google Maps Flutter plugin to the Flutter application, then describe how to use the GoogleMap widget provided by the plugin to display the map on the screen.

      See how it's done

      Google Dev Library is a platform for showcasing open-source projects and technical blogs featuring Google technologies. Join our global community of developers and showcase your Google Maps projects by submitting your content to the Dev Library.

      Google Dev Library Letters: 19th Edition

      Posted by the Dev Library team

      In this newsletter, we’re highlighting the best projects developed with Google technologies that have been contributed to the Google Dev Library platform. We hope this will spark some inspiration for your next project!


      Contributions of the Month


      [ML] Serving Stable Diffusion by Chansung Park

      Learn the various ways to deploy Stable Diffusion with TensorFlow Serving, Hugging Face Endpoint, and FastAPI.


      [ML] Textual inversion pipeline for Stable Diffusion by Chansung Park

      Dive into this repository which demonstrates how to manage multiple models and their prototype applications of fine-tuned Stable Diffusion on new concepts by Textual Inversion.

      Read more on DevLibrary 


      [Flutter] Animated soccer rating hexagon by Prateek Sharma

      Create a hexagon widget in Flutter that displays the ratings of a soccer player or team. The six sides represent a different aspect of the player or team's rating such as speed, strength, and accuracy.

      Read more on DevLibrary 


      Android & Kotlin


      Mastering Kotlin Coroutines by Amit Shekhar

      Dive into an introduction to coroutines in Kotlin programming language. Coroutines are a way to write asynchronous and non-blocking code in a sequential and easy-to-understand manner.

      Kotlin Symbol Processing (KSP) for code generation by Tim Lin

      Discover more about KSP API you can use to develop lightweight compiler plugins, which helps you get the complete source code information during compile time.

      Form Conductor by Naing Aung Luu

      Learn about form conductor. More than form validation, it provides a handful of reusable API to construct a form in simple easy steps.

      MovieDB by Gabriel Bronzatti Moro

      Discover how to fetch data from Movie DB API and allow users to search for movies and view details and store them on a local database in this Android project.


      Angular


      A complete guide to Angular Multilingual Application by Hossein Mousavi

      Dive into the technical aspects of building a multilingual Angular application, starting with the localization of the application's text.


      Flutter


      Bank cards UI by Ethiel Adiassa

      See how Flutter can be used to create aesthetically pleasing and functional UI designs for banking applications.

      macOS UI by Reuben Turner

      Dive into the repo resource for designers and developers looking to create beautiful templates and tutorials to create macOS applications and interfaces.


      Google Cloud


      Search for Brazilian laws using Dialogflow CX and matching engine by Rubens Zimbres

      Develop a chatbot using Dialogflow CX and a matching engine to help users search for something specific in legislation.

      Awesome CloudOps automation by Doug Sillars

      Learn how a single repository could satisfy all your day-to-day CloudOps automation needs.

      Serverless Kubernetes on Google Cloud Platform by Gursimar Singh

      Learn how serverless technologies like Cloud Run can be used to simplify and expedite the process of designing software applications.

      Implement secure CI/CD with Workload Identity Federation, GitLab CI, and Cloud Deploy by Ezekias Bokove

      See how to implement a secure Continuous Integration/Continuous Deployment (CI/CD) pipeline using Workload Identity Federation and GitLab CI.


      Google Dev Library Letters: 18th Edition

      Posted by the Dev Library Team

      In this newsletter, we’re highlighting the best projects developed with Google technologies that have been contributed to the Google Dev Library platform. We hope this will spark some inspiration for your next project!


      Contributions of the month


      Moving image showing SSImagePicker in different modes

      [Android] SSImagePicker by Simform

      See how to use a lightweight and easy-to-use image picker library that has features like cropping, compression and rotation, video, and Live Photos support.



      Moving image showing overview of coroutines

      [Kotlin] Mastering Coroutines in Kotlin by Reyhaneh Ezatpanah

      Dive into a comprehensive overview of coroutines including tips and best practices, along with a detailed explanation of the different types of coroutines available in Kotlin and how to use them effectively.

      Read more on DevLibrary


      Flow Chart demonstrating Image to Image stable diffusion in Flax

      [Machine Learning] Image2Image with Stable Diffusion in Flax by Bachir Chihani

      Learn the uses of the Diffusion method, a technique used to improve the stability and performance of image-to-image translation models.

      Read more on DevLibrary


      Android


      Jetpack Compose state, deconstructed by Yves Kalume

      Learn how state management in Jetpack Compose is implemented, how it can be used to build a responsive and dynamic UI, and how it compares to other solutions in Android development.


      Dynamic environment switching on Android by Ashwini Kumar

      Find out how to switch between different environments (such as development, staging, and production) in an Android app.


      Migration to Jetpack Compose for a legacy application by Abhishek Saxena

      Migrate an existing legacy Android application to Jetpack Compose, a modern UI toolkit for building native Android apps



      Machine Learning


      Simple diffusion in TensorFlow by Bachir Chihani

      Understand the benefits of using TensorFlow for image processing, including the ability to easily parallelize computations and utilize GPUs for faster processing.


      Deep dive into stable diffusion by Bachir Chihani

      Look into the Flax implementation of the Stable Diffusion model to better understand how it works.


      Create-tf-app by Radi Cho

      See the tool that allows you to quickly create a TensorFlow application by generating the necessary code and file structure.

       

      Angular


      NGX-Valdemort by Cédric Exbrayat

      Dive into a set of pre-built validation rules and error messages for commonly encountered use cases, making it easy to quickly implement robust form validation for your application.


      Passing configuration dynamically from one module to another using ModuleWithProviders by Madhusuthanan B

      Learn how to pass configuration data dynamically between modules in an Angular application.


      Flutter


      Mastering Dart & Flutter DevTools by Ashita Prasad

      Look at the first part of the series aimed at helping developers to understand how to use the tools effectively to build applications with Dart and Flutter.


      Server-driven UI in Flutter - an experiment on remote widgets by Akshat Vinaybhai Patel

      Learn the insights, code snippets and results of the experiment for readers to better understand the concept of Server-Driven UI and its potential in Flutter app development.


      Flutter Photo Manager by Alex Li

      Learn an easy-to-use API for accessing the device's photo library, that performs operations like retrieving images, videos, and albums, as well as deleting, creating, and updating files in the photo library.


      Firebase


      How to authenticate to Firebase using email and password in Jetpack Compose? By Alex Mamo 

      Here’s a simple solution for implementing Firebase Authentication with email and password, using a clean architecture with Jetpack Compose on Android.


      Google Cloud


      Google Firestore Data Source plugin for Grafana by Prasanna Kumar

      Learn how it allows users to perform operations like querying, aggregating, and visualizing data from Firestore, making it a powerful tool for monitoring and analyzing real-time data in a variety of applications. The repository provides the source code for the plugin and documentation on how to install and use it with Grafana.


      Cluster cloner by Joshua Fox

      See how this project aims to replicate clusters across different cloud environments and examine these varying infrastructure models.


      Getting to know Cloud Firestore by Mustapha Adekunle

      Learn how this post covers the basic features and benefits of Cloud Firestore, and how this document database is a scalable and versatile NoSQL cloud database.


      Google’s Mandar Chaphalkar has submitted Data Governance with Dataplex

      Discover how Dataplex can be used to transform data to meet specific business requirements, and how it can integrate with other Google Cloud services like BigQuery for efficient data storage and analysis.

      Google Dev Library Letter: 17th Edition

      Posted by the Dev Library Team

      We are highlighting the best projects developed with Google technologies that have been shared on the Google Dev Library platform. We hope this will spark some inspiration for your next project.


      Android - Content of the Month



      Transformers by Daichi Furiya

      See the Android transformation library providing a variety of image transformations for Coil, Glide, Picasso, and Fresco.



      Camposer by Lucas Yuji Yoshimine

      Learn how the camera library in Jetpack Compose which supports taking photos, recording videos, flash modes, zoom ratio, and more.

      Read more on DevLibrary




      ChatGPT Android by Jaewoong Eum

      Integrate ChatGPT on Android with Stream Chat SDK for Compose.

      Read more on DevLibrary




      Continue reading

      Experts share insights on Firebase, Flutter and the developer community

      Posted by Komal Sandhu - Global Program Manager, Google Developer Groups

      Rich Hyndman, Manager, Firebase DevRel (left) and Eric Windmill, Developer Relations Engineer, Firebase and Flutter (right)

      Firebase and Flutter offer many tools that ‘just work’, which is something that all apps need. I think you’d be hard pressed to find another combination of front end framework and back end services that let developers make apps quickly without sacrificing quality.” 

      moving images of Sparky and Dart, respective mascots for Firebase and Flutter
      Among the many inspiring experts in the developer communities for Firebase and Flutter are Rich Hyndman and Eric Windmill. Each Googler serves their respective product team from the engineering and community sides and has a keen eye towards the future. Read on to see their outlook on their favorite Firebase and Flutter tools and the developers that inspire them.

      ===

      What is your title, and how long have you been at Google?

      Rich: I run Firebase Developer Relations,, I’ve been at Google for around 11 years

      Eric: I’m an engineer on the Flutter team and I’ve been at Google for a year.


      Tell us about yourself:

      Rich: I’ve always loved tech, from techy toys as a kid to anything that flies. I still get tech-joy when I see new gadgets and devices. I built and raced drones for a while, but mobile/cell phones are the ultimate gadget for me and enabled my career.

      Eric: I’m a software engineer, and these days I’m specifically a Developer Relations Engineer. I’m not surprised I’ve ended up here, as I like to joke “I like computers but I like people more.” Outside of work, most of my time is spent thinking about music. I’m pretty poor at playing music, but I’ve always consumed as much as I could. If I had to choose a different job and start over, I’d be a music journalist.


      How did you get started in this space?

      Rich: I've always loved mobile apps: being able to carry my work in my pocket, play with it, test it, demo it, and be proud of it. From the beginning of my career right up till today, it's still the best. I worked on a few mobile projects pre-Android and was part of an exciting mobile tech startup for a few years, but it was Android that really kick-started my career.

      I quickly fell in love with the little green droid and the entire platform, and through a combination of meetups, competition entries and conferences I ended up in contact with Android DevRel at Google.

      Firebase is a natural counterpart to Android and I love being able to support developers from a different angle. Firebase also supports Flutter, Web and iOS, Firebase, which has also given me the opportunity to learn more about other platforms and meet more developers.

      Eric: I got into this space by accident. At my first software job, the company was already using Dart for their web application, and started rebuilding their mobile apps in Flutter soon after I joined. I think that was around 2016 or 2017. Flutter was still in its Alpha stage. I was introduced to Firebase at the same job, and I’ve used various tools from the Firebase SDK ever since.


      What are some challenges that you have seen developers being facing?

      Rich: Developers often want to get up and running with new projects quickly, but then iterate and improve their apps. No-code solutions can be great to start with but aren’t flexible enough down the road. A lower-code solution like Firebase can be quick to get started, and it can also provide control. Bringing Flutter and Firebase together creates a powerful and flexible combination.

      Eric: Regardless of the technology, I think the biggest challenge developers face is actually with documentation. It doesn’t matter how good a product is if the docs are hard to find or hard to understand. We’ve seen this ourselves recently as Flutter became an “official” supported platform on Firebase in May 2022. When that happened, we moved the documentation from the Flutter site to the Firebase site, and folks didn’t know how to find the docs. It was an oversight on our part, but it’s a good example of the importance of docs. They deserve way more attention than they get in many, many cases.

      image of Sparky and Dart, respective mascots for Firebase and Flutter
      What do you think is the most interesting or useful resource to learn more about Firebase & Flutter? Is there a particular library or codelab that everyone should learn?

      Rich: The official docs have to be first, located at firebase.google.com. We have a great repository of Learning Pathways, including Add Firebase to your Flutter App. We’re also just launching our new Solutions Portal with over 60 solutions guides indexed already.

      Eric: If I have to name only one resource, it’d be this codelab: Get to know Firebase for Flutter
      But Firebase offers so many tools. This codelab is just an introduction to what’s possible.


      What are some inspiring ways that developers are building together Firebase and Flutter?

      Rich: We’ve had an interesting couple of years at Firebase. Firebase has always been known for powering real-time data driven apps. If you used a Covid stats app during the pandemic there’s a fair chance it was running on Firebase; there was a big surge of new apps.

      Eric: Lately I’ve seen an interest in using Flutter to make 2D games, and using some Firebase tools for the back end of the game. I love this. Games are just more fun than apps, of course, but it’s also great to see folks using these technologies in ways that aren’t the explicit purposes. It shows creativity and excellent problem solving.


      What’s a specific use case of Firebase & Flutter technology that excites you?

      Rich: Firebase Extensions are very exciting. They are pre-packaged bundles of code that make it easy to add new features to your app from Google and partners like Stripe and Vonage. We just launched the Extensions Marketplace and opened up the ability for developers to build extensions for their own apps through our Provider Alpha program.

      Eric: Flutter web and Firebase hosting is just a no brainer. You can deploy a Flutter app to the web in no time.


      How can developers be successful building on Firebase & Flutter?

      Rich: There’s a very powerful combination with Crashlytics, Performance Monitoring, A/B Testing and Remote Config. Developers can quickly improve the stability of their apps whilst also iterating on features to deliver the best experience for their users. We’ve had a lot of success with improving monetization, too. Check out some of our case studies for more details.

      Eric: Flutter developers can be successful by leveraging all that Firebase offers. Firebase might seem intimidating because it offers so much, but it excels at being easy to use, and I encourage all web and mobile developers to poke around. They’re likely to find something that makes their lives easier.

      image of Firebase and Flutter logos against a dot matrix background
      What’s next for the Firebase & Flutter Communities? What might the future look like?

      Rich: Over the next year we’ll be focusing on modern app development and some more opinionated guides. Better support for Flutter, Kotlin, Jetpack Compose, Swift/SwiftUI and modern web frameworks.

      Eric: There is a genuine effort amongst both teams to support each other. Flutter and Firebase are just such a great pair, that it makes sense for us to encourage our communities to check out one another. In the future, I think this will continue. I think you’ll see a lot of Flutter at Firebase events, and vice versa.


      How does Firebase & Flutter help expand the impact of developers?

      Rich: Firebase has always focused on helping developers get their apps up and running by providing tools to streamline time-consuming tasks. Enabling developers to focus on delivering the best app experiences and the most value to their users.

      Eric: Flutter is an app-building SDK that is a joy to use. It seriously increases velocity because it’s cross-platform. Firebase and Flutter offer many tools that “just work”, which is something that all apps need. I think you’d be hard pressed to find another combination of front end framework and back end services that let developers make apps quickly without sacrificing quality.


      Find a Google Developer Group hosting a DevFest near you.

      Want to learn more about Google Technologies like Firebase & Flutter? Hoping to attend a DevFest or Google Developer Groups (GDG)? Find a GDG hosting a DevFest near you here.

      Dev Library Letters: 14th Issue

      Posted by Garima Mehra, Program Manager

      ‘Google Dev Library letters’ is curated to bring you some of the best projects developed with Google tech that have been submitted to the Dev Library platform. We hope this brings you the inspiration you need for your next project!


      Android



      Image-compressor 
      by Vinod Baste

      Check out Vinod’s Android Image compress library that helps reduce the size of the image by 90% without losing any of its pixels.


      SealedX 
      by Jaewoong Eum

      Learn how to auto-generate extensive sealed classes and interfaces for Android and Kotlin.

      Flutter



      GitHub Actions to deploy
      Flutter Web to gh-pages
       
      by Sai Rajendra Immadi

      Tired of manually deploying the app every time? Or do you want to deploy your flutter web applications to gh-pages? Use this blog as your guide.



      Double And Triple Dots in Flutter 
      by Lakshydeep Vikram

      Learn the reason for using double and triple dots in flutter and where to use them.



      Machine Learning



      Nystromformer 
      by Rishit Dagli

      Learn how to use the Nystrom method to approximate standard self-attention. 


      Google Cloud



      by Ezekias Bokove

      Learn how to set up a notification system for Cloud Run services. 



      Switch to GCP for cost savings and better performance
      by Gaurav Madan

      Learn why architects dealing with complex application design and who use well-known Google services should consider the Google Cloud Platform. 




      "The Google community includes people with diverse backgrounds. No matter what an individual circumstance is, the platform should support anyone to explore and be creative. We encourage authors to boldly consider diverse backgrounds and to be inclusive when authoring."

      Vinesh Prasanna M

      Customer Engineer | Google Cloud 





      "Authoring a good code sample is hard. The difficulty comes from the additional pieces you need to add to your respository to keep the code sample fresh and appealing to your developers."

      Brett Morgan

      Developer Relations Engineer | Flutter







      Want to read more? 
      Check out the latest projects and community-authored content by visiting Google Dev Library
      Submit your projects to showcase your work and inspire developers!