<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Site do Guilherme</title><link>https://guilhermegarcia.dev/</link><description>Recent content on Site do Guilherme</description><generator>Hugo -- gohugo.io</generator><language>pt-br</language><copyright>Copyright © 2024-2026, Guilherme Garcia.</copyright><lastBuildDate>Thu, 26 Mar 2026 17:15:57 -0300</lastBuildDate><atom:link href="https://guilhermegarcia.dev/index.xml" rel="self" type="application/rss+xml"/><item><title>Desenvolvendo Python com Neovim</title><link>https://guilhermegarcia.dev/blog/desenvolvendo-python-com-neovim/</link><pubDate>Thu, 26 Mar 2026 17:15:57 -0300</pubDate><guid>https://guilhermegarcia.dev/blog/desenvolvendo-python-com-neovim/</guid><description>Post em constante evolução, atualizado conforme eu avançar nas configurações. Resolvi tentar mais uma vez arrumar um ambiente pra desenvolvimento com vim.
Eu sempre acabo desistindo quando preciso usar funcionalidades mais chatinhas de configurar, como setup de depurador, linters/formaters, busca de definições (classes e funções), essas coisas.
Como mudei de computador, aproveitei pra começar do zero, e dessa vez instalei o neovim, usando o template kickstart nvim.
Ele já vem com várias configurações prontas, tipo uso do tree-sitter e do lazy vim pra configuração rápida de plugins.</description></item><item><title>Análise exploratória do dataset BR Crawl</title><link>https://guilhermegarcia.dev/blog/analise-exploratoria-do-dataset-br-crawl/</link><pubDate>Sun, 22 Mar 2026 12:20:05 -0300</pubDate><guid>https://guilhermegarcia.dev/blog/analise-exploratoria-do-dataset-br-crawl/</guid><description>Nesse post compartilho minha análise exploratória no dataset do BR Crawl, projeto que indexa a blogosfera brasileira.
O que é o BR Crawl O BR Crawl é um projeto que eu iniciei por meados de fevereiro desse ano. Ele é um software que acessa blogs brasileiros e busca links para outros blogs.
O objetivo é criar um índice aberto de todos os blogs em atividade mantidos por autores brasileiros sem fins comerciais.</description></item><item><title>On maintaining large SSR applications</title><link>https://guilhermegarcia.dev/blog/on-maintaining-large-ssr-applications/</link><pubDate>Wed, 11 Mar 2026 11:08:32 -0300</pubDate><guid>https://guilhermegarcia.dev/blog/on-maintaining-large-ssr-applications/</guid><description>A collection of insightful talks and essays about maintaining large applications.
The focus is mainly traditional SSR web applications using MVC~esque framesworks (such as Django, RoR, Laravel, &amp;hellip;), meaning that if you are focused on frontend only applications (such as SPAs using React, Vue, etc) this probably won&amp;rsquo;t be very helpful :).
Django structure for scale and longevity Reference: https://www.youtube.com/watch?v=yG3ZdxBb1oo
Where do we put the business logic? What is &amp;ldquo;business logic&amp;rdquo;?</description></item><item><title>FreeRats: eng reversa da API do GymRats</title><link>https://guilhermegarcia.dev/blog/freerats-reverse-eng/</link><pubDate>Wed, 25 Feb 2026 15:52:19 -0300</pubDate><guid>https://guilhermegarcia.dev/blog/freerats-reverse-eng/</guid><description>Escuta, eu quero usar apps sociais pra me manter engajado e acompanhar meus amigos. Mas são meus dados e o mínimo que eu espero é uma forma automatizada de extrair eles.
Enquanto o GymRats tem uma funcionalidade muito boa de exportar um arquivo .json com os dados de utilização, ele só permite acesso via aplicativo.
Como não existe uma versão web onde eu possa inspecionar as requisições com o devtools (e automatizar o export dos meus dados com um ou dois curls via linha de comando), tive que mergulhar de cabeça no labirinto que é mapeaer as requisições feitas por um aplicativo Android.</description></item><item><title>cinemaempoa na pythonsul</title><link>https://guilhermegarcia.dev/blog/cinemaempoa-na-pythonsul/</link><pubDate>Sat, 22 Nov 2025 19:06:05 -0300</pubDate><guid>https://guilhermegarcia.dev/blog/cinemaempoa-na-pythonsul/</guid><description>Em 21 a 23 de Novembro de 2025 aconteceu o Python Sul 2025 em Porto Alegre.
Junto com o Nilton Pimentel, submeti uma palestra baseada na implementação do cinemaempoa pra fazer extração dos horários de filmes que passam no CineBancários.
A ideia foi usar duas LLMs diferentes pra processar as postagens do blog do cinema e retornar as exibições de filmes em forma estruturada (JSON).
O diferencial foi usar a comparação entre o resultado dos dois modelos pra criação de alertas: discordâncias entre os modelos são uma ótima métrica pra detectar erros de extração!</description></item><item><title>(Re)lançando o cinemaempoa</title><link>https://guilhermegarcia.dev/blog/lancando-o-cinemaempoa/</link><pubDate>Mon, 30 Sep 2024 20:18:05 -0300</pubDate><guid>https://guilhermegarcia.dev/blog/lancando-o-cinemaempoa/</guid><description>O https://cinemaempoa.com.br é um portal agregador dos filmes que passam nas casas de cinema de Porto Alegre.
Por que esse projeto? PoA tem vários cinemas comerciais (os cinemas de shopping), mas o que faz a cidade ser única são suas salas culturais, dedicadas a filmes diferentes: nem sempre são lançamentos, às vezes não passam nos ciclos comerciais, podem possuir maior teor experimental, podem ter marcado a história do cinema, podem ter registrado a história de um país.</description></item><item><title>Grupo de estudos de linha de comando</title><link>https://guilhermegarcia.dev/blog/grupo-de-estudos-linha-comando/</link><pubDate>Sat, 07 Sep 2024 10:06:05 -0300</pubDate><guid>https://guilhermegarcia.dev/blog/grupo-de-estudos-linha-comando/</guid><description>Quem somos Veio a existir, no dia 31/08/2024, após realização de oficina sobre programação em bash, o Grupo de Estudos de Linha de Comando (GELC).
O grupo é abrangente, reunindo usuários de qualquer nível de experiência, sobre quaisquer tópicos que envolvam o uso do terminal, para fomentar a troca de conheci mento e criação de comunidade.
Tópicos centrais Uso do terminal (bash, powershell e outros) Ferramentas típicas do terminal (ssh, sed, grep, curl e todas ferramentas do toolkit gnu/linux) Criação de scripts Automação de processos (crontab, inotify, &amp;hellip;) Sistemas operacionais Onde e quando Os encontros serão presenciais no espaço do Matehackers dentro do Vila Flores (Rua Hoffman, 447 - Floresta) em Porto Alegre.</description></item><item><title>Um manifesto pela depuração</title><link>https://guilhermegarcia.dev/blog/traducao-debugging-manifesto-b0rk/</link><pubDate>Thu, 05 Sep 2024 19:06:05 -0300</pubDate><guid>https://guilhermegarcia.dev/blog/traducao-debugging-manifesto-b0rk/</guid><description>Fiz uma tradução (de baixa fidelidade) de um poster da wizard zines que eu sempre curti. Ele mostra um pouco o estado de espírito que eu acho ideal pra programação: meio apavorado, mas instigado pelo desconhecido.
A autora é a Julia Evans e ela é muito fera em ensinar conceitos na área de tecnologia.
Caso você queira alterar alguma coisa, esse é o arquivo psd que eu utilizei: (clique para baixar).</description></item><item><title>Workshop: servidores federados com Django</title><link>https://guilhermegarcia.dev/blog/workshop-servidores-federados-django/</link><pubDate>Thu, 29 Aug 2024 13:06:05 -0300</pubDate><guid>https://guilhermegarcia.dev/blog/workshop-servidores-federados-django/</guid><description>Proposta Eu estou trabalhando numa ideia pra um workshop de programação pra ser trabalhado num grupo pequeno, de até 5 pessoas.
A ideia é abordar o tema de rede descentralizadas enquanto desenvolvemos uma PoC para trocar mensagens entre servidores conectados numa mesma rede.
A dinâmica é que, estando todos na mesma sala, vamos estar na mesma rede wifi, e os apps desenvolvidos vão interagir uns com os outros.
WIP!! Encare este post como um brainstorm de um futuro workshop.</description></item><item><title>Explorando IA no navegador</title><link>https://guilhermegarcia.dev/blog/explorando-ia-no-navegador/</link><pubDate>Mon, 26 Aug 2024 20:06:05 -0300</pubDate><guid>https://guilhermegarcia.dev/blog/explorando-ia-no-navegador/</guid><description>Esse FDS eu tive a oportunidade de apresentar um workshop curtinho sobre como usar o navegador pra explorar tópicos de inteligência artificial.
A apresentação foi no matehackers no dia 24/08/2024.
Flyers do evento Eu subi o material utilizado (slides) aqui: https://guilhermegarcia.dev/slides/ai-in-browser.
Este post no fotolog do matehackers tem fotos e links sobre o evento.</description></item><item><title>Revivendo um netbook com linux</title><link>https://guilhermegarcia.dev/blog/revivendo-um-netbook-com-linux/</link><pubDate>Sun, 04 Feb 2024 12:47:34 -0300</pubDate><guid>https://guilhermegarcia.dev/blog/revivendo-um-netbook-com-linux/</guid><description>Introdução No último final de semana, resolvi dar uma atenção pra um netbook que estava abandonado no hackerspace.
Eu já tinha visto ele funcionando (na época tava rodando um lubuntu) e lembro que tentei acessar alguns sites pelo firefox, mas estava tão lento que acabei abandonando.
Alguns meses depois, fui tentar ligá-lo novamente e ele não funcionava. Pelo visto tinha sido derrubado e deixado para morrer.
Resolvi dar uma nova chance pra esse Aspire One D270 - 1655 viver novos dias de glória.</description></item><item><title>Aware and naive datetime objects without pytz</title><link>https://guilhermegarcia.dev/blog/aware-naive-datetime-objects-wo-pytz/</link><pubDate>Thu, 25 Jan 2024 20:44:34 -0300</pubDate><guid>https://guilhermegarcia.dev/blog/aware-naive-datetime-objects-wo-pytz/</guid><description>tldr: use .replace or .astimezone on both datetime objects.
Maybe you were trying to do a simple datetime comparison, and was met with the following:
TypeError: can't compare offset-naive and offset-aware datetimes Most solutions (1, 2) will point you towards pytz, but the lib page at pypi mentions:
Projects using Python 3.9 or later should be using the support now included as part of the standard library, and third party packages work with it such as tzdata</description></item><item><title>Comparando json na linha de comando</title><link>https://guilhermegarcia.dev/blog/comparando-json-na-linha-de-comando/</link><pubDate>Tue, 25 Oct 2022 22:50:34 -0300</pubDate><guid>https://guilhermegarcia.dev/blog/comparando-json-na-linha-de-comando/</guid><description>Comparando json na linha de comando
mg;nl: vamos usar o vimdiff e o jq para comparar arquivos json independente da formatação.
Comparar arquivos json parecidos pode ser complicado. Muitas vezes os arquivos foram formatados com espaçamentos diferentes, ou a diferença não ocorre no mesmo nível hierarquico.
Vamos criar um script simples pra comparar arquivos json diretamente pelo terminal, usando o programa jq e o vimdiff.
Vamos ver também como preparar um script bash pra lidar com erros conhecidos, como arquivos com json inválido ou de outro formato.</description></item><item><title/><link>https://guilhermegarcia.dev/links/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://guilhermegarcia.dev/links/</guid><description>Links I love These are some of my favorite pages on the web.
They range from articles, tutorials, games, photography and other beautiful stuff.
Get surfing!
The elevator programming game Tensors from scratch by Maharshi. Database Design for Google Calendar: a tutorial Use the index, Luke! Promises From The Ground Up Micro-Frameworks and Micro-Libraries for Fun and Profit! Why if TYPE_CHECKING? Public Works by Cosmos The Elegance of the ASCII Table Replace gifs with videos So you think you know box shadows?</description></item><item><title/><link>https://guilhermegarcia.dev/opensource/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://guilhermegarcia.dev/opensource/</guid><description>Open Source My OS contributions, as well as projects or specific issues I&amp;rsquo;m interested in experimenting with or learning more about.
Done/Doing cumbucadev/cinemaempoa: maintainer guites/brcrawl: maintainer scanapi/scanapi generate ScanAPI spec from OpenAPI manualdousuario/lerama Add filter: show only latest post from each feed grlduarte/firestore_data_table_source Add call to dispose on example implementation elisemercury/Duplicate-Image-Finder Use python 3.6 compatible directory nesting check fastapi/fastapi 🌐 Add Portuguese translation for docs/pt/docs/deployment/docker.md diracdeltas/tweets Add script to find users @ via the api portexe/PortalsAndToast Fixes auto close closing all previous toasts usebruno/bruno-docs Add additional image with example on how to use variables open-runtimes/executor feat: allow setting curl connect timeout via env variable Interested mataroablog/mataroa ActivityPub Federation last updated Wed Feb 25 22:11:04 -03 2026</description></item></channel></rss>