<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Gabriel Rodrigues — Blog</title><description>Engenheiro Frontend Senior escrevendo sobre Vue, Angular, TypeScript e arquitetura web.</description><link>https://gabriel-rodrigues.com/</link><language>pt-BR</language><item><title>Como Eu Construí o CasinoCraftz Slots com IA: Diário de Engenharia por Fases</title><link>https://gabriel-rodrigues.com/pt/blog/casinocraftz-slots-diario-engenharia-ai/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/casinocraftz-slots-diario-engenharia-ai/</guid><description>Um relato prático, em primeira pessoa, de como usei IA em ciclos reais de implementação com foco em segurança de bridge, paridade e fechamento de milestone.</description><pubDate>Fri, 03 Apr 2026 00:00:00 GMT</pubDate><category>ia</category><category>engenharia</category><category>slots</category><category>testes</category><category>astro</category></item><item><title>Lições de Versionamento de Bridge no CasinoCraftz: Como Evitamos Drift Entre Rotas</title><link>https://gabriel-rodrigues.com/pt/blog/casinocraftz-versionamento-bridge-paridade-licoes/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/casinocraftz-versionamento-bridge-paridade-licoes/</guid><description>Um relato prático sobre versionamento de envelope, parsing seguro, isolamento de autoridade e checks de paridade EN/PT no CasinoCraftz.</description><pubDate>Fri, 03 Apr 2026 00:00:00 GMT</pubDate><category>arquitetura</category><category>eventos</category><category>testes</category><category>i18n</category><category>slots</category></item><item><title>Adicionar aos Favoritos: De APIs do Navegador a PWA Install</title><link>https://gabriel-rodrigues.com/pt/blog/add-to-favorites-bookmark-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/add-to-favorites-bookmark-then-vs-now/</guid><description>Minha resposta no SO de 2015 mostrava window.external.AddFavorite() para IE. Em 2026, navegadores removeram bookmarking programático — mas PWA Install substituiu.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>javascript</category><category>navegadores</category><category>stackoverflow</category><category>ux</category></item><item><title>Alamofire Swift HTTP: De Biblioteca Essencial a Conveniencia Opcional</title><link>https://gabriel-rodrigues.com/pt/blog/alamofire-swift-http-requests-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/alamofire-swift-http-requests-then-vs-now/</guid><description>Minha resposta no Stack Overflow sobre requisicoes HTTP com Alamofire em Swift recebeu 5 votos. Em 2026, URLSession com async/await e concorrencia estruturada torna o Alamofire opcional para a maioria dos projetos.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>swift</category><category>ios</category><category>networking</category><category>stackoverflow</category></item><item><title>Licoes de Validacao de Formularios AngularJS: De $dirty/$valid a Validacao por Schema</title><link>https://gabriel-rodrigues.com/pt/blog/angularjs-form-validation-lessons-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/angularjs-form-validation-lessons-then-vs-now/</guid><description>Minha resposta no Stack Overflow sobre validacao de formularios AngularJS recebeu 5 votos. Em 2026, React Hook Form com Zod ou Valibot mostra o quanto o gerenciamento de estado de formularios evoluiu.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>angularjs</category><category>formulários</category><category>stackoverflow</category><category>história</category></item><item><title>Campos BLOB em Bancos de Dados: Quando Armazenar Dados Binários e Quando Não</title><link>https://gabriel-rodrigues.com/pt/blog/blob-database-fields-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/blob-database-fields-then-vs-now/</guid><description>De uma resposta de 2015 no Stack Overflow sobre tipos BLOB no MySQL e Firebird até a era do object storage em 2026 — por que a resposta para &quot;como guardar arquivos no banco&quot; agora é &quot;não guarde.&quot;</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>banco-de-dados</category><category>stackoverflow</category><category>arquitetura</category><category>armazenamento</category></item><item><title>Bloquear Caracteres Especiais no Input: De Regex a Validação Nativa</title><link>https://gabriel-rodrigues.com/pt/blog/block-special-characters-input-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/block-special-characters-input-then-vs-now/</guid><description>Minha resposta no Stack Overflow de 2015 usava eventos keypress para filtrar caracteres. Em 2026, o evento input e validação nativa fazem melhor.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>html</category><category>javascript</category><category>validação</category><category>stackoverflow</category></item><item><title>Bootstrap Modal + Tooltip: Da Guerra de Plugins jQuery ao HTML Nativo</title><link>https://gabriel-rodrigues.com/pt/blog/bootstrap-modal-tooltip-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/bootstrap-modal-tooltip-then-vs-now/</guid><description>Minha resposta no Stack Overflow de 2015 resolveu conflitos entre modal e tooltip do Bootstrap no mesmo elemento. Em 2026, dialog e popover nativos tornam o Bootstrap opcional.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>bootstrap</category><category>javascript</category><category>stackoverflow</category><category>ui</category></item><item><title>Classes Responsivas do Bootstrap: De visible-xs a Container Queries</title><link>https://gabriel-rodrigues.com/pt/blog/bootstrap-responsive-classes-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/bootstrap-responsive-classes-then-vs-now/</guid><description>Minha resposta no Stack Overflow sobre visible-xs e hidden-md do Bootstrap 3 recebeu 5 votos. Em 2026, utilitarios do Bootstrap 5 e container queries nativas do CSS lidam muito melhor com visibilidade responsiva.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>bootstrap</category><category>css</category><category>responsivo</category><category>stackoverflow</category></item><item><title>Navbar Responsiva com Bootstrap: Do jQuery Collapse à Navegação Só com CSS</title><link>https://gabriel-rodrigues.com/pt/blog/bootstrap-responsive-navbar-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/bootstrap-responsive-navbar-then-vs-now/</guid><description>Respondi uma pergunta no Stack Overflow sobre navbars responsivas com Bootstrap 3 em 2017. Hoje você faz a mesma coisa sem nenhum JavaScript.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>bootstrap</category><category>css</category><category>responsivo</category><category>stackoverflow</category></item><item><title>Geolocalização: Como Identificar a Cidade do Usuário no Navegador</title><link>https://gabriel-rodrigues.com/pt/blog/browser-geolocation-user-city-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/browser-geolocation-user-city-then-vs-now/</guid><description>Minha pergunta no Stack Overflow de 2015 usava navigator.geolocation livremente. Em 2026, restrições de privacidade mudaram toda a abordagem.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>javascript</category><category>geolocalização</category><category>stackoverflow</category><category>privacidade</category></item><item><title>Alinhamento de Botões em UX: Da Guerra de Plataformas ao Consenso dos Design Systems</title><link>https://gabriel-rodrigues.com/pt/blog/button-alignment-ux-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/button-alignment-ux-then-vs-now/</guid><description>Em 2015, respondi uma pergunta no Stack Overflow sobre alinhamento de botões. O debate era Windows vs Mac. Hoje, os design systems resolveram a discussão.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>ux</category><category>design</category><category>stackoverflow</category><category>acessibilidade</category></item><item><title>Centralizar um Modal com CSS: De Hacks com Transform ao Dialog Nativo</title><link>https://gabriel-rodrigues.com/pt/blog/center-modal-css-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/center-modal-css-then-vs-now/</guid><description>De uma resposta de 2016 no Stack Overflow sobre centralizar modais Bootstrap com margens negativas até 2026 — &lt;dialog&gt; nativo, flexbox e o fim dos truques de centralização.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>css</category><category>bootstrap</category><category>stackoverflow</category><category>layout</category></item><item><title>Verificar Email via AJAX Antes do Submit: De jQuery Blur a Fetch e Tradeoffs de Segurança</title><link>https://gabriel-rodrigues.com/pt/blog/check-email-ajax-before-submit-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/check-email-ajax-before-submit-then-vs-now/</guid><description>De uma resposta de 2016 no Stack Overflow sobre verificar disponibilidade de email com jQuery AJAX até 2026 — fetch, AbortController, debouncing e por que enumeração de usuários é um risco real.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>javascript</category><category>formulários</category><category>validação</category><category>stackoverflow</category></item><item><title>Code Smell Explicado: De Buzzword a Guia Prático de Refatoração</title><link>https://gabriel-rodrigues.com/pt/blog/code-smell-explained-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/code-smell-explained-then-vs-now/</guid><description>O que code smells realmente são, como identificar, e como as ferramentas evoluíram do catálogo do Fowler até detecção por IA. Uma perspectiva then-vs-now de uma pergunta real no SO.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>arquitetura</category><category>refatoração</category><category>stackoverflow</category><category>boas-práticas</category></item><item><title>Bugs do contenteditable: Como a Dor dos Browsers Criou Editores Modernos</title><link>https://gabriel-rodrigues.com/pt/blog/contenteditable-bugs-rich-text-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/contenteditable-bugs-rich-text-then-vs-now/</guid><description>Minha resposta no Stack Overflow lidava com bugs de padding do Firefox no contenteditable. Em 2026, Tiptap, ProseMirror e Lexical existem porque ninguém deveria fazer rich text na mão.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>html</category><category>navegadores</category><category>stackoverflow</category><category>editores</category></item><item><title>Formatação Decimal em C/C++: De printf a std::format</title><link>https://gabriel-rodrigues.com/pt/blog/cpp-limit-decimal-places-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/cpp-limit-decimal-places-then-vs-now/</guid><description>Minha resposta no SO de 2015 usava printf(&quot;%.2f&quot;). C++20 trouxe std::format com sintaxe estilo Python para C++.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>cpp</category><category>formatação</category><category>stackoverflow</category><category>funcionalidades</category></item><item><title>Templates C++: De Programação Genérica Básica a Concepts do C++20</title><link>https://gabriel-rodrigues.com/pt/blog/cpp-templates-generics-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/cpp-templates-generics-then-vs-now/</guid><description>Minha pergunta no SO de 2015 sobre templates C++. Em 2026, Concepts restringem templates com mensagens de erro claras e intenção expressiva.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>cpp</category><category>templates</category><category>stackoverflow</category><category>funcionalidades</category></item><item><title>CSS @import vs link: O Debate Que CSS Layers Ressuscitou</title><link>https://gabriel-rodrigues.com/pt/blog/css-import-vs-link-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/css-import-vs-link-then-vs-now/</guid><description>Minha pergunta no Stack Overflow de 2015 sobre incluir stylesheets tinha resposta clara: use link. Em 2026, @import encontrou novo propósito com @layer.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>css</category><category>performance</category><category>stackoverflow</category><category>desenvolvimento-web</category></item><item><title>Pré-processadores CSS em 2026: Sass vs Less vs Stylus — Você Ainda Precisa Deles?</title><link>https://gabriel-rodrigues.com/pt/blog/css-preprocessors-sass-less-stylus-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/css-preprocessors-sass-less-stylus-then-vs-now/</guid><description>Uma pergunta do Stack Overflow de 2015 comparava Sass, Less e Stylus. Em 2026, o CSS nativo alcançou eles. Veja o que mudou e quando pré-processadores ainda fazem sentido.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>css</category><category>sass</category><category>stackoverflow</category><category>desenvolvimento-web</category></item><item><title>CSS de Impressão para Páginas A4: De @media print a Paged.js</title><link>https://gabriel-rodrigues.com/pt/blog/css-print-styles-a4-pages-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/css-print-styles-a4-pages-then-vs-now/</guid><description>Minha pergunta no SO de 2015 sobre estilos CSS para impressão A4. Em 2026, regras @page e Paged.js dão controle preciso sobre saída impressa.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>css</category><category>impressão</category><category>stackoverflow</category><category>layout</category></item><item><title>CSS word-wrap e Overflow de Texto: De Hack a Padrão</title><link>https://gabriel-rodrigues.com/pt/blog/css-word-wrap-overflow-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/css-word-wrap-overflow-then-vs-now/</guid><description>Minha resposta no Stack Overflow de 2015 usava word-wrap: break-word como fix rápido. Em 2026, CSS lida com overflow de texto com elegância.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>css</category><category>stackoverflow</category><category>tipografia</category><category>desenvolvimento-web</category></item><item><title>Estilizar Scrollbar: De Hacks WebKit a Padroes W3C</title><link>https://gabriel-rodrigues.com/pt/blog/custom-scrollbar-styling-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/custom-scrollbar-styling-then-vs-now/</guid><description>Minha resposta no Stack Overflow de 2015 usava pseudo-elementos ::-webkit-scrollbar para scrollbars customizadas. Em 2026, duas propriedades CSS padrao substituem dezenas de pseudo-elementos.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>css</category><category>ux</category><category>stackoverflow</category><category>design</category></item><item><title>Datepicker com Dias Especificos: De beforeShowDay a Controles Modernos de Data</title><link>https://gabriel-rodrigues.com/pt/blog/datepicker-enable-specific-days-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/datepicker-enable-specific-days-then-vs-now/</guid><description>Minha resposta no Stack Overflow sobre habilitar apenas dias especificos em um datepicker Bootstrap recebeu 5 votos. Em 2026, inputs nativos de data e bibliotecas headless fazem isso com muito menos codigo.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>bootstrap</category><category>formulários</category><category>javascript</category><category>stackoverflow</category></item><item><title>Deletar Linhas de Tabela Dinamicamente com JavaScript</title><link>https://gabriel-rodrigues.com/pt/blog/delete-table-row-dynamically-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/delete-table-row-dynamically-then-vs-now/</guid><description>Minha resposta no SO de 2016 usava parentNode.removeChild. Em 2026, element.remove() e closest() resolvem em uma linha.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>javascript</category><category>dom</category><category>stackoverflow</category><category>html</category></item><item><title>disabled vs readonly: O Atributo HTML Que Ninguém Acerta</title><link>https://gabriel-rodrigues.com/pt/blog/disabled-vs-readonly-html-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/disabled-vs-readonly-html-then-vs-now/</guid><description>Minha resposta no Stack Overflow de 2015 mostrou que disabled=&quot;false&quot; ainda desabilita. Em 2026, o atributo inert adiciona uma terceira opção.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>html</category><category>formulários</category><category>stackoverflow</category><category>acessibilidade</category></item><item><title>Programacao Drag-and-Drop: Do Dreamweaver a UIs Geradas por IA</title><link>https://gabriel-rodrigues.com/pt/blog/drag-drop-programming-low-code-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/drag-drop-programming-low-code-then-vs-now/</guid><description>Minha resposta no Stack Overflow de 2014 discutia pros e contras de programacao visual. Em 2026, a linha entre codigo de verdade e construcao visual se dissolveu.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>low-code</category><category>ux</category><category>stackoverflow</category><category>ferramentas</category></item><item><title>Zoom em Imagem com CSS: Efeitos Hover que Escalam</title><link>https://gabriel-rodrigues.com/pt/blog/dynamic-image-zoom-css-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/dynamic-image-zoom-css-then-vs-now/</guid><description>Minha resposta no SO de 2015 usava transform:scale no hover. Em 2026, View Transitions e @starting-style tornam zoom suave nativo.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>css</category><category>animação</category><category>stackoverflow</category><category>design</category></item><item><title>Templates HTML para Email: De Layouts com Tabelas a Ferramentas Modernas</title><link>https://gabriel-rodrigues.com/pt/blog/email-html-templates-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/email-html-templates-then-vs-now/</guid><description>De uma resposta de 2016 no Stack Overflow sobre compatibilidade de HTML em email até 2026 — MJML, React Email, e por que desenvolvimento de email ainda é um universo à parte.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>html</category><category>email</category><category>stackoverflow</category><category>css</category></item><item><title>ES6 Symbol Explicado: O Primitivo Mais Incompreendido do JavaScript</title><link>https://gabriel-rodrigues.com/pt/blog/es6-symbol-explained-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/es6-symbol-explained-then-vs-now/</guid><description>Em 2015, Symbol parecia uma curiosidade sem uso prático. Em 2026, ele sustenta iteradores, iteração assíncrona, limpeza de recursos e toda a camada de metaprogramação do JS.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>javascript</category><category>es6</category><category>stackoverflow</category><category>funcionalidades</category></item><item><title>Imagem de Fallback: Lidando com Imagens Quebradas Graciosamente</title><link>https://gabriel-rodrigues.com/pt/blog/fallback-image-broken-images-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/fallback-image-broken-images-then-vs-now/</guid><description>Minha pergunta no SO de 2015 usava onerror para trocar src de imagem quebrada. Em 2026, picture, skeleton loading e CSS lidam com isso mais elegantemente.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>html</category><category>imagens</category><category>ux</category><category>stackoverflow</category></item><item><title>Filtrar Input de Arquivo por Tipo: Do Atributo accept à File System Access API</title><link>https://gabriel-rodrigues.com/pt/blog/filter-file-input-type-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/filter-file-input-type-then-vs-now/</guid><description>Em 2015, perguntei no Stack Overflow como filtrar inputs de arquivo por tipo. O atributo accept era a resposta — mas hoje temos opções muito mais poderosas.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>html</category><category>formulários</category><category>javascript</category><category>stackoverflow</category></item><item><title>Header Fixo: De position:fixed a position:sticky</title><link>https://gabriel-rodrigues.com/pt/blog/fixed-header-css-sticky-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/fixed-header-css-sticky-then-vs-now/</guid><description>Minha resposta no SO de 2015 mostrava position:fixed com hacks de padding. Em 2026, position:sticky fica no flow até precisar fixar.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>css</category><category>layout</category><category>stackoverflow</category><category>desenvolvimento-web</category></item><item><title>Front-end vs Back-end: Uma Definição Que Continua Mudando</title><link>https://gabriel-rodrigues.com/pt/blog/frontend-vs-backend-explained-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/frontend-vs-backend-explained-then-vs-now/</guid><description>Em 2014, a divisão era clara: jQuery na frente, PHP atrás. Em 2026, server components e edge functions borraram a linha completamente.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>desenvolvimento-web</category><category>carreira</category><category>stackoverflow</category><category>fundamentos</category></item><item><title>Pegar o Nome do Arquivo Atual em PHP: Do $_SERVER ao Roteamento Moderno</title><link>https://gabriel-rodrigues.com/pt/blog/get-current-filename-php-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/get-current-filename-php-then-vs-now/</guid><description>Em 2015, perguntei no Stack Overflow como pegar o nome do arquivo atual em PHP. A resposta era simples — mas frameworks modernos tornaram a pergunta quase irrelevante.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>php</category><category>stackoverflow</category><category>básico</category><category>desenvolvimento-web</category></item><item><title>O Que Pode Ir Dentro de uma Tag Anchor no HTML5</title><link>https://gabriel-rodrigues.com/pt/blog/html5-anchor-tag-content-model-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/html5-anchor-tag-content-model-then-vs-now/</guid><description>Minha resposta no Stack Overflow de 2016 sobre colocar divs dentro de links. Em 2026, HTML válido e HTML acessível são conversas diferentes.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>html</category><category>html5</category><category>stackoverflow</category><category>acessibilidade</category></item><item><title>Atributos data-* HTML5: De Conveniência jQuery a Arquitetura de Framework</title><link>https://gabriel-rodrigues.com/pt/blog/html5-data-attributes-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/html5-data-attributes-then-vs-now/</guid><description>Minha resposta no SO de 2016 mostrou atributos data-* com jQuery .data(). Em 2026, Alpine.js e htmx os usam como sua API inteira.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>html</category><category>javascript</category><category>stackoverflow</category><category>dom</category></item><item><title>Semântica de Formulários HTML5: fieldset, legend, label e optgroup</title><link>https://gabriel-rodrigues.com/pt/blog/html5-form-semantics-fieldset-legend-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/html5-form-semantics-fieldset-legend-then-vs-now/</guid><description>Minha resposta no Stack Overflow de 2015 explicou tags de formulário que a maioria ignorava. Em 2026, conformidade WCAG as tornou essenciais.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>html</category><category>formulários</category><category>acessibilidade</category><category>stackoverflow</category></item><item><title>HTTPS para Aplicações Web: De Opcional a Obrigatório</title><link>https://gabriel-rodrigues.com/pt/blog/https-web-applications-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/https-web-applications-then-vs-now/</guid><description>Minha pergunta no Stack Overflow de 2015 era sobre HTTPS para apps web. Em 2026, não é mais uma pergunta — é o baseline.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>segurança</category><category>desenvolvimento-web</category><category>stackoverflow</category><category>https</category></item><item><title>Input Maiúsculo + Placeholder Minúsculo: Uma Dor de Cabeça CSS, Resolvida</title><link>https://gabriel-rodrigues.com/pt/blog/input-uppercase-placeholder-lowercase-css-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/input-uppercase-placeholder-lowercase-css-then-vs-now/</guid><description>De uma pergunta no Stack Overflow sobre text-transform: uppercase quebrando o estilo do placeholder ao pseudo-elemento ::placeholder totalmente padronizado em 2026.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>css</category><category>formulários</category><category>stackoverflow</category><category>ux</category></item><item><title>Formatação de Datas em Java para Português: De SimpleDateFormat a java.time</title><link>https://gabriel-rodrigues.com/pt/blog/java-date-formatting-portuguese-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/java-date-formatting-portuguese-then-vs-now/</guid><description>De uma pergunta no Stack Overflow sobre formatar datas em português brasileiro com SimpleDateFormat à moderna API java.time e comparação com JS Temporal.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>java</category><category>datetime</category><category>localização</category><category>stackoverflow</category></item><item><title>jQuery DOM Traversal para Vanilla JS: siblings(), next() e Além</title><link>https://gabriel-rodrigues.com/pt/blog/jquery-dom-traversal-vanilla-js-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/jquery-dom-traversal-vanilla-js-then-vs-now/</guid><description>Minha resposta no Stack Overflow explicava siblings() e next() do jQuery. Em 2026, métodos nativos como closest() e :has() cobrem tudo que jQuery oferecia.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>javascript</category><category>jquery</category><category>dom</category><category>stackoverflow</category></item><item><title>MIME Types Explicados: O Que os Navegadores Realmente Fazem com Content-Type</title><link>https://gabriel-rodrigues.com/pt/blog/mime-types-explained-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/mime-types-explained-then-vs-now/</guid><description>De uma pergunta no Stack Overflow de 2015 sobre atributos type em script tags, até a verificação de MIME como questão de segurança em 2026.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>desenvolvimento-web</category><category>http</category><category>stackoverflow</category><category>fundamentos</category></item><item><title>mPDF para Geração Moderna de PDF: Os Engines de Browser Venceram</title><link>https://gabriel-rodrigues.com/pt/blog/mpdf-php-pdf-generation-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/mpdf-php-pdf-generation-then-vs-now/</guid><description>Minha resposta no Stack Overflow lutava com layout e CSS limitado do mPDF. Em 2026, Puppeteer, Playwright e Gotenberg usam engines de browser reais pra PDFs pixel-perfect.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>php</category><category>pdf</category><category>stackoverflow</category><category>ferramentas</category></item><item><title>Múltiplos Modais Bootstrap: Da Guerra de z-index aos Diálogos Nativos</title><link>https://gabriel-rodrigues.com/pt/blog/multiple-bootstrap-modals-stacking-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/multiple-bootstrap-modals-stacking-then-vs-now/</guid><description>De uma pergunta no Stack Overflow de 2015 sobre empilhar modais Bootstrap com hacks de z-index ao elemento nativo &lt;dialog&gt; e a API top-layer em 2026.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>bootstrap</category><category>javascript</category><category>ux</category><category>stackoverflow</category></item><item><title>ORM Explicado: O Que É, Por Que Importa e Como Evoluiu</title><link>https://gabriel-rodrigues.com/pt/blog/orm-explained-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/orm-explained-then-vs-now/</guid><description>De uma resposta de 2016 no Stack Overflow sobre o básico de ORM até as camadas de query type-safe e prontas para edge de 2026 — o que mudou e o que permaneceu.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>banco-de-dados</category><category>orm</category><category>stackoverflow</category><category>arquitetura</category></item><item><title>PHP array_merge vs array_replace vs + Union: O Guia Definitivo</title><link>https://gabriel-rodrigues.com/pt/blog/php-array-merge-replace-union-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/php-array-merge-replace-union-then-vs-now/</guid><description>Minha resposta no Stack Overflow de 2016 desembaraçou a confusão de merge de arrays em PHP. Em 2026, o operador spread simplificou tudo.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>php</category><category>stackoverflow</category><category>arrays</category><category>desenvolvimento-web</category></item><item><title>Calcular Idade em PHP: DateTime::diff Antes e Agora</title><link>https://gabriel-rodrigues.com/pt/blog/php-calculate-age-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/php-calculate-age-then-vs-now/</guid><description>De uma resposta de 2015 no Stack Overflow sobre calcular idade com PHP DateTime até 2026 — a mesma abordagem ainda funciona, mas Carbon e timezones mudaram o jogo.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>php</category><category>datetime</category><category>stackoverflow</category><category>desenvolvimento-web</category></item><item><title>PHP Date e Verificação de Fim de Semana: De date(&quot;w&quot;) a DateTimeImmutable</title><link>https://gabriel-rodrigues.com/pt/blog/php-date-weekend-check-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/php-date-weekend-check-then-vs-now/</guid><description>De uma resposta no Stack Overflow de 2015 sobre verificar fins de semana em PHP até a era moderna de DateTimeImmutable, Carbon e calendários locale-aware.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>php</category><category>datetime</category><category>stackoverflow</category><category>desenvolvimento-web</category></item><item><title>PHP Namespaces e Autoload: Do PSR-0 ao PHP Moderno</title><link>https://gabriel-rodrigues.com/pt/blog/php-namespaces-autoload-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/php-namespaces-autoload-then-vs-now/</guid><description>De uma resposta de 2015 no Stack Overflow explicando namespaces e autoloading em PHP ao mundo PSR-4, Composer e PHP 8.x de 2026.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>php</category><category>stackoverflow</category><category>arquitetura</category><category>boas-práticas</category></item><item><title>Números por Extenso em PHP: De Funções Manuais ao Intl</title><link>https://gabriel-rodrigues.com/pt/blog/php-number-to-words-portuguese-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/php-number-to-words-portuguese-then-vs-now/</guid><description>Minha resposta no Stack Overflow criou uma função recursiva pra escrever números por extenso em português. Em 2026, PHP intl e JS Intl.NumberFormat fazem isso nativamente.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>php</category><category>localização</category><category>stackoverflow</category><category>português</category></item><item><title>Ler CSV em PHP: De fgetcsv() com Dor de Cabeca a Bibliotecas Modernas</title><link>https://gabriel-rodrigues.com/pt/blog/php-read-csv-files-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/php-read-csv-files-then-vs-now/</guid><description>Minha resposta no Stack Overflow de 2015 mostrava como ler CSV em PHP com fgetcsv(). Em 2026, League\Csv e generators resolvem os casos que funcoes brutas nao cobrem.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>php</category><category>csv</category><category>stackoverflow</category><category>dados</category></item><item><title>Threading em PHP: De pthreads a Fibers, ReactPHP e Além</title><link>https://gabriel-rodrigues.com/pt/blog/php-threading-pthreads-fibers-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/php-threading-pthreads-fibers-then-vs-now/</guid><description>De uma pergunta no Stack Overflow sobre threading em PHP com pthreads ao cenário moderno de PHP 8.1 Fibers, ReactPHP, Amp e FrankenPHP em 2026.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>php</category><category>concorrência</category><category>stackoverflow</category><category>arquitetura</category></item><item><title>PHPMailer para Serviços de Email Transacional: Como Paramos de Brigar com SMTP</title><link>https://gabriel-rodrigues.com/pt/blog/phpmailer-transactional-email-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/phpmailer-transactional-email-then-vs-now/</guid><description>De uma resposta de 2016 no Stack Overflow sobre configuração SMTP do PHPMailer até a era das APIs de email transacional em 2026 — por que SMTP direto quase nunca é a escolha certa.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>php</category><category>email</category><category>stackoverflow</category><category>ferramentas</category></item><item><title>Pick List / Dual Listbox: De jQuery Sortable a Drag-and-Drop Headless</title><link>https://gabriel-rodrigues.com/pt/blog/pick-list-dual-listbox-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/pick-list-dual-listbox-then-vs-now/</guid><description>Minha resposta no Stack Overflow sobre construir um pick list dual listbox recebeu 5 votos. Em 2026, bibliotecas headless UI e a API nativa de drag-and-drop tornam esse padrao acessivel por padrao.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>ui</category><category>ux</category><category>javascript</category><category>stackoverflow</category></item><item><title>Barra de Progresso com AJAX e PHP: De Polling a Streams</title><link>https://gabriel-rodrigues.com/pt/blog/progress-bar-ajax-php-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/progress-bar-ajax-php-then-vs-now/</guid><description>Minha pergunta no Stack Overflow de 2015 sobre barras de progresso usava AJAX polling. Em 2026, SSE e ReadableStream fazem nativamente.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>php</category><category>javascript</category><category>ajax</category><category>stackoverflow</category></item><item><title>Remover CSS com jQuery para Estilos Dinâmicos Modernos</title><link>https://gabriel-rodrigues.com/pt/blog/remove-css-jquery-dynamic-styles-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/remove-css-jquery-dynamic-styles-then-vs-now/</guid><description>Minha resposta no Stack Overflow mostrava truques com .css() e .removeAttr(&quot;style&quot;) do jQuery. Em 2026, classList, custom properties e CSSStyleSheet API resolvem estilos dinâmicos nativamente.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>javascript</category><category>css</category><category>jquery</category><category>stackoverflow</category></item><item><title>Removendo Palavras Duplicadas de uma String em PHP: Antes e Agora</title><link>https://gabriel-rodrigues.com/pt/blog/remove-duplicate-words-string-php-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/remove-duplicate-words-string-php-then-vs-now/</guid><description>Minha resposta no Stack Overflow usava explode + array_unique + implode pra deduplicar palavras. Em 2026, o mesmo pipeline ainda funciona — mais regex com backreferences e alternativas modernas.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>php</category><category>strings</category><category>stackoverflow</category><category>algoritmos</category></item><item><title>Reescrever vs Melhorar Incrementalmente: A Pergunta Que Todo Time Enfrenta</title><link>https://gabriel-rodrigues.com/pt/blog/rewrite-vs-incremental-improvement-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/rewrite-vs-incremental-improvement-then-vs-now/</guid><description>De uma resposta de 2015 no Stack Overflow sobre reescrever software de faturamento até a realidade do strangler fig em 2026 — quando reescrever, quando melhorar, e por que a resposta geralmente é os dois.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>arquitetura</category><category>stackoverflow</category><category>gestão</category><category>boas-práticas</category></item><item><title>Mostrar/Esconder Divs com Radio Buttons: CSS :has() Substitui JS</title><link>https://gabriel-rodrigues.com/pt/blog/show-hide-radio-buttons-css-has-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/show-hide-radio-buttons-css-has-then-vs-now/</guid><description>Minha resposta no SO de 2015 usava jQuery para mostrar/esconder divs por radio button. CSS :has() faz isso com zero JavaScript em 2026.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>html</category><category>css</category><category>javascript</category><category>stackoverflow</category></item><item><title>SVG Explicado: De Curiosidade XML a Cidadão de Primeira Classe da Web</title><link>https://gabriel-rodrigues.com/pt/blog/svg-explained-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/svg-explained-then-vs-now/</guid><description>De uma resposta no Stack Overflow de 2015 explicando o que é SVG até os workflows otimizados de componentes SVG em 2026 — como gráficos vetoriais conquistaram a web.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>svg</category><category>html</category><category>stackoverflow</category><category>gráficos</category></item><item><title>Testar no Xcode Sem Licença Paga</title><link>https://gabriel-rodrigues.com/pt/blog/xcode-testing-without-paid-license-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/xcode-testing-without-paid-license-then-vs-now/</guid><description>Minha resposta no SO de 2015 explicava a barreira de $99/ano para testar em dispositivo. Em 2026, provisionamento gratuito é padrão desde o Xcode 7.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>ios</category><category>xcode</category><category>stackoverflow</category><category>swift</category></item><item><title>O Bug do Ano 2038: O Que Eu Expliquei em 2015 e o Que Realmente Aconteceu</title><link>https://gabriel-rodrigues.com/pt/blog/year-2038-bug-then-vs-now/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/year-2038-bug-then-vs-now/</guid><description>Em 2015, escrevi uma resposta no Stack Overflow sobre o problema Y2038. Doze anos depois, veja o que a indústria corrigiu — e o que ainda está quebrado.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>sistemas</category><category>stackoverflow</category><category>história</category><category>unix</category></item><item><title>10 Padrões JavaScript que Aprendi Respondendo 300+ Perguntas no Stack Overflow</title><link>https://gabriel-rodrigues.com/pt/blog/javascript-patterns-stackoverflow/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/javascript-patterns-stackoverflow/</guid><description>Padrões reais de perguntas reais — performance do DOM, debounce, clipboard, upload de arquivos e mais. Cada um me ensinou algo que uso até hoje.</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate><category>javascript</category><category>stackoverflow</category><category>padrões</category><category>desenvolvimento web</category></item><item><title>URLs Compartilháveis de Marca com Cache KV e Proteção contra XSS</title><link>https://gabriel-rodrigues.com/pt/blog/shareable-brand-urls/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/shareable-brand-urls/</guid><description>Como adicionei links compartilháveis ao Company Canvas — com cache no Cloudflare KV para cortar custos de API e uma correção de segurança que quase passei batido.</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate><category>cloudflare</category><category>security</category><category>canvas</category><category>architecture</category></item><item><title>Criando Animações que Contam o que uma Empresa Faz</title><link>https://gabriel-rodrigues.com/pt/blog/story-driven-animations/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/story-driven-animations/</guid><description>Como eu projetei quatro novos estilos de animação em Three.js que transformam palavras-chave de marca em narrativas visuais — de legendas cinematográficas a mapas estelares interativos.</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate><category>three.js</category><category>canvas</category><category>creative-coding</category><category>ai</category></item><item><title>Frontend com IA: Colocando Codigo Gerado pelo Claude em Producao</title><link>https://gabriel-rodrigues.com/pt/blog/ai-powered-frontend/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/ai-powered-frontend/</guid><description>Licoes praticas de usar a API do Claude como servico backend — engenharia de prompts, saida estruturada, tratamento de erros e o padrao Worker proxy.</description><pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate><category>ia</category><category>claude</category><category>cloudflare</category><category>arquitetura</category></item><item><title>Construindo um Gerador de Animacoes Canvas com IA</title><link>https://gabriel-rodrigues.com/pt/blog/building-canvas-generator/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/building-canvas-generator/</guid><description>Como eu construi o Company Canvas — uma ferramenta que transforma qualquer nome de empresa em uma animacao de marca usando Claude AI e Three.js.</description><pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate><category>three.js</category><category>ia</category><category>canvas</category><category>projeto</category></item><item><title>De Projeto Pessoal a Micro-Produto: Adicionando Pagamentos a um Site Portfolio</title><link>https://gabriel-rodrigues.com/pt/blog/from-idea-to-product/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/from-idea-to-product/</guid><description>Como transformei uma vitrine de portfolio em um micro-produto que gera receita com Stripe, versionamento e um preco de $1.</description><pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate><category>stripe</category><category>produto</category><category>cloudflare</category><category>negocios</category></item><item><title>Escalando um Micro-Produto com Skills Estrategicas: O Toolkit do Company Canvas</title><link>https://gabriel-rodrigues.com/pt/blog/scaling-with-skills/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/scaling-with-skills/</guid><description>Como construi 10 skills reutilizaveis assistidas por IA para iterar sistematicamente o Company Canvas de MVP a produto polido — cobrindo seguranca, testes, cache, analytics, pricing e mais.</description><pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate><category>produto</category><category>ia</category><category>arquitetura</category><category>ferramentas-dev</category></item><item><title>Ola Mundo</title><link>https://gabriel-rodrigues.com/pt/blog/hello-world/</link><guid isPermaLink="true">https://gabriel-rodrigues.com/pt/blog/hello-world/</guid><description>Bem-vindo ao meu blog! Uma breve introducao sobre o que esperar por aqui.</description><pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate><category>intro</category><category>desenvolvimento web</category></item></channel></rss>