<?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: Luís Gabriel Marchió Batista</title>
    <description>The latest articles on DEV Community by Luís Gabriel Marchió Batista (@luismarchio03).</description>
    <link>https://dev.to/luismarchio03</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%2F2043121%2F6bda329c-4f9e-4f0d-a17c-b5963d6e32fe.jpg</url>
      <title>DEV Community: Luís Gabriel Marchió Batista</title>
      <link>https://dev.to/luismarchio03</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/luismarchio03"/>
    <language>en</language>
    <item>
      <title>DevLog #01 — Aloy: Introdução ao projeto Aloy</title>
      <dc:creator>Luís Gabriel Marchió Batista</dc:creator>
      <pubDate>Thu, 24 Apr 2025 12:09:38 +0000</pubDate>
      <link>https://dev.to/luismarchio03/devlog-01-aloy-introducao-ao-projeto-aloy-5406</link>
      <guid>https://dev.to/luismarchio03/devlog-01-aloy-introducao-ao-projeto-aloy-5406</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.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%2Fw3xwz47knsyqjr3pk0lb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fw3xwz47knsyqjr3pk0lb.jpg" alt="Image description" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📅 Data: 23 de Abril de 2025&lt;/p&gt;

&lt;p&gt;✍️ Autor: Luís Gabriel Marchió Batista&lt;/p&gt;




&lt;p&gt;Fala pessoal, tudo certo?&lt;/p&gt;

&lt;p&gt;Gostaria de compartilhar com vocês um projeto pessoal que tenho desenvolvido nos últimos meses… e que tem me deixado bem empolgado.&lt;/p&gt;

&lt;p&gt;Cerca de dois meses atrás, comecei a pensar em como poderia organizar melhor minha vida, automatizar minhas anotações, rotinas diárias, lembretes, enfim...&lt;/p&gt;

&lt;p&gt;Mas aí bateu a pergunta:&lt;/p&gt;

&lt;p&gt;"Por que me limitar a automatizar só o básico?"&lt;/p&gt;

&lt;p&gt;O que estava me travando não era a tecnologia em si, mas sim as limitações das assistentes virtuais atuais e das ferramentas atuais… tipo a Alexa, o Google Assistant, ferramentas que não se comunicam entre si, etc…&lt;/p&gt;

&lt;p&gt;Elas são feitas pra atender todo mundo, de forma genérica. E aí o resultado é sempre o mesmo: uma solução mediana, que serve pra todo mundo… mas NUNCA uma funcionalidade extremamente forte e completa para o meu caso ou para o seu caso.&lt;/p&gt;

&lt;p&gt;Comecei a me questionar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Por que eu preciso de 30 ferramentas diferentes de IA pra fazer tarefas simples no meu dia a dia?&lt;/li&gt;
&lt;li&gt;Por que essas ferramentas não conversam entre si?&lt;/li&gt;
&lt;li&gt;Por que tudo que eu uso hoje é centralizado por empresas terceiras, que impõem limites e travam funcionalidades?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Foi aí que eu pensei:&lt;/p&gt;

&lt;p&gt;Por que não criar minha própria assistente virtual? Algo feito sob medida, do meu jeito. Local, modular, privada, customizada para as minhas necessidades.&lt;/p&gt;

&lt;p&gt;Assim nasceu a ideia da Aloy (obs: sim, o nome é inspirado na franquia da sony: Horizon ksksks)&lt;/p&gt;




&lt;h3&gt;
  
  
  O que é a Aloy, afinal?
&lt;/h3&gt;

&lt;p&gt;A Aloy é uma assistente pessoal inteligente, construída para rodar localmente, ela roda no seu desktop sem depender da clouds services. A proposta dela é ser:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Privada, onde seus dados são gerenciados apenas por você&lt;/li&gt;
&lt;li&gt;Modular, você escolhe quais blocos quer rodar naquele momento e tem a liberdade total de adicionar novos módulos conforme surgir a necessidade, seja por conta de um trabalho novo ou de um projeto novo… você sempre pode remover ou adicionar módulos&lt;/li&gt;
&lt;li&gt;Extensível, você pode criar seus próprios comandos e personalizar com as suas palavras e jeitos… afinal a LLM roda na sua maquina local, você pode treina-la da forma que preferir. O banco de dados é seu, você desenvolve o cérebro do seu modelo de IA&lt;/li&gt;
&lt;li&gt;Visual, com uma interface bonita e futurista. As cores predominantes são roxo, azul e preto — pra dar aquele ar de tecnologia, futuro… e porque roxo é a melhor cor que tem.&lt;/li&gt;
&lt;li&gt;E principalmente, útil de verdade, sem enrolação&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ela entende comandos em linguagem natural, e já começa a transformar essas frases em ações dentro do seu próprio sistema operacional ou apenas em uma conversa amigável adaptando sempre o contexto para melhor atender você nas suas necessidades. &lt;/p&gt;




&lt;h3&gt;
  
  
  Um projeto pessoal, não um produto
&lt;/h3&gt;

&lt;p&gt;Importante dizer: a Aloy não é um projeto comercial.&lt;/p&gt;

&lt;p&gt;Ela não foi feita pra ser vendida como "a solução perfeita pra todo mundo”&lt;/p&gt;

&lt;p&gt;Ela nasceu pra mim, pras minhas necessidades, pro meu estilo de vida.&lt;/p&gt;

&lt;p&gt;O que eu queria era:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Algo 100% meu&lt;/li&gt;
&lt;li&gt;Que eu pudesse editar, adaptar, reescrever se quisesse&lt;/li&gt;
&lt;li&gt;Que não dependesse de nenhum provedor cloud (AWS, Google, Azure...)&lt;/li&gt;
&lt;li&gt;Que rodasse local, com meus dados, sob meu controle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;E a visão de futuro é clara:&lt;/p&gt;

&lt;p&gt;Transformar a Aloy em um projeto open source, pra que qualquer pessoa possa fazer o mesmo — editar, adicionar funcionalidades, e criar uma versão da Aloy que seja perfeita pra sua realidade.&lt;/p&gt;

&lt;p&gt;Porque cada um tem suas próprias limitações e seus próprios desafios no dia a dia. E nenhuma solução genérica vai resolver isso melhor do que algo feito sob medida por você mesmo.&lt;br&gt;
Esse DevLog é escrito de Dev (e um toque de IA para agilizar a vida ksks) para Dev &lt;/p&gt;

&lt;p&gt;A Aloy é simplesmente:&lt;/p&gt;

&lt;p&gt;Liberdade, autonomia e controle.&lt;/p&gt;




&lt;h3&gt;
  
  
  O que já tá funcionando até agora?
&lt;/h3&gt;

&lt;p&gt;Apesar de estar nos estágios iniciais, já tenho alguns serviços da Aloy rodando&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uma interface desktop em Electron + React + Tailwind + Shadcn/ui&lt;/li&gt;
&lt;li&gt;Um monitor de recursos do hardware em Go, que acompanha CPU, RAM, Armazenamento e etc..&lt;/li&gt;
&lt;li&gt;Um serviço de processamento de linguagem natural, usando uma LLM local (GEMMA) via LM Studio, escrito em Python com FastAPI&lt;/li&gt;
&lt;li&gt;A primeira funcionalidade real: o Aloy-Scheduler, pra criar alarmes e agendamentos simples… Esse serviços está escrito em Node e se conecta diretamente com o Google Calendar (nesse caso dependendo sim de uma alternativa externa para comunicação com entre vários dispositivos. Provavelmente como uma solução temporária)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No  quesito arquitetura utilizo microservices, para comunicação HTTP e RabbitMQ e por fim, para iniciar todo o projeto ALOY, eu encapsulo containers docker dentro de um docker-compose (onde eu tbm ligo serviços externos como o RabbitMQ e o Localstack para rodar localmente).&lt;/p&gt;




&lt;h3&gt;
  
  
  Por que isso importa?
&lt;/h3&gt;

&lt;p&gt;Porque eu não quero mais depender de ferramentas limitadas. Quero poder dizer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Aloy, me acorde às 7h da amanhã”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;E ela fazer isso, do meu jeito, com minhas ferramentas, do jeito que eu configurei.&lt;/p&gt;

&lt;p&gt;Sem pagar mensalidade.&lt;/p&gt;

&lt;p&gt;Sem abrir mão da minha privacidade.&lt;/p&gt;




&lt;h3&gt;
  
  
  O que vem a seguir?
&lt;/h3&gt;

&lt;p&gt;Os próximos passos do projeto basicamente é implementar a parte de conversação por áudio: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Expandir o NLP pra entender mais tipos de frases&lt;/li&gt;
&lt;li&gt;Criar serviços para converter áudios em texto&lt;/li&gt;
&lt;li&gt;Criar serviços para converter texto em áudios&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  💬 Curtiu a proposta?
&lt;/h3&gt;

&lt;p&gt;Bem, é isso, se você curtiu essa proposta me segue ai para ver os próximos DevLogs do projeto Aloy, em breve eu vou abrir o projeto para algo full open source, atualmente o único repositório publico é o frontend em Electron e React&lt;/p&gt;

&lt;p&gt;Vou deixar o GitHub e algumas redes sociais aqui em baixo: &lt;/p&gt;

&lt;p&gt;🌐 &lt;a href="https://luismarchio-portfolio.vercel.app/" rel="noopener noreferrer"&gt;https://luismarchio-portfolio.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📸 &lt;a href="https://www.instagram.com/luis_marchio/" rel="noopener noreferrer"&gt;https://www.instagram.com/luis_marchio/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💼 &lt;a href="https://www.linkedin.com/in/lu%C3%ADs-gabriel-marchi%C3%B3-batista-4a8b58287/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/luís-gabriel-marchió-batista-4a8b58287/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🐱 &lt;a href="https://github.com/LuisMarchio03" rel="noopener noreferrer"&gt;https://github.com/LuisMarchio03&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Estou sempre aberto a criticas construtivas, ideias ou apenas trocar conhecimento mesmo…&lt;/p&gt;

&lt;p&gt;Obrigado por ler até aqui,&lt;/p&gt;

&lt;p&gt;Ass. LuisMarchio03&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>O que é o Virtual DOM e por que ele torna o React tão eficiente?</title>
      <dc:creator>Luís Gabriel Marchió Batista</dc:creator>
      <pubDate>Sun, 08 Sep 2024 18:12:03 +0000</pubDate>
      <link>https://dev.to/luismarchio03/o-que-e-o-virtual-dom-e-por-que-ele-torna-o-react-tao-eficiente-47h8</link>
      <guid>https://dev.to/luismarchio03/o-que-e-o-virtual-dom-e-por-que-ele-torna-o-react-tao-eficiente-47h8</guid>
      <description>&lt;p&gt;Com a crescente complexidade das aplicações web modernas, a necessidade de otimização e desempenho tornou-se um aspecto essencial do desenvolvimento. O React, uma das bibliotecas JavaScript mais populares, trouxe consigo uma solução inovadora para melhorar a eficiência na manipulação da interface de usuário: o Virtual DOM. Este conceito desempenha um papel fundamental no desempenho superior do React. Neste artigo, vamos entender o que é o DOM e o Virtual DOM, como eles funcionam e por que o Virtual DOM é uma peça tão importante para o sucesso do React.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O que é o DOM?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O Document Object Model (DOM) é uma interface de programação que representa a estrutura de documentos HTML e XML como uma árvore de nós. Ele é o elo entre o código JavaScript e os elementos de uma página web, permitindo que o conteúdo e a estrutura sejam acessados e manipulados dinamicamente.&lt;/p&gt;

&lt;p&gt;Quando um desenvolvedor precisa modificar um elemento da página, como adicionar um novo componente ou atualizar o conteúdo de um elemento de texto, ele faz isso através do DOM. No entanto, essa interação direta com o DOM pode ser lenta e ineficiente, especialmente em aplicações complexas que exigem muitas alterações frequentes na interface do usuário.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O Problema do DOM Real&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A manipulação direta do DOM real tem um custo de desempenho considerável. Cada vez que o DOM é atualizado, o navegador precisa recalcular o layout da página e redesenhar os elementos, o que pode ser uma tarefa demorada. Em grandes aplicações web com muitas interações dinâmicas, essas atualizações constantes podem causar lentidão, levando a uma experiência do usuário prejudicada.&lt;/p&gt;

&lt;p&gt;Historicamente, muitos frameworks JavaScript atualizavam o DOM com mais frequência do que o necessário, mesmo para pequenas mudanças. Essa abordagem, embora funcional, não era otimizada. Diante desse desafio, a equipe do Facebook criou uma solução inovadora: o Virtual DOM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O que é o Virtual DOM?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O Virtual DOM é uma representação leve e em memória do DOM real. Ele é uma cópia simplificada do DOM que existe apenas na memória e não interage diretamente com o navegador. O Virtual DOM permite ao React atualizar a interface do usuário de maneira muito mais eficiente.&lt;/p&gt;

&lt;p&gt;Quando há uma mudança no estado de um componente React, o Virtual DOM é atualizado primeiro. O React, então, compara a versão atual do Virtual DOM com a versão anterior, utilizando um processo chamado diffing, que identifica as mudanças mínimas necessárias para atualizar o DOM real. Esse processo evita a atualização desnecessária de elementos e minimiza o impacto no desempenho da aplicação.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Como o Virtual DOM Funciona?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O funcionamento do Virtual DOM pode ser explicado em três etapas principais:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alteração de Estado&lt;/strong&gt;&lt;br&gt;
Sempre que há uma mudança de estado em um componente (geralmente via setState), o React gera uma nova árvore de nós que representa o estado atualizado do componente no Virtual DOM. Neste ponto, duas versões da árvore virtual coexistem na memória: a anterior e a atualizada.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Diffing&lt;/strong&gt;&lt;br&gt;
O React, então, compara essas duas árvores usando um algoritmo de diferenciação eficiente, conhecido como algoritmo heurístico, que reduz a complexidade dessa comparação de O(n³) para O(n). Esse processo mapeia as diferenças entre as duas árvores, determinando quais partes precisam ser alteradas no DOM real.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Re-renderização&lt;/strong&gt;&lt;br&gt;
Depois que o diffing é concluído, o React aplica as mudanças mínimas necessárias ao DOM real. Esse processo é altamente otimizado, pois o React agrupa as atualizações em lote, o que significa que várias modificações podem ser aplicadas de uma só vez, em vez de atualizar o DOM para cada pequena mudança.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reconciliation: O Processo de Atualização Otimizado&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A fase de Reconciliation (Reconciliação) é onde o React determina as modificações necessárias para o DOM real. É nesse momento que o algoritmo de diffing é utilizado para comparar as duas versões do Virtual DOM. A eficiência desse processo é fundamental para garantir a alta performance das aplicações React.&lt;/p&gt;

&lt;p&gt;Para acelerar ainda mais esse processo, o React permite que os desenvolvedores utilizem chaves (ou keys) ao renderizar listas de elementos. Isso ajuda o algoritmo de diffing a identificar rapidamente quais elementos mudaram, tornando as atualizações ainda mais eficientes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O Impacto do Virtual DOM no Desempenho&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Um dos maiores benefícios do Virtual DOM é a redução drástica no número de interações com o DOM real. Como já discutido, a manipulação direta do DOM é cara em termos de desempenho. Ao interpor o Virtual DOM entre o código e o DOM real, o React consegue limitar a quantidade de operações que precisam ser realizadas, otimizando a performance da aplicação.&lt;/p&gt;

&lt;p&gt;Essa abordagem também facilita o desenvolvimento de interfaces complexas e dinâmicas, sem que o desenvolvedor precise se preocupar tanto com a otimização manual do DOM. O React cuida de todo o processo de atualização de forma eficiente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fiber: A Nova Era da Reconciliação no React&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Com a introdução do React 16, uma nova engine de reconciliação chamada Fiber foi implementada. O objetivo do Fiber é melhorar ainda mais a capacidade do React de lidar com atualizações de interface, especialmente em cenários onde é preciso dividir grandes tarefas em partes menores para evitar travamentos na interface do usuário.&lt;/p&gt;

&lt;p&gt;Para saber mais sobre o Fiber e seu impacto na reconciliação do React, você pode consultar o guia completo no GitHub.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusão&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O conceito de Virtual DOM é uma das principais razões pelas quais o React se tornou tão popular e amplamente utilizado para o desenvolvimento de aplicações web modernas. Ao introduzir uma camada intermediária entre o código e o DOM real, o React consegue otimizar o processo de atualização da interface do usuário, proporcionando uma experiência mais rápida e eficiente.&lt;/p&gt;

&lt;p&gt;Com a adoção de algoritmos avançados, como o diffing, e o foco na redução de operações desnecessárias no DOM real, o React permite que desenvolvedores criem interfaces complexas com excelente desempenho, sem precisar lidar diretamente com as ineficiências do DOM. E com a introdução do Fiber, o futuro do React parece ainda mais promissor em termos de desempenho e usabilidade.&lt;/p&gt;

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