<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rodrigo Alexandre</title>
    <description>The latest articles on DEV Community by Rodrigo Alexandre (@narradorww).</description>
    <link>https://dev.to/narradorww</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F939588%2F8dc1d0af-679d-49f5-9eb2-d53277f52d81.png</url>
      <title>DEV Community: Rodrigo Alexandre</title>
      <link>https://dev.to/narradorww</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/narradorww"/>
    <language>en</language>
    <item>
      <title>Creating a Social Network for Bakers with the use of Generative Artificial Intelligence as an Assistant. part 2</title>
      <dc:creator>Rodrigo Alexandre</dc:creator>
      <pubDate>Wed, 12 Apr 2023 00:07:01 +0000</pubDate>
      <link>https://dev.to/narradorww/creating-a-social-network-for-bakers-with-the-use-of-generative-artificial-intelligence-as-an-assistant-part-2-35nd</link>
      <guid>https://dev.to/narradorww/creating-a-social-network-for-bakers-with-the-use-of-generative-artificial-intelligence-as-an-assistant-part-2-35nd</guid>
      <description>&lt;p&gt;Let's be honest, nobody enjoys just doing CRUDs*. So why not leverage the potential of Generative AIs for this 'tedious' task?&lt;/p&gt;

&lt;p&gt;On my second day working with ChatGPT as an AI Assistant in creating a social network for amateur bakers, I think I managed to "shift" my mindset to use the tool as an Assistant.&lt;/p&gt;

&lt;p&gt;Using the "ChatGPT Prompt Formula" provided by DataCamp, I optimized my process and improved efficiency. I was able to create the server using Node + Express, model the database in MongoDB, and set up all the routes with their respective CRUD methods! Also, it helped me with those boring tasks of testing the running API when you need an example user. Instead of manually creating the JSON, I simply asked, "Following the model we implemented, create a JSON to represent a user" and went to grab a coffee...&lt;/p&gt;

&lt;p&gt;I can consider ChatGPT as a good companion on this journey, facing the Dark Arts of Backend 🧙‍♂️&lt;/p&gt;

&lt;p&gt;Having an AI helping with tasks considered tedious by many devs is a true revolution. It saves time and can allow the team to focus on more human and creative activities. 🌟&lt;/p&gt;

&lt;p&gt;I believe that having an AI Assistant like ChatGPT by our side can make development more enjoyable and productive, helping the team focus on what really matters: creating innovative solutions that bring value to our users!&lt;/p&gt;

&lt;p&gt;And you, Dev, have you tried working with an AI Assistant in software development? Want to take a look at how this API is shaping up? I'll leave the Github link here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/narradorww/cp-backend"&gt;Github Repository &lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;*CRUD is an acronym for the four basic operations in data management systems: Create, Read, Update, and Delete. These operations allow users to manipulate and manage information stored in a database.&lt;/p&gt;

&lt;p&gt;This post is part of the documentation of my experience applying the knowledge from the 'Generative Artificial Intelligences' course at Alura. Tomorrow we'll see how we'll deal with "Token-based authentication."&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Creating a Social Network for Bakers with the use of Generative Artificial Intelligence as an Assistant. part 1</title>
      <dc:creator>Rodrigo Alexandre</dc:creator>
      <pubDate>Mon, 10 Apr 2023 19:57:54 +0000</pubDate>
      <link>https://dev.to/narradorww/creating-a-social-network-for-bakers-with-the-use-of-generative-artificial-intelligence-as-an-assistant-part-1-5ec5</link>
      <guid>https://dev.to/narradorww/creating-a-social-network-for-bakers-with-the-use-of-generative-artificial-intelligence-as-an-assistant-part-1-5ec5</guid>
      <description>&lt;p&gt;In the past few weeks, I have been dedicating myself to studying how to use Generative Artificial Intelligence to improve my software development work. As a frontend engineer, I have the qualifications to use JavaScript with React to do my job, but I don't have much proficiency in the obscure arts of backend development.&lt;/p&gt;

&lt;p&gt;I started the project by creating a system specification with ChatGPT. I requested that it create the code for the project, prompt by prompt. Despite the fact that some parts of the project are functional, I believed that the overall process was frustrating and every part of the code did not communicate with each other without intervention.&lt;/p&gt;

&lt;p&gt;Until I watched the DataCamp webinar called 'Beginner's Guide to Prompt Engineering with ChatGPT' and understood that my issue with the code was more related to my mental model of how to use ChatGPT than the code itself, I was using the AI as an agent when I should have been using it as an assistant.&lt;/p&gt;

&lt;p&gt;In the words of &lt;a class="mentioned-user" href="https://dev.to/adeel"&gt;@adeel&lt;/a&gt; Nehme, the difference between an AI assistant and an AI agent is &lt;em&gt;'a mental model of how you think about it. An AI assistant is something that you need to edit its outputs - you need to use it as a co-pilot, whereas an AI agent is more of an independent actor. It is very important to think about Chat GPT as an independent AI assistant, a tool that you use as a co-pilot, rather than an agent that you let into the wild.'&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;With these thoughts in mind, I elaborated a prompt based on the "Formula Prompt of ChatGPT" taught in the webinar, and I will restart the project with ChatGPT. As my proficiency in the "dark arts of backend" is lower than my knowledge in frontend, I decided that I should start with the API. &lt;/p&gt;

&lt;p&gt;That's is the prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Act as a backend developer, with knowledge in NodeJS, Express, authentication with Google and Facebook platforms, and MongoDB. You must create an API for a social network of amateur bakers. In this social network, bakers will be able to exchange messages like in a forum, send direct messages, post recipes and offer or request donations of natural yeast starters among themselves. Follow the instructions very carefully and do not deviate from them.

1. Provide a step-by-step explaining the reasons why you are making the decisions you are making;
2. Model the database to contain the following entities: recipes (ingredients, preparation time, fermentation time, and materials used), bakers (name, user, address for conversion to coordinates, and subsequent creation of a proximity resource between bakers), posts and messages, and any other entities that you deem necessary for the proper functioning of the API.
3. Authentication should be done by token and with refresh token on Google and Facebook platforms.
4. Write clean, accessible, and scalable code. All variable and function names must be in English, and comments, where necessary, must be in Portuguese.
5. Avoid security breaches.
6. Avoid bad code.
7. Avoid inaccuracies."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And that is the result:&lt;/p&gt;

&lt;h4&gt;
  
  
  Start of Output
&lt;/h4&gt;

&lt;p&gt;Step by step and decisions:&lt;br&gt;
1.1. Initialize a new Node.js project and install the necessary dependencies: Express, Mongoose, Passport, Passport-Google-OAuth, Passport-Facebook-Token, CORS, and others.&lt;/p&gt;

&lt;p&gt;1.2. Set up the Express server and define routes for the described functionalities.&lt;/p&gt;

&lt;p&gt;1.3. Define Mongoose models for the database entities.&lt;/p&gt;

&lt;p&gt;1.4. Implement authentication with Google and Facebook using Passport.js and JWT to manage tokens and refresh tokens.&lt;/p&gt;

&lt;p&gt;1.5. Implement the API functionalities as described in the instructions.&lt;/p&gt;

&lt;p&gt;1.6. Add middleware to handle errors and validation.&lt;/p&gt;

&lt;p&gt;1.7. Test the API using tools like Postman or Insomnia.&lt;/p&gt;

&lt;p&gt;1.8. Add comments in Portuguese and ensure code quality.&lt;/p&gt;

&lt;p&gt;Database modeling:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Recipes:

_id
title
ingredients: Array of objects (name, quantity, unit)
preparationTime
fermentationTime
materials: Array of Strings
bakerId: Reference to the author baker
Bakers:

_id
name
username
address
coordinates: { lat, long }
authProvider: 'google' or 'facebook'
authId
Posts:

_id
content
bakerId: Reference to the author baker
createdAt
updatedAt
Messages:

_id
content
senderId: Reference to the sender baker
recipientId: Reference to the recipient baker
createdAt
Sourdough starter donations:

_id
donorId: Reference to the donor baker
recipientId: Reference to the recipient baker
status: 'offered', 'requested', 'accepted', 'declined', 'completed'
createdAt
updatedAt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Authentication will be done using Passport.js, integrated with the Google OAuth and Facebook Token strategies. JWT will be used to generate tokens and refresh tokens.&lt;/p&gt;

&lt;p&gt;To ensure clean, accessible, and scalable code, we will follow SOLID principles, organize the project in layers (routes, controllers, services, and repositories), and use ESLint to maintain code style consistency. In addition, we will use variable and function names in English and add comments in Portuguese when necessary.&lt;/p&gt;

&lt;p&gt;To prevent security breaches, we will apply best practices such as input data validation, using JWT tokens, dependency updates, error handling, using HTTPS, and CORS.&lt;/p&gt;

&lt;p&gt;Avoiding "bady code" (bad code) will be achieved by following the guidelines mentioned in item 4.&lt;/p&gt;

&lt;p&gt;To avoid inaccuracies, we will test the API with unit and integration tests, using libraries like Jest and supertest. Additionally, we will validate project requirements with stakeholders.&lt;/p&gt;

&lt;h4&gt;
  
  
  End of Output
&lt;/h4&gt;

&lt;p&gt;On the next days I will implement the sugestions of my AI Assistant and you can follow these journey .&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>ai</category>
      <category>chatgpt</category>
    </item>
    <item>
      <title>Usando o useEffect de modo assincrono</title>
      <dc:creator>Rodrigo Alexandre</dc:creator>
      <pubDate>Fri, 20 Jan 2023 21:55:40 +0000</pubDate>
      <link>https://dev.to/narradorww/usando-o-useeffect-de-modo-assincrono-4jco</link>
      <guid>https://dev.to/narradorww/usando-o-useeffect-de-modo-assincrono-4jco</guid>
      <description>&lt;p&gt;Eu recebi uns warnings do expo quando implementei os useEffects assincronos do projeto de &lt;a href="https://github.com/narradorww/react-native-api" rel="noopener noreferrer"&gt;Aplicativo de Repositórios&lt;/a&gt; do curso &lt;a href="https://cursos.alura.com.br/course/react-native-utilizando-web-api" rel="noopener noreferrer"&gt;React Native: utilizando Web API&lt;/a&gt; e resolvi que não ia deixá-los no meu projeto rs.&lt;/p&gt;

&lt;p&gt;Pesquisando pela documentação do React e alguns sites, encontrei uma recomendação a respeito e vou deixar uma sugestão de como eu fiz no meu código:&lt;/p&gt;

&lt;p&gt;O useEffect espera que a função passada para ele retorne uma função de limpeza ou null, mas uma função async não retorna uma dessas coisas. Isso pode causar problemas na hora de lidar com os efeitos colaterais.&lt;/p&gt;

&lt;p&gt;Se você chama uma função async dentro do useEffect, ela será executada imediatamente e não será cancelada quando o componente deixar de ser exibido, o que pode causar problemas de desempenho.&lt;/p&gt;

&lt;p&gt;Se você chama uma função async dentro do useEffect sem passar um array vazio como segundo argumento, essa função será chamada sempre que o componente for atualizado, o que pode causar problemas de desempenho e resultar em chamadas desnecessárias à API.&lt;/p&gt;

&lt;p&gt;Uma maneira mais correta de lidar com seria colocar a lógica de busca de dados em uma função separada e chamá-la dentro do useEffect. E você deve passar o array de dependencias corretamente, para evitar chamadas desnecessárias:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;useEffect(() =&amp;gt; {
        async function pegarRepos(){
            const resultados = await pegarRepositorioDoUsuarios(route.params.id);
            setRepo(resultados);
        }
        pegarRepos();
    }, [estaNaTela]);COPIAR CÓDIGO
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Foi essa maneira que fiz. Como você faria?&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>Atualizando os projetos base da Alura para React Native</title>
      <dc:creator>Rodrigo Alexandre</dc:creator>
      <pubDate>Thu, 19 Jan 2023 20:36:53 +0000</pubDate>
      <link>https://dev.to/narradorww/atualizando-os-projetos-base-da-alura-para-react-native-1m2f</link>
      <guid>https://dev.to/narradorww/atualizando-os-projetos-base-da-alura-para-react-native-1m2f</guid>
      <description>&lt;p&gt;Mais uma atualização para completar a Formação React Native da @Alura . Desta vez precisei realiza a atualização do projeto do curso &lt;a href="https://cursos.alura.com.br/course/react-native-utilizando-web-api" rel="noopener noreferrer"&gt;React Native: utilizando Web API&lt;/a&gt;. A versão do Expo que estava no meu Android Emulator &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpbkd2ggbqm4l5uuctr1h.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpbkd2ggbqm4l5uuctr1h.jpeg" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
Calma Android. Tá muito brabo!&lt;/p&gt;

&lt;p&gt;Para atualizar um projeto Expo de SDK 44 para SDK 47, siga esses passos:&lt;/p&gt;

&lt;p&gt;Atualize o expo-cli instalado globalmente na sua máquina executando o comando &lt;code&gt;npm install -g expo-cli@latest&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Atualizei o expo no  projeto com o comando &lt;code&gt;expo upgrade&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Atualizei as dependências do seu projeto para as versões compatíveis com o SDK 47. Isso pode ser feito executando &lt;code&gt;expo install&lt;/code&gt; seguido dos pacotes necessários ou editando manualmente o arquivo package.json&lt;/p&gt;

&lt;p&gt;Verifique se o seu arquivo app.json está configurado com a versão correta do SDK. Deve ser "sdkVersion": "47.0.0"&lt;/p&gt;

&lt;p&gt;Rodei o servidor expo com&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx expo start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Testei no celular e no Android Studio e, voi lá, tudo funcionando corretamente!&lt;/p&gt;

&lt;p&gt;Tenha em mente que essa atualização pode exigir algum trabalho adicional para corrigir possíveis problemas de compatibilidade, então é recomendado fazer backup do seu projeto antes de iniciar a atualização!!!&lt;/p&gt;

&lt;p&gt;Leia a documentação!&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>react</category>
      <category>alura</category>
      <category>android</category>
    </item>
    <item>
      <title>Minha Configuração para Rodar React Native CLI com Java 17</title>
      <dc:creator>Rodrigo Alexandre</dc:creator>
      <pubDate>Tue, 17 Jan 2023 17:38:13 +0000</pubDate>
      <link>https://dev.to/narradorww/minha-configuracao-para-rodar-react-native-cli-com-java-17-5co6</link>
      <guid>https://dev.to/narradorww/minha-configuracao-para-rodar-react-native-cli-com-java-17-5co6</guid>
      <description>&lt;p&gt;Toda a vez que eu preciso trabalhar em algum applicativo com React Native acabo lidando com o problema de ambiente de desenvolvimento. &lt;/p&gt;

&lt;p&gt;Em geral isso acontece porque eu tive que realizar alguma atualização no meu Ubuntu ou porque rolou algum upgrade de hardware (troquei o HD por SSD pro Android Studio rodar sem parecer que a máquina vai se transformar em um reator ARC). &lt;/p&gt;

&lt;p&gt;Eu ja estava com o ambiente JAVA 17 arrumado e não queria perder tempo. Iniciei o projeto com&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx react-native init meuProjeto
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;e, depois de passar por todo o processo de criação do boilerplate, inseri meu endereço do SDK em um arquivo "local.properties"  no diretório 'android'&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sdk.dir=/home/rodrigo/Android/Sdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apesar disso o gradle não conseguia buildar o app e instalar no Android Emulator&lt;/p&gt;

&lt;p&gt;Dando uma olhada no github do &lt;a href="https://github.com/facebook/react-native/issues/32948"&gt;facebook&lt;/a&gt; para o projeto React Native encontrei uma solução:&lt;/p&gt;

&lt;p&gt;Alterar a 'distributionURL' em gradle-wrapper.properties, atualizando-a para a versão 7.3 . Na minha máquina ficou assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Além disso, foi preciso adicionar ao gradle.properties o seguinte trecho de código ( no meu inseri ao final do arquivo):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;org.gradle.jvmargs=-Xmx1536M --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Após isso, iniciei o servidor do react-native novamente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx react-native start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;e depois mandei instalar o app no Android Emulator, que já estava rodando bonitinho ao fundo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx react-native run-android
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;e Voilá! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CVJXlUJa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iz8v07mt5bt3mvm711bs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CVJXlUJa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iz8v07mt5bt3mvm711bs.png" alt="Image description" width="364" height="864"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Rodou bonito. Agora posso voltar para minha aula da Formação React Native da @Alura&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Digital Twins: realidade virtual aplicada muito além da Meta</title>
      <dc:creator>Rodrigo Alexandre</dc:creator>
      <pubDate>Thu, 24 Nov 2022 14:50:13 +0000</pubDate>
      <link>https://dev.to/narradorww/digital-twins-realidade-virtual-aplicada-muito-alem-da-meta-1eo9</link>
      <guid>https://dev.to/narradorww/digital-twins-realidade-virtual-aplicada-muito-alem-da-meta-1eo9</guid>
      <description>&lt;p&gt;A primeira vez que escutei o termo "Digital Twins" foi em uma entrevista de emprego. Meu recrutador/contratante precisava de um dev frontend para atuar no desenvolvimento de telas e recursos visuais para personas com a mesma experiência em engenharia que eu: técnicos de campo ou de projeto que precisassem acessar os dados de recursos de infraestrutura (ferrovias, gasodutos ou torres de energia eólica) em tempo  real e de maneira intuitiva. A rápida explicação sobre a aplicabilidade de Digital Twins para área industrial e de infraestrutura me deixou assim: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gWIj7dfQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d1ynk1fm479tlo8y06rx.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gWIj7dfQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d1ynk1fm479tlo8y06rx.gif" alt="Um homem branco de óculos simulando sua mente explodindo" width="499" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aquilo teria sido uma "mão na roda" como recurso para todas as equipes de manutenção com quem eu havia trabalhado durante toda a minha vida! &lt;/p&gt;

&lt;h2&gt;
  
  
  Mas o que é, afinal, um Gêmeo Digital?
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Scott Martin&lt;/em&gt; em seu &lt;a href="https://blog.nvidia.com.br/2022/01/06/o-que-e-um-digital-twin/"&gt;artigo para NVIDIA&lt;/a&gt; define um Digital Twin como uma &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Representação virtual (uma simulação realista de física e materiais) de um elemento ou sistema físico do mundo real que é atualizada continuamente.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Esses elementos ou sistemas são matemáticamente descritos em termos de altura, largura, peso, profundidade, cor, textura, temperatura e comportamentos são introduzidos em sistemas computacionais que realizarao interações similares às do mundo físico. Isso possibilita realizar experiências ou simulações de ações e comportamentos de forma mais econômica. Uma industria não precisa mais, por exemplo, realizar tantos "crash tests" em seus veículos se todos os atributos fisicos e comportamentais, tanto dos carros quantos de seus condutores e cargas, estiverem mimetizados digitalmente. É possivel, inclusive, criar situações que seriam inviáveis de serem testadas por questões físicas ou até mesmo legais e éticas. &lt;/p&gt;

&lt;h3&gt;
  
  
  Física
&lt;/h3&gt;

&lt;p&gt;Qual a torque de motor necessário para deslocar um caminhão de baterias na superficie de um planeta com a gravidade 16x superior a da Terra? Quais engrenagens quebrariam nessa situação? Quanto de carga as baterias devem receber antes de entrar no lado escuro do planeta?&lt;/p&gt;

&lt;h3&gt;
  
  
  Ética/Jurídica
&lt;/h3&gt;

&lt;p&gt;Como um carro autônomo se comportaria em uma rua urbana, em uma área residêncial, com um jardim de infância anexo à um parque público com um "cachorródromo". Um cachorro grande se solta na hora da saída do jardim de infância. Como o carro autônomo se comporta?&lt;/p&gt;

&lt;h2&gt;
  
  
  Digital Twins e IoT
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NbhSZCQ4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/izn567enu6tx1rs4h4v4.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NbhSZCQ4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/izn567enu6tx1rs4h4v4.gif" alt="Homem andando em uma esteira de academia com mochila robô servindo cerveja para ele" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;IoT (Internet das Coisas) é um conceito frequentemente explicado como "a tecnologia que torna sua geladeira inteligente", mas sua aplicabilidade é muito maior que encomendar cerveja na Amazon. A miniaturização de componentes e o aumento de acesso à redes computacionais, impulsionado nos ultimos anos com a tecnologia 5G, tornou possivel a criação de centenas de tipos de sensores eletrônicos. Esses sensores podem ser utilizados justamente como o input e a transmissão de dados para... os Digital Twins! Sensores em protótipos podem ser mais precisos em fornecer dados para criação de Modelos Matemáticos para a criação desses gêmeos digitais e, posteriormente, para alimentar Inteligências Artificias equipadas com Machine Learning para que atualizem as características físicas e comportamentais do Digital Twin. &lt;/p&gt;

&lt;h2&gt;
  
  
  Os players das Digital Twins
&lt;/h2&gt;

&lt;p&gt;Com todas as vantagens associadas a de possuir modelos de Digital Twins para o trabalho em vários tipos de indústrias, grandes empresas de tecnologia passaram a investir pesado para adquirir a dianteira desse mercado, entre eles IBM, NVIDIA, BMW e até mesmo Microsoft já possuem suas próprias plataformas de simulação. Estima-se que para 2023 os investimentos nessa área atinjam em torno de US$13 bilhões em todo o mundo. &lt;/p&gt;

&lt;h2&gt;
  
  
  Concluindo
&lt;/h2&gt;

&lt;p&gt;Este é um primeiro artigo sobre o assunto e que servirá de fio condutor para um projeto pessoal na área de inteligência artificial e aprendizagem de máquina aplicada à industria do agronegócio. Se você tem interesse no assunto, me companhe por aqui ou pelo &lt;a href="https://www.linkedin.com/in/rodrigoalexandre79/"&gt;Linkedin&lt;/a&gt;. &lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
