<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Filipe Teixeira</title>
    <link>https://filipeteixeira.com.br/blog/</link>
    <description>Recent content on Filipe Teixeira</description>
    <generator>Hugo</generator>
    <language>pt-br</language>
    <lastBuildDate>Wed, 31 Dec 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://filipeteixeira.com.br/blog/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Do caos ao controle: interfaces reativas com JS puro</title>
      <link>https://filipeteixeira.com.br/blog/posts/do-caos-ao-controle-interfaces-reativas-com-js-puro/</link>
      <pubDate>Wed, 31 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://filipeteixeira.com.br/blog/posts/do-caos-ao-controle-interfaces-reativas-com-js-puro/</guid>
      <description>&lt;p&gt;Manter a interface sincronizada com os dados manualmente é um dos maiores desafios no desenvolvimento front-end. Quando o valor de uma variável muda, todos os elementos do DOM que dependem dela precisam ser atualizados individualmente. Para resolver isso, vamos ver neste artigo como podemos construir uma estrutura de &lt;strong&gt;Estado Reativo&lt;/strong&gt;, sem precisar importar bibliotecas inteiras apenas para isso.&lt;/p&gt;&#xA;&lt;h3 id=&#34;o-núcleo-de-dados-reactivestate&#34;&gt;O Núcleo de Dados (ReactiveState)&lt;/h3&gt;&#xA;&lt;p&gt;A primeira coisa que vamos fazer é criar um local centralizado para os dados. Ele é o estado atual da aplicação. Ele vai ser nosso &amp;ldquo;Single Source of Truth&amp;rdquo; e vai carregar todas as propriedades e registrar suas mudanças. Além disso, para ser realmente reativo, vamos usar os eventos do JavaScript para notificar a aplicação toda quando o estado for modificado. (Mais tarde vamos ver o que fazemos com essa informação.)&lt;/p&gt;</description>
    </item>
    <item>
      <title>O dia em que a programação ganhou um &#34;metrô&#34;</title>
      <link>https://filipeteixeira.com.br/blog/posts/o-dia-em-que-a-programacao-ganhou-um-metro/</link>
      <pubDate>Tue, 16 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://filipeteixeira.com.br/blog/posts/o-dia-em-que-a-programacao-ganhou-um-metro/</guid>
      <description>&lt;h1 id=&#34;o-dia-em-que-a-programação-ganhou-um-metrô&#34;&gt;O dia em que a programação ganhou um &amp;ldquo;metrô&amp;rdquo;&lt;/h1&gt;&#xA;&lt;p&gt;Durante muito tempo, aprender programação era como tentar chegar a um lugar distante &lt;strong&gt;a pé&lt;/strong&gt;, por ruas mal iluminadas, cheias de buracos e pedras soltas.&lt;/p&gt;&#xA;&lt;p&gt;Não era impossível.&lt;br&gt;&#xA;Mas exigia fôlego, paciência e uma boa dose de teimosia.&lt;/p&gt;&#xA;&lt;p&gt;Muita gente desistia no meio do caminho — não porque não fosse capaz, mas porque o trajeto era cansativo demais logo no começo.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Como funciona uma LLM</title>
      <link>https://filipeteixeira.com.br/blog/posts/como-funciona-uma-llm/</link>
      <pubDate>Thu, 19 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://filipeteixeira.com.br/blog/posts/como-funciona-uma-llm/</guid>
      <description>&lt;h1 id=&#34;a-inteligência-artificial-como-um-bibliotecário-eletrônico-avançado&#34;&gt;A Inteligência Artificial como um Bibliotecário Eletrônico Avançado&lt;/h1&gt;&#xA;&lt;p&gt;Para compreender o funcionamento de um Modelo de Linguagem Grande (LLM), como o Gemini, pode-se imaginá-lo como um bibliotecário eletrônico extremamente avançado. Pense em um sistema que tem acesso instantâneo a praticamente todo o conhecimento textual já produzido no mundo e é capaz de processar essa vastidão de informações em questão de milissegundos.&lt;/p&gt;&#xA;&lt;h2 id=&#34;a-analogia-com-a-llm&#34;&gt;A Analogia com a LLM&lt;/h2&gt;&#xA;&lt;p&gt;Uma LLM opera de maneira similar a esse bibliotecário eletrônico. Ao questionar uma LLM, por exemplo, &amp;ldquo;Como funciona a fotossíntese? Responda como se eu tivesse 5 anos&amp;rdquo;, as &amp;ldquo;ações&amp;rdquo; (processos computacionais) que ela executa são:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Primeiros passos com visão computacional usando Python &#43; OpenCV &#43; MediaPipe</title>
      <link>https://filipeteixeira.com.br/blog/posts/primeiros-passos-com-python-e-opencv/</link>
      <pubDate>Mon, 16 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://filipeteixeira.com.br/blog/posts/primeiros-passos-com-python-e-opencv/</guid>
      <description>&lt;h2 id=&#34;por-que-usar-opencv-e-mediapipe&#34;&gt;Por que usar OpenCV e MediaPipe?&lt;/h2&gt;&#xA;&lt;p&gt;O &lt;strong&gt;OpenCV&lt;/strong&gt; é uma biblioteca poderosa para processamento de imagens, e o &lt;strong&gt;MediaPipe&lt;/strong&gt; (desenvolvido pelo Google) oferece soluções prontas para tarefas como detecção de mãos. Juntos, eles simplificam o desenvolvimento, já que grande parte do trabalho pesado (como detectar landmarks das mãos) já está implementada. Vamos explorar como configurar e usar essas ferramentas para criar um sistema de controle por gestos.&lt;/p&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/a16Ml2bOch0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pré-requisitos&#34;&gt;Pré-requisitos&lt;/h2&gt;&#xA;&lt;p&gt;Antes de começar, instale as dependências necessárias. Execute no terminal:&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
