<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Home on Adler Medrado's corner of the web</title><link>https://adlermedrado.com.br/</link><description>Recent content in Home on Adler Medrado's corner of the web</description><generator>Hugo</generator><language>en</language><lastBuildDate>Fri, 09 Jan 2026 18:34:00 -0300</lastBuildDate><atom:link href="https://adlermedrado.com.br/index.xml" rel="self" type="application/rss+xml"/><item><title>Pinga: minha pequena ferramenta para requisições http</title><link>https://adlermedrado.com.br/posts/pinga-ferramenta-cli-para-requisicao-http/</link><pubDate>Fri, 09 Jan 2026 18:34:00 -0300</pubDate><guid>https://adlermedrado.com.br/posts/pinga-ferramenta-cli-para-requisicao-http/</guid><description>&lt;p&gt;Faz um tempinho que eu não me sentia tão bem usando uma ferramenta quanto agora.
No trabalho, a galera usa o Postman pra quase tudo, e eu também acabava usando, mesmo achando exagerado demais pra algo tão simples quanto testes de integração com chamadas de API.&lt;/p&gt;
&lt;p&gt;Eu sei que o Postman tem um monte de recursos. O problema é que eu nunca precisei da maioria deles. Pra mim, era como usar um canhão pra matar um mosquito.&lt;/p&gt;</description></item><item><title>Pinga: my small tool for HTTP requests</title><link>https://adlermedrado.com.br/posts/pinga-cli-tool-for-http-requests/</link><pubDate>Fri, 09 Jan 2026 18:32:00 -0300</pubDate><guid>https://adlermedrado.com.br/posts/pinga-cli-tool-for-http-requests/</guid><description>&lt;p&gt;It’s been a while since I felt this good using a tool.&lt;/p&gt;
&lt;p&gt;At work, people use Postman for almost everything, and I ended up using it too, even though it always felt like overkill for something as simple as integration tests with API calls.&lt;/p&gt;
&lt;p&gt;I know Postman has a ton of features. The problem is that I never needed most of them. For me, it felt like using a cannon to kill a mosquito.&lt;/p&gt;</description></item><item><title>Evoluindo o HADES</title><link>https://adlermedrado.com.br/posts/evolucao-hades/</link><pubDate>Sun, 04 Jan 2026 11:52:13 -0300</pubDate><guid>https://adlermedrado.com.br/posts/evolucao-hades/</guid><description>&lt;p&gt;Este post descreve a evolução do &lt;strong&gt;HADES&lt;/strong&gt; na detecção de URLs fraudulentas &lt;strong&gt;sem depender de serviços pagos&lt;/strong&gt;.&lt;br&gt;
O foco foi fortalecer a detecção com &lt;strong&gt;código próprio&lt;/strong&gt;, &lt;strong&gt;heurísticas locais (PT/BR)&lt;/strong&gt; e &lt;strong&gt;fontes públicas abertas&lt;/strong&gt;, mantendo controle total do pipeline.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Nota:&lt;/strong&gt; o CNPJ presente nos exemplos foi alterado para &lt;code&gt;11917932300169&lt;/code&gt;.&lt;br&gt;
O objetivo é &lt;strong&gt;ilustrar o caso&lt;/strong&gt;, não expor pessoas físicas ou jurídicas reais.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="1-problema-inicial-heurística-simples-falha-com-golpes-locais"&gt;1) Problema inicial: heurística simples falha com golpes locais&lt;/h2&gt;
&lt;p&gt;O HADES usava regras simples: palavras suspeitas em inglês (&lt;code&gt;login/verify&lt;/code&gt;), HTTP sem TLS, IP na URL, subdomínios excessivos e domínio recém-registrado.&lt;br&gt;
Essas regras funcionam para exemplos didáticos, mas falham com golpes brasileiros.&lt;/p&gt;</description></item><item><title>Evolving HADES</title><link>https://adlermedrado.com.br/posts/hades-evolution/</link><pubDate>Sun, 04 Jan 2026 11:52:13 -0300</pubDate><guid>https://adlermedrado.com.br/posts/hades-evolution/</guid><description>&lt;p&gt;This post describes how &lt;strong&gt;HADES&lt;/strong&gt; evolved to detect fraudulent URLs &lt;strong&gt;without relying on paid services&lt;/strong&gt;.&lt;br&gt;
The focus was to strengthen detection with &lt;strong&gt;in-house code&lt;/strong&gt;, &lt;strong&gt;local heuristics (PT/BR)&lt;/strong&gt;, and &lt;strong&gt;open public sources&lt;/strong&gt;, while keeping full control of the pipeline.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; the CNPJ used in the examples was changed to &lt;code&gt;11917932300169&lt;/code&gt;.&lt;br&gt;
The goal is to &lt;strong&gt;illustrate the case&lt;/strong&gt;, not to expose real individuals or companies.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note #2&lt;/strong&gt;: CNPJ is the Brazilian business tax ID, similar to the EIN in the U.S.&lt;/p&gt;</description></item><item><title>Meu site agora está disponível via rede Tor</title><link>https://adlermedrado.com.br/posts/meu-site-disponivel-via-rede-tor/</link><pubDate>Sun, 07 Dec 2025 10:32:00 -0300</pubDate><guid>https://adlermedrado.com.br/posts/meu-site-disponivel-via-rede-tor/</guid><description>&lt;p&gt;Recentemente, tive a sorte de conseguir um notebook Dell incrível em um bota-fora da empresa. Conseguir parcelar e pagar um preço acessível foi demais! &lt;strong&gt;Não é um equipamento cheio de firulas ou especificações mirabolantes, mas me deu uma alegria imensa colocar as mãos em uma máquina que, com um pouco de dedicação, se transforma em uma ferramenta poderosa.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Essa experiência me lembra muito de quem eu sempre fui. Não é só nostalgia de “era BBS”, mas sim uma continuidade. Naquela época, tudo era mais manual: desmontar coisas na mesa da cozinha, ajustar uns cabos, configurar IRQs e testar configurações até que funcionassem, e persistir mesmo quando nada parecia fazer sentido. Era teimosia e liberdade. Hoje, só mudaram os cabos, mas o espírito permanece o mesmo.&lt;/p&gt;</description></item><item><title>My website available via Tor network</title><link>https://adlermedrado.com.br/posts/my-website-available-via-tor-network/</link><pubDate>Sun, 07 Dec 2025 10:32:00 -0300</pubDate><guid>https://adlermedrado.com.br/posts/my-website-available-via-tor-network/</guid><description>&lt;p&gt;Recently, I was lucky enough to pick up an amazing Dell laptop during a company clearance sale. Being able to split the payments and get it for a ridiculously good price was the icing on the cake. &lt;strong&gt;It’s not some overhyped, flashy machine full of unnecessary specs - but putting my hands on a device that turns into a powerful tool with a bit of care and intention brought me genuine joy&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Como verificar as assinaturas do meu site</title><link>https://adlermedrado.com.br/posts/verificar-assinaturas/</link><pubDate>Sun, 23 Nov 2025 12:00:00 -0300</pubDate><guid>https://adlermedrado.com.br/posts/verificar-assinaturas/</guid><description>&lt;h1 id="mudança-na-assinatura-gpg-do-meu-website"&gt;Mudança na assinatura GPG do meu website&lt;/h1&gt;
&lt;p&gt;Não me lembro exatamente mas acredito que a pelo menos dois anos eu assino as páginas HTML do meu site com GPG, faço isso para praticar soberania, autenticidade até mesmo promover ferramentas que auxiliam na privacidade.&lt;/p&gt;
&lt;p&gt;Inicialmente eu deixava a assinatura GPG embutida no próprio conteúdo HTML, por exemplo:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&amp;lt;!--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;-----BEGIN PGP SIGNED MESSAGE-----
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;Hash: SHA256
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;- --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&amp;lt;!doctype html&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;html&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;lang&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;en&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;head&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;charset&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;utf-8&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;http-equiv&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;X-UA-Compatible&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;IE=edge&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;viewport&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;width=device-width,initial-scale=1&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;property&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;og:title&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;What I’d Tell My 23-Year-Old Self&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;property&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;og:description&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;If I could whisper to my 23-year-old self, I’d tell him this:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; Stop wasting time worrying about what people think.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; Pour your energy into building, into creating, into making something that’s yours.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; And never forget: everything is impermanent — every victory, every failure, every storm.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; That truth alone is enough to keep you moving forward.&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;property&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;og:url&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;https://adlermedrado.com.br/missives/what-id-tell-my-23-year-old-self/&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;property&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;og:site_name&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Adler Medrado&amp;#39;s corner of the web&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;property&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;og:type&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;article&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;property&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;og:image&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;/images/default-og-image.png&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;twitter:card&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;summary_large_image&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;twitter:title&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;What I’d Tell My 23-Year-Old Self&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;twitter:description&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;If I could whisper to my 23-year-old self, I’d tell him this:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; Stop wasting time worrying about what people think.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; Pour your energy into building, into creating, into making something that’s yours.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; And never forget: everything is impermanent — every victory, every failure, every storm.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; That truth alone is enough to keep you moving forward.&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;twitter:image&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;/images/default-og-image.png&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;title&lt;/span&gt;&amp;gt;What I’d Tell My 23-Year-Old Self&amp;lt;/&lt;span style="color:#f92672"&gt;title&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;description&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;If I could whisper to my 23-year-old self, I’d tell him this:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; Stop wasting time worrying about what people think.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; Pour your energy into building, into creating, into making something that’s yours.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; And never forget: everything is impermanent — every victory, every failure, every storm.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; That truth alone is enough to keep you moving forward.&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;link&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;rel&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;author&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/humans.txt&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;link&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;rel&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;icon&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;type&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;image/png&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/images/favicon.png&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;link&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;rel&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;canonical&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;https://adlermedrado.com.br/missives/what-id-tell-my-23-year-old-self/&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;link&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/css/styles.css&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;rel&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;stylesheet&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;head&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;body&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;header&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;glitch-zone&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;nav&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;navbar&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;role&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;navigation&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;aria-label&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Main Navigation&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;navbar_left&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;a&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;h-card&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;rel&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;me&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;strong&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Adler Medrado
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;span&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;cursor-blink&lt;/span&gt;&amp;gt;|&amp;lt;/&lt;span style="color:#f92672"&gt;span&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;strong&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;navbar_right navbar_right_animated&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;a&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/posts&lt;/span&gt;&amp;gt;posts&amp;lt;/&lt;span style="color:#f92672"&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;a&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/missives&lt;/span&gt;&amp;gt;missives&amp;lt;/&lt;span style="color:#f92672"&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;a&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/now&lt;/span&gt;&amp;gt;what am i doing now&amp;lt;/&lt;span style="color:#f92672"&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;a&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/uses&lt;/span&gt;&amp;gt;what am i using&amp;lt;/&lt;span style="color:#f92672"&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;nav&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;header&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;main&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;article&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;missive&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;h1&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;text-4xl font-bold mb-4&amp;#34;&lt;/span&gt;&amp;gt;What I’d Tell My 23-Year-Old Self&amp;lt;/&lt;span style="color:#f92672"&gt;h1&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;text-sm text-gray-500 mb-6&amp;#34;&lt;/span&gt;&amp;gt;26 Sep 2025&amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;prose&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;If I could whisper to my 23-year-old self, I’d tell him this:&amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;ul&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;li&lt;/span&gt;&amp;gt;Stop wasting time worrying about what people think.&amp;lt;/&lt;span style="color:#f92672"&gt;li&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;li&lt;/span&gt;&amp;gt;Pour your energy into building, into creating, into making something that’s yours.&amp;lt;/&lt;span style="color:#f92672"&gt;li&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;li&lt;/span&gt;&amp;gt;And never forget: everything is impermanent — every victory, every failure, every storm.&amp;lt;/&lt;span style="color:#f92672"&gt;li&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;ul&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;That truth alone is enough to keep you moving forward.&amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;article&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;post-tags&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;strong&lt;/span&gt;&amp;gt;Tags:&amp;lt;/&lt;span style="color:#f92672"&gt;strong&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;a&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/tags/thoughts&lt;/span&gt;&amp;gt;thoughts&amp;lt;/&lt;span style="color:#f92672"&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;main&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;footer&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;glitch-zone&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;role&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;contentinfo&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;footer-content&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;copyright&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;small&lt;/span&gt;&amp;gt;&amp;amp;copy; 1996-2025 Adler Medrado&amp;lt;/&lt;span style="color:#f92672"&gt;small&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;gpg_signed_info&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; All pages on this website are PGP signed.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Import my 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;a&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/pub-key.asc&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;aria-label&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Download my PGP public key&amp;#34;&lt;/span&gt;&amp;gt;public key&amp;lt;/&lt;span style="color:#f92672"&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; and check with 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;em&lt;/span&gt;&amp;gt;curl https://adlermedrado.com.br/missives/what-id-tell-my-23-year-old-self/ | gpg --verify&amp;lt;/&lt;span style="color:#f92672"&gt;em&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;em&lt;/span&gt;&amp;gt;Privacy policy: this website employs no tracking.&amp;lt;/&lt;span style="color:#f92672"&gt;em&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;span&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;badge-a-plus&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;a&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;https://developer.mozilla.org/en-US/observatory/analyze?host=adlermedrado.com.br&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;aria-label&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Mozilla Observatory Security Rating: A+&amp;#34;&lt;/span&gt;&amp;gt;A+&amp;lt;/&lt;span style="color:#f92672"&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;span&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;span&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;badge-description&lt;/span&gt;&amp;gt;Mozilla Observatory Security Rating&amp;lt;/&lt;span style="color:#f92672"&gt;span&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;footer&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;script&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#66d9ef"&gt;function&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;function&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;contentDocument&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;contentWindow&lt;/span&gt;.document;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;b&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;d&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;createElement&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;script&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;d&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;innerHTML&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;window.__CF$cv$params={r:&amp;#39;9a31943f6eaad8cb&amp;#39;,t:&amp;#39;MTc2MzkxMDQ3Ng==&amp;#39;};var a=document.createElement(&amp;#39;script&amp;#39;);a.src=&amp;#39;/cdn-cgi/challenge-platform/scripts/jsd/main.js&amp;#39;;document.getElementsByTagName(&amp;#39;head&amp;#39;)[0].appendChild(a);&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;getElementsByTagName&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;head&amp;#39;&lt;/span&gt;)[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;appendChild&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;d&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (document.&lt;span style="color:#a6e22e"&gt;body&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; document.&lt;span style="color:#a6e22e"&gt;createElement&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;iframe&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;height&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;width&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;style&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;position&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;absolute&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;style&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;top&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;style&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;left&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;style&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;border&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;none&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;style&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;visibility&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;hidden&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; document.&lt;span style="color:#a6e22e"&gt;body&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;appendChild&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (&lt;span style="color:#e6db74"&gt;&amp;#39;loading&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;!==&lt;/span&gt; document.&lt;span style="color:#a6e22e"&gt;readyState&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (window.&lt;span style="color:#a6e22e"&gt;addEventListener&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; document.&lt;span style="color:#a6e22e"&gt;addEventListener&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;DOMContentLoaded&amp;#39;&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;e&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; document.&lt;span style="color:#a6e22e"&gt;onreadystatechange&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;function&lt;/span&gt;() {};
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; document.&lt;span style="color:#a6e22e"&gt;onreadystatechange&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;function&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;b&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;e&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;b&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;loading&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;!==&lt;/span&gt; document.&lt;span style="color:#a6e22e"&gt;readyState&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; (document.&lt;span style="color:#a6e22e"&gt;onreadystatechange&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;e&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt;())
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; })();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;script&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;body&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;html&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&amp;lt;!--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;-----BEGIN PGP SIGNATURE-----
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;iQIzBAEBCAAdFiEEB9cP28xEbBnKQwLObV8aePHcNh0FAmjpMJEACgkQbV8aePHc
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;Nh114BAAlkjwHZgFP7b7xUr++nhvxslYyb4SEzpWOzWaf1pd1UnwK9g3dBgImdoq
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;hrBC0yUuGqyCu8ZflghIF2mEVex5uHBCB5SFeQyPqfLA9erFEAPoWQ3b6gcKNiKM
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;wHwPDNEbgNxjKfoxfHcL6qrzpBjm//EtzXBtgC0IV1HTXOv0CG2s2AiEtmFj2kHO
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;LlrlMnT0IiwfUfDpL1Va1/AAc3bLsAQJgQVNKkOueoE08OtvnJ2lsz7PhqsgREnF
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;eorexF2SsHRhueXtet892ICVJuWrZtdN401YhqhLWu8oL6ORrMuQv4ecHRPuk08k
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;lrZA5atOssG02ghKLd0ITC65R6rEe/Jk3u6oRXYinRKUHvtpFgSQcgVqzU0kbnFF
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;0a4v6uGkZN5fFTkQO7Ua0483Iv2B+w7B1soFUN034S8ASfOBZXxDdNpyq8vtfk2y
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;N2bYf5+u/HXn/lNqZsBrS1vY40HoogEch+oO4Im4nsar8znXw3HxiYUM0Th+oiTR
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;TTWa4NHITlvBOcnmH49mxHSc99vYu0/bSKm8qY8PiZiGXq+u+36X4/1W/A+oXACn
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;Ao9G0Ljt9bXN7/QGcrb8BYiC+1rgmcMOrGmx+dtbwzfJhkITn6QjykcKFRg+PEIO
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;Kkv3c6C17+Pz6LIPQe6I//V3LYSvUiMY8lGLuM/C/nvD5QPfMlQ=
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;=1D7N
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;-----END PGP SIGNATURE-----
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;--&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Sabe aquela sensação de que algo não está certo? Pois é, ter a assinatura embutida nos meus arquivos HTML sempre me incomodou um pouco. Apesar de ser super prático validar a assinatura com um comando simples, tipo &lt;code&gt;curl https://adlermedrado.com.br/missives/what-id-tell-my-23-year-old-self/ | gpg —verify&lt;/code&gt;, a ideia de ter a assinatura “colada” no arquivo original me incomodava. Parecia que o arquivo não era mais o original, né?&lt;/p&gt;</description></item><item><title>How to verify my site signatures</title><link>https://adlermedrado.com.br/posts/verify-signatures/</link><pubDate>Sun, 23 Nov 2025 12:00:00 -0300</pubDate><guid>https://adlermedrado.com.br/posts/verify-signatures/</guid><description>&lt;h1 id="update-on-the-gpg-signing-of-my-website"&gt;Update on the GPG Signing of My Website&lt;/h1&gt;
&lt;p&gt;I don’t remember exactly when I started, but for at least two years I’ve been signing the HTML pages on my website with GPG. I do this as a way to practice sovereignty, authenticity, and to promote tools that help protect privacy.&lt;/p&gt;
&lt;p&gt;At first, I kept the GPG signature embedded directly in the HTML content, for example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&amp;lt;!--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;-----BEGIN PGP SIGNED MESSAGE-----
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;Hash: SHA256
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;- --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&amp;lt;!doctype html&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;html&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;lang&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;en&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;head&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;charset&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;utf-8&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;http-equiv&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;X-UA-Compatible&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;IE=edge&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;viewport&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;width=device-width,initial-scale=1&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;property&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;og:title&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;What I’d Tell My 23-Year-Old Self&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;property&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;og:description&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;If I could whisper to my 23-year-old self, I’d tell him this:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; Stop wasting time worrying about what people think.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; Pour your energy into building, into creating, into making something that’s yours.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; And never forget: everything is impermanent — every victory, every failure, every storm.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; That truth alone is enough to keep you moving forward.&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;property&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;og:url&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;https://adlermedrado.com.br/missives/what-id-tell-my-23-year-old-self/&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;property&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;og:site_name&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Adler Medrado&amp;#39;s corner of the web&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;property&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;og:type&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;article&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;property&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;og:image&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;/images/default-og-image.png&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;twitter:card&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;summary_large_image&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;twitter:title&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;What I’d Tell My 23-Year-Old Self&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;twitter:description&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;If I could whisper to my 23-year-old self, I’d tell him this:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; Stop wasting time worrying about what people think.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; Pour your energy into building, into creating, into making something that’s yours.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; And never forget: everything is impermanent — every victory, every failure, every storm.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; That truth alone is enough to keep you moving forward.&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;twitter:image&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;/images/default-og-image.png&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;title&lt;/span&gt;&amp;gt;What I’d Tell My 23-Year-Old Self&amp;lt;/&lt;span style="color:#f92672"&gt;title&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;description&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;If I could whisper to my 23-year-old self, I’d tell him this:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; Stop wasting time worrying about what people think.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; Pour your energy into building, into creating, into making something that’s yours.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; And never forget: everything is impermanent — every victory, every failure, every storm.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; That truth alone is enough to keep you moving forward.&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;link&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;rel&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;author&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/humans.txt&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;link&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;rel&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;icon&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;type&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;image/png&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/images/favicon.png&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;link&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;rel&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;canonical&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;https://adlermedrado.com.br/missives/what-id-tell-my-23-year-old-self/&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;link&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/css/styles.css&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;rel&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;stylesheet&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;head&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;body&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;header&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;glitch-zone&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;nav&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;navbar&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;role&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;navigation&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;aria-label&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Main Navigation&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;navbar_left&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;a&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;h-card&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;rel&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;me&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;strong&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Adler Medrado
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;span&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;cursor-blink&lt;/span&gt;&amp;gt;|&amp;lt;/&lt;span style="color:#f92672"&gt;span&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;strong&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;navbar_right navbar_right_animated&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;a&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/posts&lt;/span&gt;&amp;gt;posts&amp;lt;/&lt;span style="color:#f92672"&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;a&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/missives&lt;/span&gt;&amp;gt;missives&amp;lt;/&lt;span style="color:#f92672"&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;a&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/now&lt;/span&gt;&amp;gt;what am i doing now&amp;lt;/&lt;span style="color:#f92672"&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;a&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/uses&lt;/span&gt;&amp;gt;what am i using&amp;lt;/&lt;span style="color:#f92672"&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;nav&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;header&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;main&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;article&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;missive&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;h1&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;text-4xl font-bold mb-4&amp;#34;&lt;/span&gt;&amp;gt;What I’d Tell My 23-Year-Old Self&amp;lt;/&lt;span style="color:#f92672"&gt;h1&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;text-sm text-gray-500 mb-6&amp;#34;&lt;/span&gt;&amp;gt;26 Sep 2025&amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;prose&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;If I could whisper to my 23-year-old self, I’d tell him this:&amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;ul&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;li&lt;/span&gt;&amp;gt;Stop wasting time worrying about what people think.&amp;lt;/&lt;span style="color:#f92672"&gt;li&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;li&lt;/span&gt;&amp;gt;Pour your energy into building, into creating, into making something that’s yours.&amp;lt;/&lt;span style="color:#f92672"&gt;li&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;li&lt;/span&gt;&amp;gt;And never forget: everything is impermanent — every victory, every failure, every storm.&amp;lt;/&lt;span style="color:#f92672"&gt;li&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;ul&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;That truth alone is enough to keep you moving forward.&amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;article&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;post-tags&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;strong&lt;/span&gt;&amp;gt;Tags:&amp;lt;/&lt;span style="color:#f92672"&gt;strong&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;a&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/tags/thoughts&lt;/span&gt;&amp;gt;thoughts&amp;lt;/&lt;span style="color:#f92672"&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;main&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;footer&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;glitch-zone&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;role&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;contentinfo&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;footer-content&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;copyright&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;small&lt;/span&gt;&amp;gt;&amp;amp;copy; 1996-2025 Adler Medrado&amp;lt;/&lt;span style="color:#f92672"&gt;small&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;gpg_signed_info&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; All pages on this website are PGP signed.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Import my 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;a&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/pub-key.asc&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;aria-label&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Download my PGP public key&amp;#34;&lt;/span&gt;&amp;gt;public key&amp;lt;/&lt;span style="color:#f92672"&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; and check with 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;em&lt;/span&gt;&amp;gt;curl https://adlermedrado.com.br/missives/what-id-tell-my-23-year-old-self/ | gpg --verify&amp;lt;/&lt;span style="color:#f92672"&gt;em&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;em&lt;/span&gt;&amp;gt;Privacy policy: this website employs no tracking.&amp;lt;/&lt;span style="color:#f92672"&gt;em&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;span&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;badge-a-plus&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;a&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;https://developer.mozilla.org/en-US/observatory/analyze?host=adlermedrado.com.br&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;aria-label&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Mozilla Observatory Security Rating: A+&amp;#34;&lt;/span&gt;&amp;gt;A+&amp;lt;/&lt;span style="color:#f92672"&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;span&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;span&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;badge-description&lt;/span&gt;&amp;gt;Mozilla Observatory Security Rating&amp;lt;/&lt;span style="color:#f92672"&gt;span&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;footer&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;script&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#66d9ef"&gt;function&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;function&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;contentDocument&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;contentWindow&lt;/span&gt;.document;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;b&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;d&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;createElement&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;script&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;d&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;innerHTML&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;window.__CF$cv$params={r:&amp;#39;9a31943f6eaad8cb&amp;#39;,t:&amp;#39;MTc2MzkxMDQ3Ng==&amp;#39;};var a=document.createElement(&amp;#39;script&amp;#39;);a.src=&amp;#39;/cdn-cgi/challenge-platform/scripts/jsd/main.js&amp;#39;;document.getElementsByTagName(&amp;#39;head&amp;#39;)[0].appendChild(a);&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;getElementsByTagName&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;head&amp;#39;&lt;/span&gt;)[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;appendChild&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;d&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (document.&lt;span style="color:#a6e22e"&gt;body&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; document.&lt;span style="color:#a6e22e"&gt;createElement&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;iframe&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;height&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;width&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;style&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;position&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;absolute&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;style&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;top&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;style&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;left&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;style&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;border&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;none&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;style&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;visibility&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;hidden&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; document.&lt;span style="color:#a6e22e"&gt;body&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;appendChild&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (&lt;span style="color:#e6db74"&gt;&amp;#39;loading&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;!==&lt;/span&gt; document.&lt;span style="color:#a6e22e"&gt;readyState&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (window.&lt;span style="color:#a6e22e"&gt;addEventListener&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; document.&lt;span style="color:#a6e22e"&gt;addEventListener&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;DOMContentLoaded&amp;#39;&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;e&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; document.&lt;span style="color:#a6e22e"&gt;onreadystatechange&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;function&lt;/span&gt;() {};
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; document.&lt;span style="color:#a6e22e"&gt;onreadystatechange&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;function&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;b&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;e&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;b&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;loading&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;!==&lt;/span&gt; document.&lt;span style="color:#a6e22e"&gt;readyState&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; (document.&lt;span style="color:#a6e22e"&gt;onreadystatechange&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;e&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt;())
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; })();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;script&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;body&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;html&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&amp;lt;!--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;-----BEGIN PGP SIGNATURE-----
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;iQIzBAEBCAAdFiEEB9cP28xEbBnKQwLObV8aePHcNh0FAmjpMJEACgkQbV8aePHc
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;Nh114BAAlkjwHZgFP7b7xUr++nhvxslYyb4SEzpWOzWaf1pd1UnwK9g3dBgImdoq
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;hrBC0yUuGqyCu8ZflghIF2mEVex5uHBCB5SFeQyPqfLA9erFEAPoWQ3b6gcKNiKM
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;wHwPDNEbgNxjKfoxfHcL6qrzpBjm//EtzXBtgC0IV1HTXOv0CG2s2AiEtmFj2kHO
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;LlrlMnT0IiwfUfDpL1Va1/AAc3bLsAQJgQVNKkOueoE08OtvnJ2lsz7PhqsgREnF
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;eorexF2SsHRhueXtet892ICVJuWrZtdN401YhqhLWu8oL6ORrMuQv4ecHRPuk08k
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;lrZA5atOssG02ghKLd0ITC65R6rEe/Jk3u6oRXYinRKUHvtpFgSQcgVqzU0kbnFF
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;0a4v6uGkZN5fFTkQO7Ua0483Iv2B+w7B1soFUN034S8ASfOBZXxDdNpyq8vtfk2y
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;N2bYf5+u/HXn/lNqZsBrS1vY40HoogEch+oO4Im4nsar8znXw3HxiYUM0Th+oiTR
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;TTWa4NHITlvBOcnmH49mxHSc99vYu0/bSKm8qY8PiZiGXq+u+36X4/1W/A+oXACn
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;Ao9G0Ljt9bXN7/QGcrb8BYiC+1rgmcMOrGmx+dtbwzfJhkITn6QjykcKFRg+PEIO
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;Kkv3c6C17+Pz6LIPQe6I//V3LYSvUiMY8lGLuM/C/nvD5QPfMlQ=
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;=1D7N
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;-----END PGP SIGNATURE-----
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;--&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You know that feeling when something just doesn’t sit right? Yeah, having the GPG signature embedded inside my HTML files always bothered me a little.
Sure, it was super convenient to validate everything with a simple command like
&lt;code&gt;curl https://adlermedrado.com.br/missives/what-id-tell-my-23-year-old-self/ | gpg --verify&lt;/code&gt;,
but the idea of having the signature “glued” to the original file just felt wrong.
It was like the file wasn’t really the original anymore, you know?&lt;/p&gt;</description></item><item><title>What I’d Tell My 23-Year-Old Self</title><link>https://adlermedrado.com.br/missives/what-id-tell-my-23-year-old-self/</link><pubDate>Fri, 26 Sep 2025 22:48:18 -0300</pubDate><guid>https://adlermedrado.com.br/missives/what-id-tell-my-23-year-old-self/</guid><description>&lt;p&gt;If I could whisper to my 23-year-old self, I’d tell him this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stop wasting time worrying about what people think.&lt;/li&gt;
&lt;li&gt;Pour your energy into building, into creating, into making something that’s yours.&lt;/li&gt;
&lt;li&gt;And never forget: everything is impermanent — every victory, every failure, every storm.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That truth alone is enough to keep you moving forward.&lt;/p&gt;</description></item><item><title>Security isn’t a feature. It’s a consequence</title><link>https://adlermedrado.com.br/posts/security-isnt-a-feature-its-a-consequence/</link><pubDate>Sat, 16 Aug 2025 12:12:17 -0300</pubDate><guid>https://adlermedrado.com.br/posts/security-isnt-a-feature-its-a-consequence/</guid><description>&lt;p&gt;People talk about security like it’s a product you install or a checkbox you tick off before launch. But that mindset is exactly why so many systems fail. Security isn’t a module. It’s not a team. It’s not something you slap on later. It’s a consequence — of how you think when you build.&lt;/p&gt;
&lt;p&gt;Most software is a prototype that accidentally went live.
Security gets added later. If it gets added at all. Usually after something breaks or someone screams.&lt;/p&gt;</description></item><item><title>X reactivated my account</title><link>https://adlermedrado.com.br/missives/x-reactivated-my-account/</link><pubDate>Sun, 03 Aug 2025 10:11:03 -0300</pubDate><guid>https://adlermedrado.com.br/missives/x-reactivated-my-account/</guid><description>&lt;img alt="x-email-about-restoring-my-account-in-pt-br" height="50%" src="https://adlermedrado.com.br/missives/images/x-restored.png" width="50%"/&gt;
&lt;p&gt;After being suspended without warning, my account on X was restored.&lt;/p&gt;
&lt;p&gt;Lesson stays the same: if you rely only on centralized platforms, you are always one click away from being erased.&lt;/p&gt;</description></item><item><title>They suspended my X account</title><link>https://adlermedrado.com.br/missives/they-suspended-my-x-account/</link><pubDate>Tue, 22 Jul 2025 09:11:03 -0300</pubDate><guid>https://adlermedrado.com.br/missives/they-suspended-my-x-account/</guid><description>&lt;img alt="x-email-about-suspending-my-account-in-pt-br" height="50%" src="https://adlermedrado.com.br/missives/images/x-blocked.png" width="50%"/&gt;
&lt;p&gt;Account from 2006. Almost 1200 followers. GONE.&lt;/p&gt;
&lt;p&gt;No clear reason. just “violated authenticity rules.”&lt;/p&gt;
&lt;p&gt;Didn’t insult anyone. Didn’t spread fake news. Just posted.&lt;/p&gt;
&lt;p&gt;They threatened to block any new account I create.&lt;/p&gt;
&lt;p&gt;See how dumb it is to rely on centralized platforms?&lt;/p&gt;</description></item><item><title>Vou construir meu próprio verificador de URLs</title><link>https://adlermedrado.com.br/posts/verificador-de-url/</link><pubDate>Sun, 20 Jul 2025 18:05:08 -0300</pubDate><guid>https://adlermedrado.com.br/posts/verificador-de-url/</guid><description>&lt;p&gt;Nos últimos dias, mergulhei fundo numa questão que há tempos me incomodava: a validação de URLs suspeitas no contexto de fraudes digitais.&lt;/p&gt;
&lt;p&gt;O &lt;a href="https://fraudtalon.com"&gt;FraudTalon&lt;/a&gt; já consegue lidar com textos, imagens, e e-mails. A ideia é simples: extrair qualquer URL contida nesses conteúdos e verificar se ela tem indícios de ser maliciosa. Parece simples, mas quando você começa a testar serviços disponíveis no mercado, o buraco é mais embaixo.&lt;/p&gt;
&lt;p&gt;Experimentei várias opções: Google Safe Browsing, URLScan, PhishTank, OpenPhish… e o resultado foi frustrante. Muitos têm limitações severas — uso restrito, pouca cobertura, APIs que bloqueiam projetos fechados, preços impraticáveis (alguns começando em 500 dólares por mês!). E mesmo os gratuitos falham feio em detecções básicas. O próprio Safe Browsing, por exemplo, só detecta o que já é amplamente conhecido. Se a URL do golpe é nova, ele vai te dizer que está tudo certo. Inútil.&lt;/p&gt;</description></item><item><title>Novidades no FraudTalon: análise explicativa e planos para QR Codes e URLs</title><link>https://adlermedrado.com.br/posts/fraudtalon-atualizacao-julho-2025/</link><pubDate>Wed, 16 Jul 2025 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/fraudtalon-atualizacao-julho-2025/</guid><description>&lt;h1 id="-novidades-no-fraudtalon-agora-com-análise-explicativa"&gt;🚨 Novidades no FraudTalon: agora com análise explicativa&lt;/h1&gt;
&lt;p&gt;O FraudTalon está evoluindo. A nova atualização traz recursos importantes e prepara o terreno para o lançamento oficial, com foco em educação, precisão e proteção contra golpes digitais.&lt;/p&gt;
&lt;h2 id="-análise-explicativa-entenda-por-que-é-fraude"&gt;🧠 Análise explicativa: entenda por que é fraude&lt;/h2&gt;
&lt;p&gt;Agora, independentemente do tipo de dado analisado — texto, imagem ou e-mail — o sistema apresenta uma &lt;strong&gt;explicação clara sobre os motivos&lt;/strong&gt; que levaram à classificação como possível fraude. Isso torna a experiência muito mais educativa, revelando os padrões usados por golpistas.&lt;/p&gt;</description></item><item><title>Say Cheese: Catch Curious Eyes on Your Mac with a Snapshot</title><link>https://adlermedrado.com.br/posts/say-cheese-catch-curious-eyes/</link><pubDate>Mon, 14 Jul 2025 09:32:27 -0300</pubDate><guid>https://adlermedrado.com.br/posts/say-cheese-catch-curious-eyes/</guid><description>&lt;p&gt;Ever worried someone might peek at your MacBook when you&amp;rsquo;re not around?&lt;/p&gt;
&lt;p&gt;Last Friday, I built a simple, effective, and open-source solution to deal with that — and I called it &lt;strong&gt;Say Cheese&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Here’s the idea: if someone opens your Mac’s lid without authenticating via Touch ID, a photo is instantly taken and sent to your iPhone through iMessage. You get a live snapshot of the intruder — no fuss.&lt;/p&gt;</description></item><item><title>Say Cheese: Proteja Seu Mac de Curiosos com Uma Foto na Hora do Acesso</title><link>https://adlermedrado.com.br/posts/say-cheese-proteja-se-contra-curiosos/</link><pubDate>Mon, 14 Jul 2025 09:32:00 -0300</pubDate><guid>https://adlermedrado.com.br/posts/say-cheese-proteja-se-contra-curiosos/</guid><description>&lt;p&gt;Já pensou alguém abrindo seu MacBook quando você não tá por perto?&lt;/p&gt;
&lt;p&gt;Na sexta-feira criei uma solução simples, eficaz e de código aberto pra lidar com isso — e batizei de &lt;strong&gt;Say Cheese&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;A ideia é a seguinte: se alguém abrir a tampa do seu Mac sem autenticar com Touch ID, uma foto é tirada na hora e enviada direto pro seu iPhone, via iMessage. Você recebe a cara do curioso em tempo real. Simples assim.&lt;/p&gt;</description></item><item><title>Update: Análise de emails (.eml) com FraudTalon</title><link>https://adlermedrado.com.br/posts/fraudtalon-processamento-email/</link><pubDate>Sat, 28 Jun 2025 15:46:07 -0300</pubDate><guid>https://adlermedrado.com.br/posts/fraudtalon-processamento-email/</guid><description>&lt;h3 id="o-fraudtalon-deu-mais-um-passo-importante"&gt;O FraudTalon deu mais um passo importante.&lt;/h3&gt;
&lt;p&gt;Mesmo com pouco tempo livre na semana, sigo comprometido em manter o FraudTalon avançando e publicando updates regulares.&lt;/p&gt;
&lt;p&gt;A partir de hoje, é possível fazer o upload de arquivos .eml diretamente pela interface, e o sistema realiza uma análise
completa combinando heurísticas de segurança de e-mails com inteligência artificial.&lt;/p&gt;
&lt;img alt="fraudtalon-banner" height="50%" src="https://adlermedrado.com.br/posts/images/fraudtalon-banner.png" width="50%"/&gt;
&lt;p&gt;O pipeline está assim:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Parse automático do .eml, com extração dos headers, remetente, destinatário, assunto e corpo&lt;/li&gt;
&lt;li&gt;Avaliação heurística com sinais como:
&lt;ul&gt;
&lt;li&gt;Mismatch entre From, Reply-To e Return-Path&lt;/li&gt;
&lt;li&gt;Falhas de autenticação (DKIM, SPF, DMARC)&lt;/li&gt;
&lt;li&gt;Recebimento por servidores desconhecidos&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Análise por IA (via OpenAI) levando em conta todo o conteúdo textual&lt;/li&gt;
&lt;li&gt;Score consolidado com os sinais suspeitos encontrados&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Essa atualização transforma o &lt;a href="https://fraudtalon.com"&gt;FraudTalon&lt;/a&gt; em uma ferramenta muito mais útil para análise de
e-mails suspeitos, como golpes de Pix, phishing, ou promessas falsas de investimento.&lt;/p&gt;</description></item><item><title>Update: Email (.eml) Analysis with FraudTalon</title><link>https://adlermedrado.com.br/posts/fraudtalon-email-processing/</link><pubDate>Sat, 28 Jun 2025 15:46:07 -0300</pubDate><guid>https://adlermedrado.com.br/posts/fraudtalon-email-processing/</guid><description>&lt;h3 id="fraudtalon-just-took-another-important-step"&gt;FraudTalon just took another important step.&lt;/h3&gt;
&lt;p&gt;I’m only able to work on FraudTalon a few hours per week, but I’m committed to making steady progress and sharing weekly updates.0&lt;/p&gt;
&lt;p&gt;Starting today, you can upload &lt;code&gt;.eml&lt;/code&gt; files directly through the interface, and the system will run a complete analysis
using a combination of email security heuristics and artificial intelligence.&lt;/p&gt;
&lt;img alt="fraudtalon-banner" height="50%" src="https://adlermedrado.com.br/posts/images/fraudtalon-banner.png" width="50%"/&gt;
&lt;p&gt;The pipeline now works like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatic &lt;code&gt;.eml&lt;/code&gt; parsing with extraction of headers, sender, recipient, subject, and body&lt;/li&gt;
&lt;li&gt;Heuristic evaluation with signals such as:
&lt;ul&gt;
&lt;li&gt;Mismatch between From, Reply-To, and Return-Path&lt;/li&gt;
&lt;li&gt;Authentication failures (DKIM, SPF, DMARC)&lt;/li&gt;
&lt;li&gt;Relaying through unknown servers&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;AI analysis (via OpenAI) that takes into account the full textual content&lt;/li&gt;
&lt;li&gt;Final score with a breakdown of suspicious indicators&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This update makes &lt;a href="https://fraudtalon.com"&gt;FraudTalon&lt;/a&gt; a much more powerful tool for analyzing suspicious emails like
phishing, Pix scams, or fake investment offers.&lt;/p&gt;</description></item><item><title>Combatendo fraudes online com FraudTalon</title><link>https://adlermedrado.com.br/posts/fraudtalon-mvp-br/</link><pubDate>Fri, 20 Jun 2025 17:58:55 -0300</pubDate><guid>https://adlermedrado.com.br/posts/fraudtalon-mvp-br/</guid><description>&lt;p&gt;Depois de receber tantas mensagens dos meus pais, esposa, irmã e amigos perguntando se certos e-mails ou anúncios que viram nas redes sociais eram legítimos, decidi criar uma ferramenta para ajudar a identificar fraudes, golpes e tentativas de phishing.&lt;/p&gt;
&lt;p&gt;Foi assim que nasceu o &lt;a href="https://fraudtalon.com"&gt;&lt;strong&gt;FraudTalon&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Atualmente ele está na versão MVP 0.0.1 — funcionalidades básicas, heurísticas simples (comecei com NLP mas deixei de lado — por enquanto, não é necessário) e um único LLM baseado em nuvem. O objetivo neste estágio é validar a ideia.&lt;/p&gt;</description></item><item><title>Fighting online fraud with FraudTalon</title><link>https://adlermedrado.com.br/posts/fraudtalon-mvp/</link><pubDate>Fri, 20 Jun 2025 11:24:49 -0300</pubDate><guid>https://adlermedrado.com.br/posts/fraudtalon-mvp/</guid><description>&lt;p&gt;After getting so many messages from my parents, wife, sister, and friends asking if emails or ads they saw on social media were legit, I decided to build a tool to help identify fraud, scams, and phishing attempts.&lt;/p&gt;
&lt;p&gt;That’s how &lt;a href="https://fraudtalon.com"&gt;&lt;strong&gt;FraudTalon&lt;/strong&gt;&lt;/a&gt; was born.&lt;/p&gt;
&lt;p&gt;It’s currently in MVP version &lt;strong&gt;0.0.1&lt;/strong&gt; — basic functionality, simple heuristics (I started with NLP but dropped it — not needed for now), and a single cloud-based LLM. The goal at this stage is to validate the idea.&lt;/p&gt;</description></item><item><title>Ollama Local AI Playbook</title><link>https://adlermedrado.com.br/missives/ollama-local-ai-playbook/</link><pubDate>Mon, 16 Jun 2025 20:25:44 -0300</pubDate><guid>https://adlermedrado.com.br/missives/ollama-local-ai-playbook/</guid><description>&lt;p&gt;Running AI models locally on your Mac M1 is easier than you think.&lt;/p&gt;
&lt;p&gt;No cloud. No expensive subscriptions. No unnecessary complexity. Just your own hardware and full control.&lt;/p&gt;
&lt;p&gt;I just released a 30-minute playbook that shows exactly how to run Ollama fully local on Mac M1:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Full install guide&lt;/li&gt;
&lt;li&gt;Copy-paste terminal commands&lt;/li&gt;
&lt;li&gt;Model recommendations tested on M1 hardware&lt;/li&gt;
&lt;li&gt;Performance optimization tips&lt;/li&gt;
&lt;li&gt;Local security checklist&lt;/li&gt;
&lt;li&gt;Bonus cheat sheet included&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Launch price: $5&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Building My Own Sovereign RAG for Secure Code Analysis</title><link>https://adlermedrado.com.br/posts/sovereign-rag/</link><pubDate>Sat, 14 Jun 2025 14:59:31 -0300</pubDate><guid>https://adlermedrado.com.br/posts/sovereign-rag/</guid><description>&lt;h2 id="building-my-own-sovereign-rag-for-secure-code-analysis"&gt;Building My Own Sovereign RAG for Secure Code Analysis&lt;/h2&gt;
&lt;p&gt;Lately, I’ve been taking a closer look at some code analysis tools that claim to detect security vulnerabilities in software projects. The idea itself is solid. I got one of these tools recommended to me and decided to dig deeper to see what’s really behind these solutions.&lt;/p&gt;
&lt;p&gt;Pretty quickly I noticed a pattern: these platforms are far from cheap. Some offer limited free plans, but we all know how this game works. When something that good is offered for “free”, the real price usually comes from somewhere else — data collection, vendor lock-in, black-box models processing your code in someone else’s cloud. And since I’ve been deeply studying AI lately, especially Retrieval-Augmented Generation (RAG), the question came naturally: why not build my own pipeline, fully local, sovereign, using open-source tools, running on my own machine, and depending on no one?&lt;/p&gt;</description></item><item><title>Como construí meu próprio RAG soberano para análise de segurança de código</title><link>https://adlermedrado.com.br/posts/rag_soberano/</link><pubDate>Sat, 14 Jun 2025 14:48:35 -0300</pubDate><guid>https://adlermedrado.com.br/posts/rag_soberano/</guid><description>&lt;h2 id="construindo-meu-próprio-rag-soberano-para-análise-de-segurança-de-código"&gt;Construindo meu próprio RAG soberano para análise de segurança de código&lt;/h2&gt;
&lt;p&gt;Nos últimos tempos, comecei a olhar com mais atenção para algumas ferramentas de análise de código que prometem identificar falhas de segurança em projetos. A ideia é boa. Recebi uma dessas ferramentas como sugestão e fui atrás para entender melhor o que havia por trás da proposta.&lt;/p&gt;
&lt;p&gt;Logo de cara percebi um padrão: os preços dessas plataformas não são exatamente convidativos. Algumas até oferecem planos gratuitos limitados, mas a gente sabe como funciona o jogo. Quando algo muito bom aparece “de graça”, o custo real costuma vir de outro lugar. Coleta de dados, lock-in na plataforma, modelos black-box processando seu código na nuvem de terceiros. E como hoje eu venho estudando bastante IA e, em especial, o tema dos RAGs (Retrieval-Augmented Generation), a pergunta veio automática: por que não montar o meu próprio pipeline, 100% local, soberano, usando ferramentas open-source, rodando direto na minha máquina, sem depender de ninguém?&lt;/p&gt;</description></item><item><title>Now</title><link>https://adlermedrado.com.br/now/</link><pubDate>Wed, 04 Jun 2025 21:33:15 -0300</pubDate><guid>https://adlermedrado.com.br/now/</guid><description>&lt;h2 id="-what-im-doing-now"&gt;📍 What I&amp;rsquo;m Doing Now&lt;/h2&gt;
&lt;p&gt;This is a &lt;a href="https://nownownow.com"&gt;now page&lt;/a&gt;, and if you have your own site, &lt;a href="https://nownownow.com"&gt;you should make one&lt;/a&gt; too.&lt;/p&gt;
&lt;h3 id="last-updated-2026-03-03"&gt;Last updated: 2026-03-03&lt;/h3&gt;
&lt;hr&gt;
&lt;h2 id="-life"&gt;🧠 Life&lt;/h2&gt;
&lt;p&gt;Trying to improve my quality of life. Right now I’m focused on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Losing weight&lt;/li&gt;
&lt;li&gt;Eating healthier&lt;/li&gt;
&lt;li&gt;Lifting weights&lt;/li&gt;
&lt;li&gt;Reducing alcohol consumption&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="-work"&gt;💼 Work&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Working remotely (mostly from São Paulo/SP and Cabo Frio/RJ)&lt;/li&gt;
&lt;li&gt;Diving deeper into &lt;strong&gt;AI and security&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Back to producing videos on my &lt;a href="https://www.youtube.com/@adlermedrado"&gt;YouTube channel&lt;/a&gt;&lt;br&gt;
&lt;em&gt;(Only in Portuguese, for now)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Building and maintaining a few personal projects:&lt;/p&gt;</description></item><item><title>Uses</title><link>https://adlermedrado.com.br/uses/</link><pubDate>Wed, 04 Jun 2025 21:33:15 -0300</pubDate><guid>https://adlermedrado.com.br/uses/</guid><description>&lt;h2 id="-which-tools-do-i-use"&gt;🛠️ Which Tools Do I Use&lt;/h2&gt;
&lt;p&gt;If you’re curious about the tools I use to work, create, write, or simply survive the digital chaos - you’re in the right place.&lt;/p&gt;
&lt;p&gt;This is a living document I update from time to time.&lt;br&gt;
Inspired by Wes Bos’ &lt;a href="https://uses.tech"&gt;uses.tech&lt;/a&gt; project.&lt;/p&gt;
&lt;h3 id="last-update-2025-06-21"&gt;Last update: 2025-06-21&lt;/h3&gt;
&lt;hr&gt;
&lt;h2 id="-hardware"&gt;💻 Hardware&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;MacBook Air M1 - 16GB RAM, 1TB Storage&lt;/li&gt;
&lt;li&gt;Dell Latitude 3420 &lt;a href="https://adlermedrado.com.br/posts/my-website-available-via-tor-network/"&gt;hosting my website on the Tor network&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;LG 19” Full HD Monitor&lt;/li&gt;
&lt;li&gt;Logitech MX Anywhere Mouse&lt;/li&gt;
&lt;li&gt;Logitech K30 Keyboard&lt;/li&gt;
&lt;li&gt;AirPods Pro (2nd Gen)&lt;/li&gt;
&lt;li&gt;Philips TAH6509&lt;/li&gt;
&lt;li&gt;2 Nexstand K2 Folding Laptop Stands (one for my MacBook Air, another for the company’s laptop)&lt;/li&gt;
&lt;li&gt;Third-party laptop stand for the Dell 3420&lt;/li&gt;
&lt;li&gt;USB-C Hub w/ HDMI&lt;/li&gt;
&lt;li&gt;Standard office chair, reinforced, custom-made&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="-daily-workflow"&gt;⚙️ Daily Workflow&lt;/h2&gt;
&lt;p&gt;Tools that power my day-to-day - whether I’m writing code, answering emails, or navigating the system.&lt;/p&gt;</description></item><item><title>Video sobre o meu site</title><link>https://adlermedrado.com.br/missives/video-sobre-o-meu-site/</link><pubDate>Wed, 04 Jun 2025 20:17:00 -0300</pubDate><guid>https://adlermedrado.com.br/missives/video-sobre-o-meu-site/</guid><description>&lt;p&gt;Essa semana eu &lt;a href="https://www.youtube.com/watch?v=PpYk139Xw2Y"&gt;publiquei um vídeo&lt;/a&gt; no &lt;a href="https://www.youtube.com/@labsadler"&gt;meu canal do Youtube&lt;/a&gt; explicando
alguns pontos que eu considero importantes e aplico de maneira objetiva no meu site.&lt;/p&gt;
&lt;p&gt;O vídeo pode ser interessante para quem se preocupa com soberania, segurança e privacidade.&lt;/p&gt;</description></item><item><title>Install &amp; Neovim Bootstrap Revamp</title><link>https://adlermedrado.com.br/missives/install-neovim-bootstrap-revamp/</link><pubDate>Sat, 31 May 2025 22:29:46 -0300</pubDate><guid>https://adlermedrado.com.br/missives/install-neovim-bootstrap-revamp/</guid><description>&lt;p&gt;Ongoing work on fully revamping my dot-files &lt;code&gt;install.sh&lt;/code&gt; and Neovim stack.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dotfiles bootstrap is now modular and declarative.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;install.sh&lt;/code&gt; handles symlinks, backups, plugin sync, and full lazy.nvim bootstrap automatically.&lt;/li&gt;
&lt;li&gt;Neovim config is framework-free, built from scratch with isolated plugin control.&lt;/li&gt;
&lt;li&gt;Full lazy-loading using &lt;code&gt;lazy.nvim&lt;/code&gt;, with sniper-level loading precision.&lt;/li&gt;
&lt;li&gt;LSP, CMP, Treesitter, and nvim-tree properly initialized using &lt;code&gt;config&lt;/code&gt; blocks.&lt;/li&gt;
&lt;li&gt;Keymaps handled via &lt;code&gt;which-key&lt;/code&gt; with full namespace documentation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Work in progress. Updates and refinements will continue over the next days.&lt;/p&gt;</description></item><item><title>MDN Report A+</title><link>https://adlermedrado.com.br/missives/mdn-report-a/</link><pubDate>Tue, 20 May 2025 21:44:46 -0300</pubDate><guid>https://adlermedrado.com.br/missives/mdn-report-a/</guid><description>&lt;p&gt;&lt;img src="https://adlermedrado.com.br/missives/images/badge-aplus.png" alt="MDN A+ badge"&gt;&lt;/p&gt;
&lt;p&gt;Ran my site through &lt;a href="https://developer.mozilla.org/en-US/"&gt;MDN&lt;/a&gt;’s security scanner and kept tweaking until I hit &lt;a href="https://developer.mozilla.org/en-US/observatory/analyze?host=adlermedrado.com.br"&gt;120/100 (A+)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Checked the &lt;a href="https://developer.mozilla.org/en-US/observatory/analyze?host=adlermedrado.com.br#history"&gt;scan history&lt;/a&gt; and the very first one, back in 2018, scored 20/100 (F).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Always improving.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Website updates</title><link>https://adlermedrado.com.br/missives/website-updates/</link><pubDate>Sun, 18 May 2025 23:59:00 -0300</pubDate><guid>https://adlermedrado.com.br/missives/website-updates/</guid><description>&lt;p&gt;This website used to run on Cloudflare Pages. And being 100% honest with my visitors: I had all analytics disabled.&lt;br&gt;
But I still wanted to know more about my traffic without compromising anyone’s privacy.&lt;/p&gt;
&lt;p&gt;So I migrated everything to my own VPS. Now I use nothing but raw logs + &lt;a href="https://goaccess.io"&gt;GoAccess&lt;/a&gt; to understand what’s going on.&lt;br&gt;
No JavaScript tracking, no fingerprinting, no big tech spy bullshit.&lt;/p&gt;
&lt;p&gt;Nginx logs + GoAccess = enough intel to know what’s happening, without selling anyone out.&lt;/p&gt;</description></item><item><title>Real-time Deepfakes: what if "seeing is believing" no longer means anything?</title><link>https://adlermedrado.com.br/posts/deepfakes_realtime/</link><pubDate>Sat, 10 May 2025 11:19:13 -0300</pubDate><guid>https://adlermedrado.com.br/posts/deepfakes_realtime/</guid><description>&lt;p&gt;An open-source project called Deep-Live-Cam is gaining traction on GitHub — and for good reason.&lt;/p&gt;
&lt;p&gt;With just a single still image, it can mimic anyone’s face in a live video call. In real-time. Running locally. No cloud required.&lt;/p&gt;
&lt;p&gt;The implication is clear: you can no longer trust a video call at face value.&lt;/p&gt;
&lt;p&gt;So here’s the question: &lt;strong&gt;how do we verify identity in a world where faces can be forged on demand?&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Deepfakes em tempo real: e se "ver para crer" já não valer mais nada?</title><link>https://adlermedrado.com.br/posts/deepfakes_temporeal/</link><pubDate>Sat, 10 May 2025 11:13:20 -0300</pubDate><guid>https://adlermedrado.com.br/posts/deepfakes_temporeal/</guid><description>&lt;p&gt;Um projeto open-source chamado Deep-Live-Cam está chamando atenção no GitHub. E com razão.&lt;/p&gt;
&lt;p&gt;Com apenas uma imagem estática, ele consegue simular o rosto de qualquer pessoa em tempo real, dentro de uma chamada de vídeo. Tudo isso rodando localmente. Sem nuvem. Sem limites.&lt;/p&gt;
&lt;p&gt;A consequência é direta: não dá mais pra confiar em uma chamada de vídeo.&lt;/p&gt;
&lt;p&gt;E isso levanta a pergunta inevitável: &lt;strong&gt;como validamos a identidade num mundo onde rostos podem ser forjados ao vivo?&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Por que você deveria começar a usar GPG agora</title><link>https://adlermedrado.com.br/posts/gpg-intro-pt/</link><pubDate>Sun, 27 Apr 2025 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/gpg-intro-pt/</guid><description>&lt;h1 id="por-que-você-deveria-começar-a-usar-gpg-agora"&gt;Por que você deveria começar a usar GPG agora&lt;/h1&gt;
&lt;p&gt;Se você ainda não utiliza GPG para assinar ou criptografar seus arquivos e mensagens, está na hora de repensar isso. Não é apenas sobre parecer um hacker de filme dos anos 90 — é sobre proteger sua comunicação e identidade digital em um mundo cada vez mais hostil.&lt;/p&gt;
&lt;h2 id="-o-que-é-gpg"&gt;🔐 O que é GPG?&lt;/h2&gt;
&lt;p&gt;GPG (GNU Privacy Guard) é uma implementação livre do padrão OpenPGP. Ele permite que você crie pares de chaves criptográficas para assinar digitalmente arquivos e mensagens, além de criptografá-los para garantir confidencialidade. É uma ferramenta essencial para quem leva a sério a segurança digital.&lt;/p&gt;</description></item><item><title>Why You Should Start Using GPG Now</title><link>https://adlermedrado.com.br/posts/gpg-intro-en/</link><pubDate>Sun, 27 Apr 2025 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/gpg-intro-en/</guid><description>&lt;h1 id="why-you-should-start-using-gpg-now"&gt;Why You Should Start Using GPG Now&lt;/h1&gt;
&lt;p&gt;If you&amp;rsquo;re not using GPG to sign or encrypt your files and messages yet, it&amp;rsquo;s time to reconsider. It&amp;rsquo;s not just about looking like a 90s movie hacker — it&amp;rsquo;s about protecting your communication and digital identity in an increasingly hostile world.&lt;/p&gt;
&lt;h2 id="-what-is-gpg"&gt;🔐 What is GPG?&lt;/h2&gt;
&lt;p&gt;GPG (GNU Privacy Guard) is a free implementation of the OpenPGP standard. It allows you to create cryptographic key pairs to digitally sign files and messages, as well as encrypt them to ensure confidentiality. It&amp;rsquo;s an essential tool for anyone serious about digital security.&lt;/p&gt;</description></item><item><title>Ollama vs LM Studio vs llama.cpp — A No-BS Guide to Running LLMs Locally on macOS</title><link>https://adlermedrado.com.br/posts/llm_local_llamacpp_mac/</link><pubDate>Mon, 21 Apr 2025 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/llm_local_llamacpp_mac/</guid><description>&lt;p&gt;Let’s cut the fluff: if you care about privacy, speed, and having full control over your stack, running LLMs locally is no longer optional — it’s survival. Cloud’s nice until it’s not. Especially when your data is the product and your API bill explodes overnight.&lt;/p&gt;
&lt;p&gt;I put this guide together because I wanted &lt;strong&gt;LLMs running locally&lt;/strong&gt;, even with limited hardware — no vendor lock-in, no middlemen sniffing packets, just raw local compute. And yes, I run this stuff daily on a MacBook Air M1 with 16GB RAM. Modest? Yep. Enough? Hell yes.&lt;/p&gt;</description></item><item><title>Os lugares onde nunca mais voltei, mas que ainda me habitam</title><link>https://adlermedrado.com.br/posts/os-lugares-onde-nunca-mais-voltei/</link><pubDate>Tue, 15 Apr 2025 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/os-lugares-onde-nunca-mais-voltei/</guid><description>&lt;p&gt;Tem lugares que eu nunca mais pisei, mas que ainda moram em mim.&lt;br&gt;
Quartos escuros, banhados pelo brilho frio de um monitor CRT.&lt;br&gt;
A luz do modem piscando como um farol numa madrugada silenciosa.&lt;br&gt;
Ninguém por perto. Só eu e alguma banda que berrava coisas que eu nem entendia direito — mas sentia.&lt;/p&gt;
&lt;p&gt;Não era tristeza. Era solidão.&lt;br&gt;
Mas era minha. Domada, domesticada.&lt;br&gt;
Aprendi a conversar com ela quando todo o resto só queria fazer barulho.&lt;/p&gt;</description></item><item><title>The Places I Never Returned To, But Still Live in Me</title><link>https://adlermedrado.com.br/posts/the-places-i-never-returned-to/</link><pubDate>Tue, 15 Apr 2025 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/the-places-i-never-returned-to/</guid><description>&lt;p&gt;There are places I never stepped in again, but they still live in me.&lt;br&gt;
Dark rooms lit by the cold glow of a CRT monitor.&lt;br&gt;
The light of the modem blinking like a lighthouse in the silent dawn.&lt;br&gt;
No one around. Just me and some band screaming things I barely understood — but deeply felt.&lt;/p&gt;
&lt;p&gt;It wasn’t sadness. It was solitude.&lt;br&gt;
But it was mine. Tamed, familiar.&lt;br&gt;
I learned to talk to it when the rest of the world only wanted noise.&lt;/p&gt;</description></item><item><title>Job Finder - Automating job search with AI powered analysis</title><link>https://adlermedrado.com.br/posts/automating_job_search_with_ai_powered_analysis/</link><pubDate>Thu, 06 Feb 2025 18:08:32 -0300</pubDate><guid>https://adlermedrado.com.br/posts/automating_job_search_with_ai_powered_analysis/</guid><description>&lt;p&gt;&lt;img src="https://adlermedrado.com.br/images/header-job-search.png" alt="Job Finder" width="100%" height="auto"&gt;&lt;/img&gt;&lt;/p&gt;
&lt;p&gt;Hey everyone! I just wanted to share a new pet project I&amp;rsquo;ve been working on.&lt;/p&gt;
&lt;p&gt;I built &lt;strong&gt;Job Finder&lt;/strong&gt; to automate job searches, analyze descriptions using AI, and filter the best opportunities based on personal criteria.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Job Finder&lt;/strong&gt; is an &lt;strong&gt;open-source&lt;/strong&gt; project designed to &lt;strong&gt;automate job searching, analyze job descriptions using AI, and filter opportunities based on predefined criteria&lt;/strong&gt;. Initially developed as a personal study project, it demonstrates the integration of &lt;strong&gt;automation, AI, and data processing&lt;/strong&gt;, but can also be useful for others looking to streamline job searches.&lt;/p&gt;</description></item><item><title>Aproveita, daqui pra frente é só porrada</title><link>https://adlermedrado.com.br/posts/aproveita-daqui-pra-frente-e-so-porrada/</link><pubDate>Thu, 30 Jan 2025 21:21:17 -0300</pubDate><guid>https://adlermedrado.com.br/posts/aproveita-daqui-pra-frente-e-so-porrada/</guid><description>&lt;p&gt;1994 - Uma madrugada qualquer.&lt;/p&gt;
&lt;p&gt;O monitor brilha no escuro, o som do modem discando corta o silêncio da noite. A conexão finalmente estabiliza e, ali, na tela verde de um BBS qualquer, o mundo se abre. Sem redes sociais, sem algoritmos decidindo o que você vê, sem lixo.&lt;/p&gt;
&lt;p&gt;Apenas texto, listas de mensagens, arquivos para baixar, descobertas a serem feitas. Cada login é uma pequena aventura.&lt;/p&gt;
&lt;p&gt;E no meio desse ritual solitário e sagrado, um hábito quase automático: levantar da cadeira, pegar um dinheirinho e sair na madrugada até o posto de gasolina 24h mais próximo. Naquela época, no Guará, Distrito Federal, &lt;strong&gt;loja de conveniência em posto de gasolina era coisa rara&lt;/strong&gt;, mas aquele posto tinha uma vending machine de Coca-Cola. E lá estava ela, &lt;strong&gt;Cherry Coke&lt;/strong&gt;, uma raridade por aqui. Comprar uma lata era um evento. Abrir e sentir o gosto meio artificial, meio viciante, era parte da experiência da madrugada.&lt;/p&gt;</description></item><item><title>From BBS to Blockchain: A Boat Gig Parody for Old-School Nerds</title><link>https://adlermedrado.com.br/posts/boat-gig-parody/</link><pubDate>Tue, 28 Jan 2025 21:33:15 -0300</pubDate><guid>https://adlermedrado.com.br/posts/boat-gig-parody/</guid><description>&lt;p&gt;Last weekend, I was coding when a song from one of my Apple Music playlists started playing: Boat Gig by the band Tribal Tech (highly recommended if you’re not familiar with it).&lt;/p&gt;
&lt;p&gt;As the music played and I continued coding and learning to work with AI, a sort of movie ran through my mind—reflecting on where we’ve come from (at least since I hopped on the boat) in the tech world, and where we are today.&lt;/p&gt;</description></item><item><title>Understanding when to use stream() vs forEach() in Java</title><link>https://adlermedrado.com.br/posts/stream-vs-foreach-in-java/</link><pubDate>Sun, 03 Nov 2024 10:58:18 -0300</pubDate><guid>https://adlermedrado.com.br/posts/stream-vs-foreach-in-java/</guid><description>&lt;p&gt;In Java, choosing between Stream() and ForEach() depends on what you want to do with your data. While both are used to iterate over collections, each has its own strengths.&lt;/p&gt;
&lt;h2 id="stream"&gt;stream()&lt;/h2&gt;
&lt;p&gt;Using stream() is powerful for complex data transformations, allowing operations like filtering, mapping, and reducing. It&amp;rsquo;s ideal for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transformations and filters: Use Stream() to apply operations like filtering, mapping, grouping, or reducing data.&lt;/li&gt;
&lt;li&gt;Chained processing: Apply multiple operations in a single chain.&lt;/li&gt;
&lt;li&gt;Parallel processing: For large datasets, use parallelStream() to leverage multi-core processors.&lt;/li&gt;
&lt;li&gt;Immutability: Streams avoid side effects, allowing new collections to be generated without changing the original.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="example"&gt;Example:&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;List&lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;String&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; names &lt;span style="color:#f92672"&gt;=&lt;/span&gt; Arrays.&lt;span style="color:#a6e22e"&gt;asList&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;Maria&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;José&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;João&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;List&lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;String&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; filteredNames &lt;span style="color:#f92672"&gt;=&lt;/span&gt; names.&lt;span style="color:#a6e22e"&gt;stream&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.&lt;span style="color:#a6e22e"&gt;filter&lt;/span&gt;(name &lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt; name.&lt;span style="color:#a6e22e"&gt;startsWith&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;J&amp;#34;&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.&lt;span style="color:#a6e22e"&gt;map&lt;/span&gt;(String::toUpperCase)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.&lt;span style="color:#a6e22e"&gt;collect&lt;/span&gt;(Collectors.&lt;span style="color:#a6e22e"&gt;toList&lt;/span&gt;());
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The results will be a new list only with the names started with &lt;em&gt;J&lt;/em&gt; in uppercase.&lt;/p&gt;</description></item><item><title>Shadowdata Updates</title><link>https://adlermedrado.com.br/posts/shadowdata-updates/</link><pubDate>Sun, 13 Oct 2024 15:53:53 -0300</pubDate><guid>https://adlermedrado.com.br/posts/shadowdata-updates/</guid><description>&lt;p&gt;Yesterday, &lt;a href="https://adlermedrado.com.br/posts/shadowdata-sensitive-data-handler/"&gt;I published a blog&lt;/a&gt; post introducing my new open-source project, ShadowData.&lt;/p&gt;
&lt;p&gt;This post is just to inform anyone interested that I have made some updates today.&lt;/p&gt;
&lt;p&gt;New Features Added to the Project:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Email address anonymization&lt;/li&gt;
&lt;li&gt;Phone number anonymization&lt;/li&gt;
&lt;li&gt;Symmetric cryptography for encryption and decryption&lt;/li&gt;
&lt;li&gt;Minor improvements to tests and code quality&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can look the code at the &lt;a href="https://github.com/adlermedrado/ShadowData/"&gt;Github repository&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;See you.&lt;/p&gt;</description></item><item><title>Shadowdata Sensitive Data Handler Python Library</title><link>https://adlermedrado.com.br/posts/shadowdata-sensitive-data-handler/</link><pubDate>Sat, 12 Oct 2024 21:23:34 -0300</pubDate><guid>https://adlermedrado.com.br/posts/shadowdata-sensitive-data-handler/</guid><description>&lt;p&gt;I am deeply concerned about how to handle sensitive data in the projects I work on. Nowadays, there are laws in various countries addressing this issue, and the topic becomes increasingly important as time goes on.&lt;/p&gt;
&lt;p&gt;Therefore, I decided to create a Python library that can help me deal with scenarios where it is necessary to process data to prevent any individual from being identified if the information is accessed. The library also handles data transformations, encryption, and the detection of sensitive personal data.&lt;/p&gt;</description></item><item><title>Introduction to Internet Privacy: Five Essential First Steps</title><link>https://adlermedrado.com.br/posts/privacy-5-initial-steps/</link><pubDate>Thu, 08 Aug 2024 16:33:40 -0300</pubDate><guid>https://adlermedrado.com.br/posts/privacy-5-initial-steps/</guid><description>&lt;h3 id="introduction-to-internet-privacy-five-essential-first-steps"&gt;Introduction to Internet Privacy: Five Essential First Steps&lt;/h3&gt;
&lt;img alt="Privacy" height="60%" src="https://adlermedrado.com.br/posts/images/privacidade.jpg" title="Privacy" width="60%"/&gt;
&lt;p&gt;We live in an era where the internet is deeply embedded in our daily lives. Whether for work, leisure, or communication, we are constantly connected. However, this continuous connection comes at a price: our privacy. In a world where data is the new gold, protecting our personal information has become crucial. Here are five essential first steps to ensure your online privacy.&lt;/p&gt;</description></item><item><title>Introdução à Privacidade na Internet: Cinco Primeiros Passos Essenciais</title><link>https://adlermedrado.com.br/posts/privacidade-5-passos-essenciais/</link><pubDate>Mon, 05 Aug 2024 21:19:41 -0300</pubDate><guid>https://adlermedrado.com.br/posts/privacidade-5-passos-essenciais/</guid><description>&lt;h3 id="introdução-à-privacidade-na-internet-cinco-primeiros-passos-essenciais"&gt;Introdução à Privacidade na Internet: Cinco Primeiros Passos Essenciais&lt;/h3&gt;
&lt;img alt="Privacidade" height="60%" src="https://adlermedrado.com.br/posts/images/privacidade.jpg" title="Privacidade" width="60%"/&gt;
&lt;p&gt;Vivemos em uma era onde a internet está profundamente enraizada em nossas vidas diárias. Seja para trabalho, lazer ou comunicação, estamos constantemente conectados. No entanto, essa conexão contínua vem com um preço: nossa privacidade. Em um mundo onde dados são o novo ouro, proteger nossa informação pessoal tornou-se crucial. Aqui estão cinco primeiros passos essenciais para garantir sua privacidade online.&lt;/p&gt;
&lt;h4 id="1-use-um-navegador-focado-em-privacidade"&gt;1. Use um Navegador Focado em Privacidade&lt;/h4&gt;
&lt;p&gt;A maioria dos navegadores populares coleta uma quantidade significativa de dados sobre seus usuários. Para minimizar essa coleta, considere usar navegadores focados em privacidade, como o Brave ou o Tor Browser. O Brave bloqueia rastreadores automaticamente e o Tor Browser anonimiza seu tráfego, tornando mais difícil para terceiros rastrearem suas atividades online.&lt;/p&gt;</description></item><item><title>Sudo com Touch ID no macOS</title><link>https://adlermedrado.com.br/posts/sudo-touch-id-pt-br/</link><pubDate>Sun, 16 Jun 2024 09:12:42 -0300</pubDate><guid>https://adlermedrado.com.br/posts/sudo-touch-id-pt-br/</guid><description>&lt;p&gt;Configurar o sudo para usar o Touch ID no macOS Sonoma em apenas alguns passos é muito fácil.&lt;/p&gt;
&lt;p&gt;Localize o arquivo /etc/pam.d/sudo_local.template e faça uma cópia conforme o exemplo abaixo:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo cp /etc/pam.d/sudo_local.template /etc/pam.d/sudo_local
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Em seguida, edite o arquivo e remova o caractere # do início da linha 3, ele deve ficar assim:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# sudo_local: arquivo de configuração local que sobrevive a atualizações do sistema e é incluído para sudo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# descomente a linha a seguir para habilitar o Touch ID para sudo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;auth sufficient pam_tid.so
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="passos-detalhados-para-editar-o-arquivo"&gt;Passos detalhados para editar o arquivo&lt;/h4&gt;
&lt;p&gt;Para editar o arquivo, use um editor de texto como nano ou vim. Por exemplo, com o nano:&lt;/p&gt;</description></item><item><title>Sudo with Touch ID on macOS</title><link>https://adlermedrado.com.br/posts/sudo-touch-id/</link><pubDate>Wed, 05 Jun 2024 20:03:28 -0300</pubDate><guid>https://adlermedrado.com.br/posts/sudo-touch-id/</guid><description>&lt;p&gt;Setting up sudo for use with Touch ID on macOS Sonoma in just a few steps is very easy.&lt;/p&gt;
&lt;p&gt;Locate the &lt;em&gt;file /etc/pam.d/sudo_local.template&lt;/em&gt; and make a copy as shown in the example below:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo cp /etc/pam.d/sudo_local.template /etc/pam.d/sudo_local
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then edit the file and remove the # character from the beginning of line 3, it should look like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# sudo_local: local config file which survives system update and is included for sudo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# uncomment following line to enable Touch ID for sudo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;auth sufficient pam_tid.so
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="detailed-steps-to-edit-the-file"&gt;Detailed Steps to Edit the File&lt;/h3&gt;
&lt;p&gt;To edit the file, use a text editor like nano or vim. For example, with nano:&lt;/p&gt;</description></item><item><title>Assinando páginas HTML com GPG</title><link>https://adlermedrado.com.br/posts/assinando-html-com-gpg/</link><pubDate>Sun, 07 Jan 2024 11:44:54 -0300</pubDate><guid>https://adlermedrado.com.br/posts/assinando-html-com-gpg/</guid><description>&lt;p&gt;Há alguns meses eu reformulei este site, eu estava usando wordpress e não estava
muito feliz com isso, então decidi usar um gerador de páginas estáticas, nesse caso o &lt;a href="https://gohugo.io"&gt;Hugo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;No passado eu já utilizei o &lt;a href="https://getpelican.com"&gt;Pelican&lt;/a&gt;, o &lt;a href="https://jekyllrb.com"&gt;Jekyll&lt;/a&gt; e o Dangolino,
este último era uma ferramenta criada por mim, mas que descontinuei depois de algum tempo.
Se não me engano, há posts aqui falando sobre eles.&lt;/p&gt;
&lt;h2 id="por-que-assinar-as-páginas"&gt;Por que assinar as páginas?&lt;/h2&gt;
&lt;p&gt;Eu vejo a criptografia como um mecanismo de defesa, acredito que as pessoas devem
criptografar tudo, para tentar garantir segurança, privacidade e autenticidade, entre outras coisas.&lt;/p&gt;</description></item><item><title>Ferramentas para uso diário</title><link>https://adlermedrado.com.br/posts/ferramentas-para-uso-diario/</link><pubDate>Thu, 12 Oct 2023 10:44:28 -0300</pubDate><guid>https://adlermedrado.com.br/posts/ferramentas-para-uso-diario/</guid><description>&lt;p&gt;Eventualmente me perguntam o que eu costumo usar no computador em meu dia-a-dia,
então decidi escrever esse post, assim registro o que uso atualmente afim de
poder comparar com o que estarei usando no futuro.&lt;/p&gt;
&lt;p&gt;Eu sou uma pessoa de hábitos simples, então diferente de muita gente que escreve
posts como esse, eu não tenho fogo no rabo e saio usando tudo que vejo pela
frente, sendo assim, segue a lista.&lt;/p&gt;</description></item><item><title>Install lxml on MacBook with Apple Silicon</title><link>https://adlermedrado.com.br/posts/install-lxml-on-macbook-with-apple-silicon/</link><pubDate>Tue, 03 Jan 2023 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/install-lxml-on-macbook-with-apple-silicon/</guid><description>&lt;p&gt;&lt;img src="https://adlermedrado.com.br/posts/images/Screenshot-2023-01-03-at-14.57.09-1024x515.png" alt="pip install error when installing lxml"&gt;&lt;/p&gt;
&lt;p&gt;Today I needed to install lxml into a python project I&amp;rsquo;m working on my local machine, but I got the following errors when xmlsec, that is a library dependency, was being installed:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Building wheels &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; collected packages: xmlsec 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Building wheel &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; xmlsec &lt;span style="color:#f92672"&gt;(&lt;/span&gt;pyproject.toml&lt;span style="color:#f92672"&gt;)&lt;/span&gt; … error 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;error: subprocess-exited-with-error 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;× Building wheel &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; xmlsec &lt;span style="color:#f92672"&gt;(&lt;/span&gt;pyproject.toml&lt;span style="color:#f92672"&gt;)&lt;/span&gt; did not run successfully. 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ exit code: &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;╰─&amp;gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;13&lt;/span&gt; lines of output&lt;span style="color:#f92672"&gt;]&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;running bdist_wheel 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;running build 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;running build_py 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;creating build 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;creating build/lib.macosx-13.0-arm64-cpython-310 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;creating build/lib.macosx-13.0-arm64-cpython-310/xmlsec 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;copying src/xmlsec/py.typed -&amp;gt; build/lib.macosx-13.0-arm64-cpython-310/xmlsec 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;copying src/xmlsec/tree.pyi -&amp;gt; build/lib.macosx-13.0-arm64-cpython-310/xmlsec 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;copying src/xmlsec/**init**.pyi -&amp;gt; build/lib.macosx-13.0-arm64-cpython-310/xmlsec 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;copying src/xmlsec/constants.pyi -&amp;gt; build/lib.macosx-13.0-arm64-cpython-310/xmlsec 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;copying src/xmlsec/template.pyi -&amp;gt; build/lib.macosx-13.0-arm64-cpython-310/xmlsec 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;running build_ext 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;error: xmlsec1 is not installed or not in path. 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;end of output&lt;span style="color:#f92672"&gt;]&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;note: This error originates from a subprocess, and is likely not a problem with pip. 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ERROR: Failed building wheel &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; xmlsec 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Failed to build xmlsec 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ERROR: Could not build wheels &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; xmlsec, which is required to install pyproject.toml-based projects
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;So to install it, on my MacBook machine with Apple Silicon and macOS Ventura, I needed to execute the following commands:&lt;/p&gt;</description></item><item><title>Enabling Click and Drag on MacBook</title><link>https://adlermedrado.com.br/posts/enabling-click-and-drag-on-macbook/</link><pubDate>Wed, 09 Jun 2021 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/enabling-click-and-drag-on-macbook/</guid><description>&lt;p&gt;I&amp;rsquo;m using macOS again, and of course that I&amp;rsquo;ll forget this tip, so I&amp;rsquo;ll write this post to help me another day in the
future.&lt;/p&gt;
&lt;p&gt;If you want to enable the click and drag option on MacBook, just go to: &lt;strong&gt;System Preferences → Accessibility → Pointer
Control → Mouse and Trackpad → Trackpad Options → Enable Dragging.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Posts antigos restaurados</title><link>https://adlermedrado.com.br/posts/posts-antigos-restaurados/</link><pubDate>Sun, 31 Dec 2017 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/posts-antigos-restaurados/</guid><description>&lt;p&gt;É muito legal ser programador e participar de projetos com as mais variadas dimensões e complexidades, mas uma das
coisas que eu acho mais legal em ser um programador é o fato de poder utilizar este conhecimento para automatizar
tarefas e resolver problemas do cotidiano.&lt;/p&gt;
&lt;p&gt;Resolvi escrever este post justamente porque eu automatizei uma tarefa que me tomaria algumas horas com um pequeno e
simples script &lt;a href="https://www.python.org/"&gt;python&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Eu achei legal escrever um pouco sobre isso porque pode servir de exemplo para pessoas que não trabalham com programação
diariamente de que elas podem se beneficiar em conhecer um pouco e tentar otimizar tarefas repetitivas.&lt;/p&gt;</description></item><item><title>Do PHP ao Python</title><link>https://adlermedrado.com.br/posts/do-php-ao-python/</link><pubDate>Fri, 09 Jun 2017 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/do-php-ao-python/</guid><description>&lt;p&gt;Um pouco da minha experiência na transição de PHP para Python&lt;/p&gt;
&lt;p&gt;&lt;img src="https://adlermedrado.com.br/posts/images/1*wlukTN8cgk7n2rJTOKlOkw.jpeg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Eu e o Elephant na PHP Conference Brasil 2012&lt;/p&gt;
&lt;h3 id="introdução"&gt;Introdução&lt;/h3&gt;
&lt;p&gt;Em Dezembro de 2015 eu fui convidado a trabalhar no Olist e eu comecei a trabalhar efetivamente em Janeiro de 2016.
A situação naquela época está mais ou menos
descrita &lt;a href="https://engineering.olist.com/o-estado-da-tecnologia-na-olist-da18af46b284"&gt;neste post&lt;/a&gt;
do &lt;a href="https://medium.com/u/e8348ef249f3"&gt;osantana&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Era um desafio pois a equipe estava bem restrita, a plataforma era monolítica e de difícil manutenção, somado a isso o
negócio do Olist em si não é algo trivial.&lt;/p&gt;</description></item><item><title>Erro incômodo com o Postgresql no Mac</title><link>https://adlermedrado.com.br/posts/erro-incomodo-com-o-postgresql-no-mac/</link><pubDate>Sun, 02 Oct 2016 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/erro-incomodo-com-o-postgresql-no-mac/</guid><description>&lt;p&gt;Esse é um post bem curto que resolvi escrever depois de me incomodar com um erro esquisito no Postgresql no Mac após a
atualização para o MacOS Sierra.&lt;/p&gt;
&lt;p&gt;O servidor do Postgresql estava funcionando OK mas o client cli me retorna o erro abaixo sempre que eu o executava:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://adlermedrado.com.br/posts/images/1*nKXkh2PzTW85hhl59x3-3w.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;WTF?&lt;/p&gt;
&lt;p&gt;Eu costumo usar o &lt;em&gt;homebrew&lt;/em&gt; para instalar a maioria das coisas no meu mac, primeiramente eu pensei que fosse algum
problema com algum link simbólico incorreto, então eu executei o comando abaixo para ver se resolvia:&lt;/p&gt;</description></item><item><title>Home-Office significa trabalhar de cueca?</title><link>https://adlermedrado.com.br/posts/home-office-significa-trabalhar-de-cueca/</link><pubDate>Sun, 22 Nov 2015 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/home-office-significa-trabalhar-de-cueca/</guid><description>&lt;p&gt;Ah, o home-office: Muita gente pensa que trabalhar nessa modalidade significa trabalhar a hora que quiser, de cueca e
meias, tomando cerveja e que quando cansa pode dar uma paradinha pra ir caminhar na praia, parque ou qualquer outro
ambiente agradável.&lt;/p&gt;
&lt;p&gt;Bom, pode até ser que algumas pessoas trabalhem assim, mas, comigo é diferente e neste artigo eu irei expor a minha
experiência trabalhando com home-office. Eu gosto de ler sobre a experiência de outras pessoas em diversos aspectos e
home-office é uma delas, então porque não falar sobre a minha e e fazer o intercâmbio de experiências?&lt;/p&gt;</description></item><item><title>PHP para Todos</title><link>https://adlermedrado.com.br/posts/php-para-todos/</link><pubDate>Mon, 16 Nov 2015 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/php-para-todos/</guid><description>&lt;p&gt;Resolvi colocar em prática uma idéia que deixei hibernando por um bom tempo, que era a de criar um site com conteúdo
voltado a iniciantes em desenvolvimento com PHP.&lt;/p&gt;
&lt;p&gt;É muito fácil encontrar conteúdos de excelente qualidade que são voltados a pessoas que já possuem um nível de
conhecimento maior em PHP, mas o mesmo não pode ser dito a respeito de conteúdos para iniciantes, sendo assim, eu topei
o desafio e criei o &lt;a href="http://phpparatodos.com.br"&gt;PHP para Todos&lt;/a&gt;, estou tentando manter uma regularidade nos artigos e
também estou preparando novidades que espero lançar em breve.&lt;/p&gt;</description></item><item><title>BBS: Depois de muitos anos, um acesso</title><link>https://adlermedrado.com.br/posts/bbs-depois-de-muitos-anos-um-acesso/</link><pubDate>Fri, 06 Nov 2015 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/bbs-depois-de-muitos-anos-um-acesso/</guid><description>&lt;p&gt;Hoje depois de trabalhar o dia todo e uma parte da noite, eu resolvi pesquisar se ainda existia algum BBS online.&lt;/p&gt;
&lt;p&gt;O interessante é que sim, existem, contudo, ao invés de usar uma linha telefônica para acessa-los, nós usamos o
protocolo
&lt;em&gt;telnet&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Nessas horas que eu percebo que estou ficando velho e olha que quando eu entrei naquele mundo dos BBSs já tinham os
&lt;em&gt;veteranos&lt;/em&gt;, &lt;em&gt;old-school&lt;/em&gt; (pra não chamar de mais-velhos-ainda) que habitavam aquele universo.&lt;/p&gt;</description></item><item><title>Bug estranho na integração do Mac OS X com o Google</title><link>https://adlermedrado.com.br/posts/bug-estranho-na-integracao-do-mac-os-x-com-o-google/</link><pubDate>Wed, 04 Nov 2015 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/bug-estranho-na-integracao-do-mac-os-x-com-o-google/</guid><description>&lt;p&gt;Recentemente aconteceu uma coisa esquisita.&lt;/p&gt;
&lt;p&gt;Eu tinha 3 contas do Google configuradas em meu &lt;a href="http://www.apple.com/osx/"&gt;OS X El Capitan&lt;/a&gt;, a integração é bem legal
porque ao integrar uma conta do Google com o OS X ele já configura o Mail, o iMessage, o Calendar, o Notes e os Contatos
o que facilita bastante a minha vida.&lt;/p&gt;
&lt;p&gt;Mas ontem todas as contas do Google que eu tinha configurado aqui, ao mesmo tempo, passaram a solicitar novamente a
senha e sempre que eu tentava autenticar novamente o &lt;em&gt;Internet Accounts&lt;/em&gt; travava conforme a tela abaixo:&lt;/p&gt;</description></item><item><title>Palestra proferida na Faculdade Guairacá em Guarapuava/PR</title><link>https://adlermedrado.com.br/posts/palestra-proferida-na-faculdade-guairaca-em-guarapuava-pr/</link><pubDate>Sat, 31 Oct 2015 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/palestra-proferida-na-faculdade-guairaca-em-guarapuava-pr/</guid><description>&lt;p&gt;Demorei mas postei os slides aqui em meu site.&lt;/p&gt;
&lt;p&gt;No início de Outubro/2015 eu proferi uma palestra na &lt;a href="http://www.faculdadeguairaca.com.br"&gt;Faculdade Guairacá&lt;/a&gt; para os
alunos do curso de Sistemas de Informação.&lt;/p&gt;
&lt;p&gt;O objetivo da palestra era passar para eles um pouco da minha experiência na área e no mercado de trabalho, eu tentei
passar algumas dicas e espero que elas possam ajuda-los em suas carreiras.&lt;/p&gt;
&lt;p&gt;Caso haja interesse, os slides podem ser encontrados
no &lt;a href="http://www.slideshare.net/adlermedrado/mercado-de-trabalho-54596521"&gt;Slideshare&lt;/a&gt; ou
na &lt;a href="http://blog.adlermedrado.com.br/palestras/"&gt;página de Palestras aqui em meu site&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Linguagens baseadas na JVM</title><link>https://adlermedrado.com.br/posts/linguagens-baseadas-na-jvm/</link><pubDate>Sun, 11 Oct 2015 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/linguagens-baseadas-na-jvm/</guid><description>&lt;p&gt;Apesar de existirem muitas críticas à linguagem Java, é um fato que a JVM (Java Virtual Machine) é uma obra-prima.&lt;/p&gt;
&lt;p&gt;Muitas pessoas confundem a Java Virtual Machine com a linguagem Java e tratam tudo como se fosse uma coisa só, esse é o
tipo de ignorância que infelizmente é muito difundida por aí. Uma coisa é a linguagem Java ter suas deficiências (como
qualquer outra linguagem tem) e receber críticas por isso e outra coisa é a plataforma e ecossistema Java.&lt;/p&gt;</description></item><item><title>Reflexão diária</title><link>https://adlermedrado.com.br/posts/reflexao-diaria/</link><pubDate>Tue, 25 Aug 2015 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/reflexao-diaria/</guid><description>&lt;p&gt;Enquanto seu inimigo dorme quente em sua cama, você deve treinar o seu machado com muito esforço e dedicação, e quando
estiver frente a frente a ele, lembre-se das noites em que ele dormia aquecido e você treinava sozinho e ao relento.&lt;/p&gt;
&lt;p&gt;E quando finalmente o olhar nos olhos, lembre o quanto ele está atrasado diante de você na arte da guerra.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://adlermedrado.com.br/posts/images/1*C1hZGTwbJHrmYOjqrdzzGQ.jpeg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Guam Yu&lt;/p&gt;
&lt;p&gt;&lt;a href="http://imgur.com/gallery/D8YgBNl"&gt;&lt;em&gt;Imagem original&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Magento: Crash nos pacotes de produtos</title><link>https://adlermedrado.com.br/posts/magento-crash-nos-pacotes-de-produtos/</link><pubDate>Wed, 12 Aug 2015 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/magento-crash-nos-pacotes-de-produtos/</guid><description>&lt;p&gt;Esta é a primeira dica sobre &lt;a href="http://magento.com" title="Magento Official Website"&gt;Magento&lt;/a&gt; publicada por mim, acredito que
isso se tornará algo recorrente daqui para a frente.&lt;/p&gt;
&lt;p&gt;Recentemente eu tive problemas com um pacote de produtos que possui bastante produtos virtuais associados, sempre na
hora de incluir ou remover algum produto virtual do pacote, o Magento realizava todo o processo corretamente, no entanto
as mudanças não eram de fato aplicadas, mesmo com o Magento informando que sim, tudo tinha sido feito de acordo.&lt;/p&gt;</description></item><item><title>Atom e PHP: Em busca da configuração perfeita</title><link>https://adlermedrado.com.br/posts/atom-e-php-em-busca-da-configuracao-perfeita/</link><pubDate>Tue, 04 Aug 2015 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/atom-e-php-em-busca-da-configuracao-perfeita/</guid><description>&lt;p&gt;Como eu
disse &lt;a href="http://blog.adlermedrado.com.br/2015/07/31/migrando-para-o-atom.html" title="Migrando para o Atom"&gt;recentemente&lt;/a&gt;, eu
deixei de usar o Textmate, passei a usar o &lt;a href="https://atom.io"&gt;Atom&lt;/a&gt; e recomendei alguns &lt;em&gt;packages&lt;/em&gt; que eu estou usando e
estão me ajudando diariamente.&lt;/p&gt;
&lt;p&gt;Neste post eu quero mostrar mais alguns &lt;em&gt;packages&lt;/em&gt; bem úteis para desenvolvimento PHP:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;linter-phpmd&lt;/li&gt;
&lt;li&gt;linter-phpcs&lt;/li&gt;
&lt;li&gt;php-getters-setters&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Os dois primeiros para funcionar precisam que tanto o PHPMD (PHP Mess Detector) e o PHP_CodeSniffer esteja instalados
no ambiente e acessíveis por meio do PATH, ou seja, os comandos phpcs e phpmd devem ser acessíveis de qualquer local.&lt;/p&gt;</description></item><item><title>Migrando para o Atom</title><link>https://adlermedrado.com.br/posts/migrando-para-o-atom/</link><pubDate>Fri, 31 Jul 2015 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/migrando-para-o-atom/</guid><description>&lt;p&gt;Na primeira vez em que tive um Mac, um dos primeiros softwares que comprei foi o Textmate.&lt;/p&gt;
&lt;p&gt;Na época ele era o editor de textos predileto dos desenvolvedores e realmente ele era muito bom, tão bom que eu ainda
usava ele até o início desta semana, quando eu passei a ter alguns problemas principalmente com bundles dele como o de
ctags e quando eu busquei solução para eles eu percebi que muitos dos bundles que eu usava, hoje não possuem mais
suporte porque os autores deixaram de usar o Textmate.&lt;/p&gt;</description></item><item><title>Configurando um repositório privado usando Composer e Satis</title><link>https://adlermedrado.com.br/posts/configurando-um-repositorio-privado-usando-composer-e-satis/</link><pubDate>Sun, 21 Jun 2015 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/configurando-um-repositorio-privado-usando-composer-e-satis/</guid><description>&lt;p&gt;Recentemente eu precisei incluir um repositório do Git cujo acesso é privado em um projeto que estou trabalhando
na &lt;a href="http://coderockr.com"&gt;Coderockr&lt;/a&gt; e este repositório deveria ser importado no projeto por meio do composer, talvez
isso não seja novidade para você, mas, para mim é pelo fato de eu nunca ter precisado criar um ambiente acessível
pelo &lt;a href="https://getcomposer.org"&gt;composer&lt;/a&gt; que utilizasse um repositório git privado.&lt;/p&gt;
&lt;h4 id="como-faz"&gt;Como faz?&lt;/h4&gt;
&lt;p&gt;Após algumas pesquisas eu encontrei o projeto &lt;a href="https://github.com/composer/satis"&gt;Satis&lt;/a&gt;, que pelo que pude compreender
é mantido pelos mesmos desenvolvedores que mantém o composer.&lt;/p&gt;</description></item><item><title>Liberdade</title><link>https://adlermedrado.com.br/posts/liberdade/</link><pubDate>Sat, 13 Jun 2015 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/liberdade/</guid><description>&lt;p&gt;Eu estava refletindo hoje:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tiraram nosso direito de portar armas e dificultam ao extremo o direito de obte-las.&lt;/li&gt;
&lt;li&gt;Inventaram a tal lei da palmada.&lt;/li&gt;
&lt;li&gt;A patrulha dos politicamente corretos impera.&lt;/li&gt;
&lt;li&gt;Agora querem nos tirar o direito de portar facas.&lt;/li&gt;
&lt;li&gt;Querem impor quais tipos de alimentos nós podemos comer.&lt;/li&gt;
&lt;li&gt;Limitam o período em que podemos sacar dinheiro em caixas eletrônicos.&lt;/li&gt;
&lt;li&gt;Querem impor a vacinação (por exemplo, a de HPV em crianças).&lt;/li&gt;
&lt;li&gt;Proibições ridículas como a de vender somente álcool em gel, ou ao menos dificultar a venda de álcool que não seja
gel.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;É, meus amigos e amigas, nossa liberdade está cada vez mais comprometida, tudo em nome da “nossa segurança”.&lt;/p&gt;</description></item><item><title>Dica: Solução de problema ao configurar Kitematic/Docker</title><link>https://adlermedrado.com.br/posts/dica-solucao-de-problema-ao-configurar-kitematic-docker/</link><pubDate>Wed, 03 Jun 2015 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/dica-solucao-de-problema-ao-configurar-kitematic-docker/</guid><description>&lt;p&gt;&lt;strong&gt;Este é o tipo de post que eu escrevo para servir de referência futura mas que também pode acabar ajudando outras
pessoas.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Um projeto que estou trabalhando usa o &lt;a href="https://www.rabbitmq.com"&gt;RabbitMQ&lt;/a&gt; e para tentar manter o meu OS X o mais
higienizado possível e também para manter a uniformidade entre o meu ambiente e os demais envolvidos no projeto, nós
decidimos utilizar o &lt;a href="https://www.docker.com/"&gt;Docker&lt;/a&gt; e um container do RabbitMQ.&lt;/p&gt;
&lt;p&gt;Para facilitar, existe um projeto chamado &lt;a href="https://kitematic.com/"&gt;Kitematic&lt;/a&gt; que auxilia na configuração do Docker e na
instalação de containers, entretanto, o Kitematic está em versão beta ainda e por isso ele possui algumas arestas que
precisam ser aparadas, mas no geral ele funciona bem.&lt;/p&gt;</description></item><item><title>Segurança ou sensação de segurança?</title><link>https://adlermedrado.com.br/posts/seguranca-ou-sensacao-de-seguranca/</link><pubDate>Wed, 03 Jun 2015 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/seguranca-ou-sensacao-de-seguranca/</guid><description>&lt;p&gt;Hoje eu contratei o serviço de uma empresa que disponibiliza um vigilante para circular de moto ou carro (depende do
frio) durante a noite, todos os dias da semana para &lt;em&gt;ficar de olho&lt;/em&gt; em relação a suspeitos na vizinhança, auxiliar e
verificar se está tudo tranquilo ao sair de casa ou chegar com carro a noite, etc., principalmente porque eu sempre
viajo pra visitar meus sogros, mãe e irmãs que não moram na mesma cidade que eu e isso me deixa com uma sensação melhor
ao deixar minha casa sozinha.&lt;/p&gt;</description></item><item><title>Música para trabalhar em um domingo preguiçoso</title><link>https://adlermedrado.com.br/posts/musica-para-trabalhar-em-um-domingo-preguicoso/</link><pubDate>Sun, 31 May 2015 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/musica-para-trabalhar-em-um-domingo-preguicoso/</guid><description>&lt;p&gt;Hoje o dia está bastante preguiçoso, frio, nublado além de ser domingo e domingo ser um dia preguiçoso por si só, mas,
eu preciso trabalhar e por isso nesses casos eu costumo escutar alguma música que me mantenha acordado e hoje resolvi
compartilhar a música que estou escutando e surtiu algum efeito:&lt;/p&gt;</description></item><item><title>De volta ao mundo Apple</title><link>https://adlermedrado.com.br/posts/de-volta-ao-mundo-apple/</link><pubDate>Fri, 22 May 2015 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/de-volta-ao-mundo-apple/</guid><description>&lt;p&gt;Apesar de ter dito diversas vezes: &lt;strong&gt;Apple nunca mais&lt;/strong&gt;, dois meses atrás eu voltei a usar um Mac. Até então eu tinha
decidido me desfazer de todos os dispositivos Apple que eu tinha (dei meu Macbook Pro e meu iPod para minha esposa) e
buscado outras alternativas como Android, Linux e Windows.&lt;br&gt;
Eu me saí muito bem durante este período, principalmente com a plataforma Windows, como pode ser
visto no entanto durante este período o trabalho que eu realizava era em sua maior parte realizada na plataforma da
Microsoft, então eu não sentia tantas dificuldades de adaptação &lt;a href="https://leanpub.com/devphpms"&gt;&lt;em&gt;eu até comecei a escrever um livro sobre isso e espero
termina-lo em breve&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Informação importante</title><link>https://adlermedrado.com.br/posts/informacao-importante/</link><pubDate>Fri, 27 Feb 2015 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/informacao-importante/</guid><description>&lt;p&gt;Informo a quem interessar possa que a partir do dia &lt;strong&gt;&lt;em&gt;28/02/2015&lt;/em&gt;&lt;/strong&gt; nenhum indivíduo, empresa ou qualquer outro tipo de
instituição está autorizado(a) a utilizar minhas certificações em concorrências, licitações ou fazer qualquer outro uso
delas &lt;strong&gt;&lt;em&gt;salvo autorização minha por escrito e registrada em cartório&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Sugestões para o carnaval</title><link>https://adlermedrado.com.br/posts/sugestoes-para-o-carnaval/</link><pubDate>Mon, 16 Feb 2015 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/sugestoes-para-o-carnaval/</guid><description>&lt;p&gt;Se você não vai passar o carnaval se embriagando, rebolando, copulando com a maior quantidade possível de vagabundas(ou
vagabundos), agindo como se fosse um animal treinado correndo atrás de um trio elétrico ou qualquer coisa do gênero e
quer relaxar ou estudar, deixo as seguintes dicas para vocês:&lt;/p&gt;
&lt;h3 id="assista-ao-filme-algorithm-the-hackermovie"&gt;Assista ao filme ALGORITHM: The Hacker Movie&lt;/h3&gt;
&lt;p&gt;É um filme independente e está disponibilizado oficialmente no Youtube com legendas em PT_BR que o Crash
do &lt;a href="http://www.area31.net.br"&gt;Área 31 Hackerspace fez&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Introdução a Criptografia — Parte 3</title><link>https://adlermedrado.com.br/posts/introducao-a-criptografia-parte-3/</link><pubDate>Tue, 06 Jan 2015 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/introducao-a-criptografia-parte-3/</guid><description>&lt;p&gt;Continuando com a série de artigos introdutórios à criptografia, vou agora mostrar como instalar o GnuPG na plataforma
Windows, Gnu/Linux e Darwin (Mac OS X).&lt;/p&gt;
&lt;p&gt;Apesar de cada plataforma possuir ferramentas gráficas para a gestão das chaves, não é fácil manter uma uniformidade
neste processo, então eu mostrarei como fazer esta gestão utilizando o cliente de e-mail pois assim haverá uniformidade
independente da plataforma utilizada por você, leitor.&lt;br&gt;
É possível também gerenciar estas chaves através da linha de comando, no entanto meu objetivo aqui é facilitar e não
complicar e eu presumo também que se você, caro leitor, possui as habilidades necessárias para usar a linha de comando
em seu dia-a-dia, você não sentirá dificuldades em buscar essas informações nas &lt;em&gt;man pages&lt;/em&gt; ou similares.&lt;/p&gt;</description></item><item><title>Feliz 2015</title><link>https://adlermedrado.com.br/posts/feliz-2015/</link><pubDate>Wed, 31 Dec 2014 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/feliz-2015/</guid><description>&lt;p&gt;É praticamente impossível chegar nesta época do ano sem refletir nas coisas que aconteceram durante o ano vigente.&lt;/p&gt;
&lt;p&gt;Comparando os anos de 2013 e 2014, eu posso dizer que 2014 foi melhor pois foi um pouco menos turbulento, posso afirmar
que ele está chegando ao fim com o saldo positivo e dentre tudo que aconteceu eu posso enumerar as seguintes como muito
positivas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://adlermedrado.com.br/posts/minha-vida-apos-a-cirurgia-novas-perspectivas"&gt;Fiz uma cirurgia que mudou a minha vida;&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Mudei de cidade (Francisco Beltrão para Guarapuava);&lt;/li&gt;
&lt;li&gt;Depois de quase 3 anos trabalhando em home-office, voltei a trabalhar na modalidade presencial (post em breve para
explicar o lado positivo disso);&lt;/li&gt;
&lt;li&gt;Atualizei meus conhecimentos em C# e Powershell;&lt;/li&gt;
&lt;li&gt;Comecei a praticar exercícios;&lt;/li&gt;
&lt;li&gt;Conheci bastante pessoas;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Existem outros pontos mas estes são os que considero mais positivos e enumerar apenas estes é suficiente para acreditar
que apesar de ter consciência de que 2015 será um ano difícil, com trabalho e dedicação eu tenho certeza que é possível
deixar o saldo dele no positivo também, se D-us quiser.&lt;/p&gt;</description></item><item><title>Introdução a Criptografia — Parte 2</title><link>https://adlermedrado.com.br/posts/introducao-a-criptografia-parte-2/</link><pubDate>Mon, 29 Dec 2014 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/introducao-a-criptografia-parte-2/</guid><description>&lt;p&gt;Como eu havia prometido, continuo com a série de posts sobre criptografia, se você chegou aqui sem ter visto a parte 1,
sugiro que comece lendo por &lt;a href="http://blog.adlermedrado.com.br/2014/12/introducao-a-criptografia-parte-1/"&gt;aqui&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="introdução"&gt;Introdução&lt;/h3&gt;
&lt;p&gt;Atualmente as duas formas mais comuns de criptografia são a &lt;strong&gt;simétrica&lt;/strong&gt; e&lt;br&gt;
a &lt;strong&gt;assimétrica&lt;/strong&gt;, fique tranquilo pois apesar dos nomes intimidarem são dois&lt;br&gt;
conceitos bem simples de serem compreendidos.&lt;/p&gt;
&lt;h3 id="criptografia-simétrica"&gt;Criptografia Simétrica&lt;/h3&gt;
&lt;p&gt;A criptografia é feita usando a mesma chave para criptografar e descriptografar a informação, similar ao que foi
mostrado na primeira parte deste tutorial.&lt;/p&gt;</description></item><item><title>Introdução a Criptografia — Parte 1</title><link>https://adlermedrado.com.br/posts/introducao-a-criptografia-parte-1/</link><pubDate>Sun, 28 Dec 2014 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/introducao-a-criptografia-parte-1/</guid><description>&lt;p&gt;Eu gosto muito de chuva —&lt;em&gt;apenas quando estou tranquila e confortavelmente em casa&lt;/em&gt;— e agora no momento em que escrevo
este, está caindo uma chuva muito boa aqui em &lt;a href="http://pt.wikipedia.org/wiki/Guarapuava"&gt;Guarapuava/PR&lt;/a&gt;, além disso está
ventando bastante a ponto das janelas da minha casa ficarem vibrando, isso é muito bom para relaxar…&lt;/p&gt;
&lt;p&gt;Eu não sei porque escrevi isso, mas tudo bem, agora vamos ao que interessa.&lt;/p&gt;
&lt;h3 id="introdução"&gt;Introdução&lt;/h3&gt;
&lt;p&gt;O objetivo deste post é tentar mostrar o conceito básico de criptografia de uma maneira bem simples para que todos
possam entender, pois o que eu desejo é que &lt;em&gt;usuários comuns&lt;/em&gt; aka não-técnicos, saibam o que é criptografia e como fazer
uso dela em seu dia-a-dia.&lt;/p&gt;</description></item><item><title>Meu ambiente de trabalho na plataforma Windows</title><link>https://adlermedrado.com.br/posts/meu-ambiente-de-trabalho-na-plataforma-windows/</link><pubDate>Tue, 23 Dec 2014 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/meu-ambiente-de-trabalho-na-plataforma-windows/</guid><description>&lt;p&gt;A cerca de um ano e alguns meses eu tenho usado a plataforma Microsoft Windows de uma forma sistemática e eu achei interessante escrever um pouco sobre o que eu costumo usar em meu computador.&lt;/p&gt;
&lt;h4 id="multimídia"&gt;Multimídia&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Eu faço uso recorrente do player desktop do &lt;a href="http://rdio.com"&gt;Rdio&lt;/a&gt; para ouvir música em streaming. Este é um serviço que vale muito a pena e apesar de ver bastante gente migrando para o Spotify eu estou feliz com o Rdio pois ele me atende bem;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.videolan.org/vlc/"&gt;VLC&lt;/a&gt; — Player de vídeo open-source com suporte à maioria dos formatos disponíveis no mercado;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://gpodder.org/"&gt;gPodder&lt;/a&gt; — Gerenciador de podcasts. Ele é bem simples de usar e promete fazer sincronização dos podcasts com dispositivos móveis, no meu caso nunca funcionou com o Android, mas eu não ligo porque faço a sincronização manualmente mesmo. No geral é um software simples que em geral faz o que se propõe a fazer;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="gerenciamento-de-pacotes"&gt;Gerenciamento de Pacotes&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://chocolatey.org/"&gt;Chocolatey&lt;/a&gt; - Tenta fazer em ambiente Windows o que o APT, Zypper, Yum, etc., fazem em ambiente Linux. No geral ele é bom, hoje em dia não me vejo usando o Windows sem ele. &lt;a href="http://blog.adlermedrado.com.br/2014/08/gerenciador-de-pacotes-para-windows/"&gt;Eu escrevi um post sobre ele algum tempo atrás&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="emulador-de-terminal"&gt;Emulador de terminal&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://bliker.github.io/cmder/"&gt;Cmder&lt;/a&gt; — Até o momento o melhor emulador de terminal para Windows que eu já vi. Baixando o pacote completo ele já vem com Git e outras ferramentas úteis de ambientes &lt;em&gt;nix&lt;/em&gt; que o tornam além de uma opção mais atraente ao Prompt do DOS_ e ao &lt;em&gt;Powershell&lt;/em&gt; em uma ferramenta poderosa. Se você gosta de usar o terminal e está usando o Windows, o Cmder é para você;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="client-de-e-mail"&gt;Client de e-mail&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://postbox-inc.com/"&gt;Postbox&lt;/a&gt; — Simplesmente o melhor cliente de e-mail do universo. É baseado no Mozilla Thunderbird, ou seja, é o Thunderbird funcionando direito. É pago mas não é caro, custa cerca de U$10 e vale cada centavo, além de suportar a grande maioria dos plugins para o Thunderbird, alguns foram otimizados para funcionar com ele como o Enigmail, sem falar na variedade de funcionalidades &lt;em&gt;out of the box&lt;/em&gt; que ele possui;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="editores-de-texto-e-suíte-de-escritório"&gt;Editores de texto e suíte de escritório&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://atom.io/"&gt;Atom&lt;/a&gt; — Eu tenho usado o Atom em meu dia-a-dia e estou gostando &lt;strong&gt;mesmo ele sendo meio pesadinho&lt;/strong&gt;, mas como ele está numa fase beta e no geral ele tem me atendido eu estou insistindo. Quando ele sair da fase beta ele será uma ferramenta paga e eu estou considerando a hipótese de pagar por ela dependendo do preço;&lt;/p&gt;</description></item><item><title>Dica: Criptografia de informações importantes</title><link>https://adlermedrado.com.br/posts/dica-criptografia-de-informacoes-importantes/</link><pubDate>Mon, 22 Dec 2014 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/dica-criptografia-de-informacoes-importantes/</guid><description>&lt;p&gt;Imagine a seguinte situação: Quando você sai da sua casa você tranca as janelas, as portas e o portão, entretanto você
possui um cofre para garantir que itens valiosos como documentos, dinheiro, jóias, etc. fiquem seguros, pois você sabe
que para abri-lo é necessário uma chave que somente você tem e um código que somente você sabe.&lt;/p&gt;
&lt;p&gt;Você sabe que o cofre não garante 100% de segurança contra arrombamentos mas tem consciência que ele dará muito mais
trabalho para quem quiser roubar suas coisas.&lt;/p&gt;</description></item><item><title>Por que é importante criptografar seus dados e o que pode ser aprendido com o caso Sony</title><link>https://adlermedrado.com.br/posts/por-que-e-importante-criptografar-seus-dados-e-o-que-pode-ser-aprendido-com-o-caso-sony/</link><pubDate>Sun, 21 Dec 2014 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/por-que-e-importante-criptografar-seus-dados-e-o-que-pode-ser-aprendido-com-o-caso-sony/</guid><description>&lt;p&gt;Se você não estava em uma caverna, provavelmente assistiu, leu ou ouviu sobre o caso de cracking e vazamento de dados da
Sony Pictures Entertainment, onde um grupo de crackers (provavelmente norte-coreanos) invadiram os computadores dela e
obtiveram dados sigilosos como informações a respeito de futuros lançamentos e conversas via e-mail de executivos da
empresa.&lt;/p&gt;
&lt;p&gt;Basicamente, estes criminosos estão ameaçando a empresa dizendo que vazarão dados sigilosos dela ao mundo caso suas
demandas não sejam atendidas, além de tornar públicas informações como os salários de executivos da empresa, números do
seguro social de funcionários da empresa, incluindo celebridades.&lt;/p&gt;</description></item><item><title>Gerenciador de pacotes para Windows</title><link>https://adlermedrado.com.br/posts/gerenciador-de-pacotes-para-windows/</link><pubDate>Sun, 24 Aug 2014 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/gerenciador-de-pacotes-para-windows/</guid><description>&lt;p&gt;Não é segredo que nos últimos meses eu tenho usado &lt;a href="http://windows.microsoft.com/pt-br/windows/home"&gt;Windows&lt;/a&gt; como a
minha principal plataforma de trabalho, apesar de lidar com servidores linux diariamente e também usar VMs linux como
ambiente de trabalho em alguns projetos.&lt;/p&gt;
&lt;p&gt;Como estou acostumado a trabalhar com diversas ferramentas comuns em ambientes &lt;em&gt;nix&lt;/em&gt; eu sempre busco por alternativas
similares para a plataforma Windows e hoje eu irei demonstrar rapidamente o &lt;a href="https://chocolatey.org/"&gt;chocolatey&lt;/a&gt;, que é
um gerenciador de pacotes similar ao apt-get no linux, só que para windows.&lt;/p&gt;</description></item><item><title>Acessando o Office 365 via Powershell</title><link>https://adlermedrado.com.br/posts/acessando-o-office-365-via-powershell/</link><pubDate>Sat, 26 Jul 2014 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/acessando-o-office-365-via-powershell/</guid><description>&lt;p&gt;É muito fácil acessar sua conta do &lt;a href="http://office.microsoft.com/en-us/"&gt;Office365&lt;/a&gt;
usando &lt;a href="http://technet.microsoft.com/pt-br/library/bb978526.aspx"&gt;Powershell&lt;/a&gt;,&lt;br&gt;
principalmente se você precisa otimizar a administração de contas corporativas&lt;br&gt;
via script em situações onde é necessário manipular muitos usuários simultaneamente.&lt;/p&gt;
&lt;p&gt;Alguns exemplos de tarefas que podem ser executadas são:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Adicionar novos usuários&lt;/li&gt;
&lt;li&gt;Remover usuários&lt;/li&gt;
&lt;li&gt;Mudar permissões&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;
No texto a seguir eu demonstrarei de uma forma bem simples como se conectar a uma conta na nuvem do Office365.&lt;/p&gt;</description></item><item><title>Como subverter uma nação. Por Yuri Bezmenov</title><link>https://adlermedrado.com.br/posts/como-subverter-uma-nacao-por-yuri-bezmenov/</link><pubDate>Sat, 21 Jun 2014 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/como-subverter-uma-nacao-por-yuri-bezmenov/</guid><description>&lt;p&gt;&lt;a href="http://pt.wikipedia.org/wiki/Yuri_Bezmenov"&gt;Yuri Bezmenov&lt;/a&gt; foi um jornalista russo que trabalhou
na &lt;a href="http://en.ria.ru/"&gt;Ria Novosti&lt;/a&gt; e atuava como agente da &lt;a href="http://pt.wikipedia.org/wiki/KGB"&gt;KGB&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Atuando pela KGB ele era ativo na área de subversão e após alguns anos trabalhando nesta área ele manifestou
descontentamento com a política soviética e então decidiu desertar para o ocidente, conseguindo asilo no Canadá.&lt;/p&gt;
&lt;p&gt;Ele escreveu livros e proferiu palestras que explicava as táticas usadas pela KGB afim de subverter as nações ocidentais
e mostrava que ela não era apenas uma agência de espionagem, muito pelo contrário, pois apenas entre 10% a 15% dos
recursos da KGB eram usados com este tipo de atividade.&lt;/p&gt;</description></item><item><title>Configurando o Ruby no Windows</title><link>https://adlermedrado.com.br/posts/configurando-o-ruby-no-windows/</link><pubDate>Mon, 16 Jun 2014 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/configurando-o-ruby-no-windows/</guid><description>&lt;p&gt;Recentemente eu instalei o Windows no meu PC e como eu uso o &lt;a href="http://octopress.org/"&gt;octopress&lt;/a&gt; para gerir este blog, eu
estava usando uma VM com linux como ‘plataforma de blogging’.&lt;/p&gt;
&lt;p&gt;No entanto eu acho que não faz muito sentido manter uma máquina virtual só para isso, então eu instalei o ambiente Ruby
no windows para usar o octopress.&lt;/p&gt;
&lt;p&gt;Como eu sempre usei ruby com Mac OS X ou Linux e não tinha experiência com a configuração do ambiente Ruby na plataforma
da Microsoft, eu apanhei um pouco para configurar, mas deu certo e os passos que eu executei estão listados abaixo:&lt;/p&gt;</description></item><item><title>Minha vida após a cirurgia: Novas perspectivas</title><link>https://adlermedrado.com.br/posts/minha-vida-apos-a-cirurgia-novas-perspectivas/</link><pubDate>Sun, 11 May 2014 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/minha-vida-apos-a-cirurgia-novas-perspectivas/</guid><description>&lt;p&gt;Hoje fazem 2 meses e dois dias que eu fiz a gastrectomia vertical, também conhecida como &lt;em&gt;sleeve gástrico&lt;/em&gt; que é a
retirada de uma parte do estômago.&lt;/p&gt;
&lt;p&gt;Muitos generalizam chamando qualquer cirurgia do gênero apenas como cirurgia bariátrica ou a mais popular “cirurgia de
redução do estômago”.&lt;/p&gt;
&lt;p&gt;Eu nunca fui muito a favor deste tipo de cirurgia, mesmo estando em uma situação de obesidade mórbida grave eu nunca
considerei a cirurgia como uma opção, pois, eu dizia que não me mutilaria para fins estéticos.&lt;/p&gt;</description></item><item><title>A Segurança Das Urnas Eletrônicas</title><link>https://adlermedrado.com.br/posts/a-seguranca-das-urnas-eletronicas/</link><pubDate>Fri, 02 May 2014 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/a-seguranca-das-urnas-eletronicas/</guid><description>&lt;p&gt;Quem me conhece sabe que eu sempre desconfiei da segurança das urnas&lt;br&gt;
eletrônicas brasileiras, um dos fatores que me levam a ter essa postura&lt;br&gt;
é devido ao fato de o código das urnas ser fechado e não passar por&lt;br&gt;
auditorias externas.&lt;/p&gt;
&lt;p&gt;Outro motivo é que aqui no Brasil nada que o governo coloca as mãos&lt;br&gt;
funciona direito, vide a saúde, educação, segurança, etc., então é de&lt;br&gt;
se desconfiar que a única coisa que funciona bem seja a urna eletrônica,&lt;br&gt;
algo tão vital para a manutenção da democracia.&lt;/p&gt;</description></item><item><title>Flisol Francisco Beltrão 2014</title><link>https://adlermedrado.com.br/posts/flisol-francisco-beltrao-2014/</link><pubDate>Fri, 25 Apr 2014 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/flisol-francisco-beltrao-2014/</guid><description>&lt;p&gt;Amanhã eu irei proferir uma palestra sobre ReactPHP no Flisol de Francisco Beltrão.&lt;/p&gt;
&lt;p&gt;Se puder, prestigie o evento.&lt;/p&gt;</description></item><item><title>OFF-TOPIC — O desarmamento e suas falácias</title><link>https://adlermedrado.com.br/posts/off-topic-o-desarmamento-e-suas-falacias/</link><pubDate>Mon, 24 Feb 2014 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/off-topic-o-desarmamento-e-suas-falacias/</guid><description>&lt;p&gt;Ontem no &lt;a href="http://www.jornaldebeltrao.com.br"&gt;Jornal de Beltrão&lt;/a&gt; teve uma reportagem sobre os bandidos estarem invadindo
casas e tal. Nesta reportagem um quadro informava sobre armas e na reportagem havia um trecho com a opinião de um
delegado.&lt;/p&gt;
&lt;p&gt;Eu acho uma vergonha um delegado prestar um serviço de desinformação num jornal dizendo que “O cidadão que compra uma
arma pode estar armando um bandido” e em seguida dizer que o cidadão “precisa tomar cuidados como reforçar a segurança
de portas, janelas e evitar deixar bens à mostra”.&lt;/p&gt;</description></item><item><title>O fim do GetOnCode();</title><link>https://adlermedrado.com.br/posts/o-fim-do-getoncode/</link><pubDate>Wed, 19 Feb 2014 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/o-fim-do-getoncode/</guid><description>&lt;p&gt;Em 2011 eu iniciei um projeto chamado Get On Code, a idéia inicial era a de publicar notícias, artigos, etc., relacionados a desenvolvimento, bem como produzir um podcast que falasse sobre o assunto.&lt;/p&gt;
&lt;p&gt;A idéia começou bem, com uma boa resposta dos visitantes do site e ouvintes do podcast, no entanto, com o passar do tempo eu passei a ter menos disponibilidade para continuar com o projeto e passei por diversas situações na minha vida que me atrapalharam a me dedicar a ele.&lt;/p&gt;</description></item><item><title>Para refletir</title><link>https://adlermedrado.com.br/posts/para-refletir/</link><pubDate>Wed, 29 Jan 2014 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/para-refletir/</guid><description>&lt;p&gt;Hoje eu recebi por e-mail a seguinte foto, eu creio que ela fala por ela mesma, não é?&lt;/p&gt;
&lt;p&gt;Após observa-la por algum tempo, eu pude perceber que nossa sociedade não vive diferente dos animais retratados na
imagem:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nós pensamos que somos livres, mas não somos.&lt;/li&gt;
&lt;li&gt;Nós pensamos que temos o direito de escolher o que é melhor para nós, mas não temos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;O que nós temos é a ilusão de que somos livres, mas, na verdade o que nós somos mesmo é escravos, prisioneiros do
sistema.&lt;/p&gt;</description></item><item><title>Quer ser um bom programador? Dica #2</title><link>https://adlermedrado.com.br/posts/quer-ser-um-bom-programador-dica-2/</link><pubDate>Wed, 22 Jan 2014 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/quer-ser-um-bom-programador-dica-2/</guid><description>&lt;p&gt;Este é o segundo de uma série de posts com dicas para se tornar um bom programador.&lt;/p&gt;
&lt;p&gt;O primeiro post da série encontra-se &lt;a href="http://blog.adlermedrado.com.br/2014/01/quer-ser-um-bom-programador-dica-1"&gt;aqui&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="dica-2-mantenha-o-hábito-de-continuar-sempre-aprendendo"&gt;Dica #2: Mantenha o hábito de continuar sempre aprendendo.&lt;/h3&gt;
&lt;p&gt;Conhecimento nunca é demais, principalmente com programação onde novas tecnologias despontam quase que diariamente, por
isso, é importante deixar de lado qualquer ideologia, fanatismo -Muitas vezes até parecido com fanatismo religioso- e
estudar coisas novas, mesmo porque estudando uma linguagem diferente daquela usada diariamente pode dar idéias de como
resolver melhor certos problemas do dia-a-dia.&lt;/p&gt;</description></item><item><title>Quer ser um bom programador? Dica #1</title><link>https://adlermedrado.com.br/posts/quer-ser-um-bom-programador-dica-1/</link><pubDate>Fri, 17 Jan 2014 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/quer-ser-um-bom-programador-dica-1/</guid><description>&lt;p&gt;Uma das primeiras dicas que dou quando alguém me pergunta o que é necessário para ser um bom programador, será também a
primeira de uma série de posts que farei a respeito deste assunto.&lt;/p&gt;
&lt;h3 id="dica-1-conheça-a-plataforma-que-você-usa-para-trabalhar"&gt;Dica #1: Conheça a plataforma que você usa para trabalhar.&lt;/h3&gt;
&lt;p&gt;Para ilustrar a minha idéia, usarei como exemplo
a &lt;a href="http://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o"&gt;linguagem&lt;/a&gt; &lt;a href="http://www.php.net"&gt;PHP&lt;/a&gt;, mas a dica
pode ser considerada para qualquer ou pelo menos a maioria das linguagens.&lt;/p&gt;
&lt;p&gt;Independente de qual linguagem você usa, procure entender como a plataforma necessária para que ela &lt;em&gt;rode&lt;/em&gt; funciona e
faça isso antes de usar instaladores que facilitem esta tarefa, como por
exemplo: &lt;a href="http://www.zend.com/en/products/server/"&gt;Zend Server&lt;/a&gt;, &lt;a href="http://www.apachefriends.org/en/xampp.html"&gt;Xampp&lt;/a&gt;, &lt;a href="http://www.wampserver.com/"&gt;Wampserver&lt;/a&gt;, &lt;a href="http://www.mamp.info/en/index.html"&gt;Mamp&lt;/a&gt;,
etc.&lt;/p&gt;</description></item><item><title>Não execute comandos a esmo. Escreva-os.</title><link>https://adlermedrado.com.br/posts/nao-execute-comandos-a-esmo-escreva-os/</link><pubDate>Fri, 03 Jan 2014 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/nao-execute-comandos-a-esmo-escreva-os/</guid><description>&lt;p&gt;&lt;strong&gt;Eu sempre fui um cara afobado,&lt;/strong&gt; então sempre quando precisava executar um comando em um servidor por exemplo, eu
simplesmente o executava e se alguns dias, semanas ou meses depois eu precisasse executa-lo novamente eu me pegava
tentando me lembrar como que tinha feito da outra vez.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Quem nunca passou por isso?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Então já tem algum tempo, eu adotei o seguinte lema:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Não simplesmente execute comandos. Escreva-os.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Isso mesmo: Sempre que preciso executar um comando SQL, independente de qual seja, um comando bash em um servidor ou até
mesmo comandos repetitivos de backup entre outros, eu o escrevo antes, guardo o script, comando, etc., em um local
apropriado e somente então eu o executo e se eu precisar executar um comando desses novamente, basta encontrar o
documento onde eu o anotei e então executa-lo novamente.&lt;/p&gt;</description></item><item><title>Happy New Year</title><link>https://adlermedrado.com.br/posts/happy-new-year/</link><pubDate>Tue, 31 Dec 2013 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/happy-new-year/</guid><description>&lt;p&gt;Happy New Year, folks.&lt;/p&gt;</description></item><item><title>Porque o coitadismo é tão difundido no Brasil?</title><link>https://adlermedrado.com.br/posts/porque-o-coitadismo-e-tao-difundido-no-brasil/</link><pubDate>Mon, 16 Dec 2013 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/porque-o-coitadismo-e-tao-difundido-no-brasil/</guid><description>&lt;p&gt;Uma das coisas que eu abomino é a cultura do coitadismo que, infelizmente, está enraizado no DNA do brasileiro.&lt;/p&gt;
&lt;p&gt;Eu não sei o motivo desse comportamento, mas o que eu observo é que aparentemente as pessoas estão cada vez mais
buscando encontrar um papel de vítima no qual ele possa se encaixar. O motivo? Não sei, talvez por nossa sociedade ser
hipócrita o suficiente para valorizar quem não se esforça, quem não faz por merecer em detrimento daqueles que se
esforçam para ser ou conseguir alguma coisa.&lt;/p&gt;</description></item><item><title>Mais um pouco sobre privacidade</title><link>https://adlermedrado.com.br/posts/mais-um-pouco-sobre-privacidade/</link><pubDate>Sat, 14 Dec 2013 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/mais-um-pouco-sobre-privacidade/</guid><description>&lt;p&gt;Eu resolvi escrever este post depois de ficar pensando neste assunto por um tempo, então se você não se importa muito
com a proteção da privacidade e/ou acha que quem se preocupa com isso é teórico da conspiração, pirado, louco ou
qualquer coisa do gênero, fique com essa foto desse gatinho com uma cara engraçada, assim a vinda até este post não foi
em vão.&lt;/p&gt;
&lt;h4 id="mas-se-você-quiser-ler-um-resumo-sobre-o-que-penso-a-respeito-deste-assunto-é-só-continuar-a-leitura"&gt;Mas se você quiser ler um resumo sobre o que penso a respeito deste assunto, é só continuar a leitura.&lt;/h4&gt;
&lt;p&gt;Nós estamos vivendo na era da informação, sendo assim quem possui o domínio sobre a informação possui o poder. Não é a
toa que os governos estão tentando de uma forma ou de outra tomar o controle de tudo que trafega na internet para
censurar e vigiar seus cidadãos.&lt;/p&gt;</description></item><item><title>Web Analytics e Privacidade</title><link>https://adlermedrado.com.br/posts/web-analytics-e-privacidade/</link><pubDate>Mon, 23 Sep 2013 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/web-analytics-e-privacidade/</guid><description>&lt;h4 id="intro"&gt;Intro&lt;/h4&gt;
&lt;p&gt;Recentemente, eu publiquei um post a respeito do meu novo blog, aproveitando o embalo eu estou tentando torna-lo o mais
transparente possível para aqueles que o visitam, então a primeira iniciativa foi **descartar o uso do Google Analytics
**.&lt;/p&gt;
&lt;h4 id="rastreamento"&gt;Rastreamento&lt;/h4&gt;
&lt;p&gt;Há muito tempo, bem antes desse burburinho todo por causa da NSA que eu me preocupo com a minha privacidade na web, eu
acho que comecei a me preocupar e a me interessar por esse tipo de assunto por volta de 1998 ou 1999 quando lia sobre
echelon. Apesar de ser praticamente impossível possuir a tal da privacidade, principalmente usando Google, Facebook,
Twitter, Linkedin entre outros, não custa nada tentar diminuir um pouco o acesso às nossas informações.&lt;/p&gt;</description></item><item><title>Novo blog</title><link>https://adlermedrado.com.br/posts/novo-blog/</link><pubDate>Fri, 20 Sep 2013 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/posts/novo-blog/</guid><description>&lt;h4 id="olá-bem-vindo-ao-meu-novo-blog"&gt;Olá, bem vindo ao meu novo blog.&lt;/h4&gt;
&lt;p&gt;Eu estou abandonando o meu projeto &lt;a href="http://adlermedrado.com.br/2012/05/apresento-o-dangolino.html"&gt;dangolino&lt;/a&gt;, a partir
desse post o meu blog voltará a ser baseado no bom e velho wordpress e tentarei enumerar os motivos logo abaixo:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Falta de tempo&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Quando eu iniciei o projeto do dangolino, eu tinha tempo disponível e queria trabalhar em algo que pudesse usar no meu
dia-a-dia, objetivo este que foi atendido, pois o dangolino me serviu por mais de um ano, sem problemas e sem precisar
adicionar funcionalidade alguma a ele neste período. O projeto é estável.&lt;/p&gt;</description></item><item><title>Quase um ano de Dangolino sem precisar alterar uma linha de código</title><link>https://adlermedrado.com.br/posts/quase-um-ano-de-dangolino-sem-precisar-alterar-uma-linha-de-codigo/</link><pubDate>Fri, 15 Mar 2013 00:09:13 -0300</pubDate><guid>https://adlermedrado.com.br/posts/quase-um-ano-de-dangolino-sem-precisar-alterar-uma-linha-de-codigo/</guid><description>&lt;p&gt;Já faz algum tempo que eu postei aqui que eu estava usando o picasaweb para publicar as imagens no meu blog usando o
dangolino, mas, recentemente eu pensei melhor e decidi que quero manter as imagens no meu próprio servidor.&lt;/p&gt;
&lt;p&gt;Os motivos são vários, mas o principal é que quero manter a integridade do meu conteúdo em único local, neste caso o meu
servidor, simplesmente pela facilidade que tenho de fazer backup dele, que é muito mais fácil para mim do que manter um
backup de serviços como o picasaweb ou o flickr por exemplo.&lt;/p&gt;</description></item><item><title>Funções anônimas em PHP</title><link>https://adlermedrado.com.br/posts/funcoes-anonimas-em-php/</link><pubDate>Sun, 26 Sep 2010 20:23:35 -0300</pubDate><guid>https://adlermedrado.com.br/posts/funcoes-anonimas-em-php/</guid><description>&lt;h3 id="introdução"&gt;Introdução&lt;/h3&gt;
&lt;p&gt;Não é novidade para ninguém que foram incluídos no PHP 5.3 alguns recursos novos que a tornam uma linguagem melhor e
mais completa.&lt;/p&gt;
&lt;p&gt;A novidade é que eu irei publicar aqui a partir deste post, exemplos de como escrever código PHP usando estas
funcionalidades.&lt;/p&gt;
&lt;p&gt;Minha idéia é de escrever posts curtos e direto ao ponto.&lt;/p&gt;
&lt;p&gt;As funções anônimas, também conhecidas como closures e lambda functions são funcionalidades que são definidas sem que
elas possuam um nome que as identifica e normalmente são usadas para definirmos funções que não serão utilizadas em
nenhum outro local, apenas naquele momento específico.&lt;/p&gt;</description></item><item><title>Promoção do PHPSP te ajuda a tirar certificações Zend</title><link>https://adlermedrado.com.br/posts/promo-phpsp-ajuda-tirar-certificacao/</link><pubDate>Thu, 24 Jun 2010 23:25:35 -0300</pubDate><guid>https://adlermedrado.com.br/posts/promo-phpsp-ajuda-tirar-certificacao/</guid><description>&lt;p&gt;O PHPSPCast traz uma promoção em conjunto com seu último podcast que é
sobre certificação. Os prêmios, logicamente são vouchers pra
certificação. Se você ganhar não vai precisar gastar pelo menos US$160
pra ser um certificado, nós daremos vários certificados. O melhor? Não
é sorteio!&lt;/p&gt;
&lt;p&gt;Responda o questionário de conhecimentos gerais de PHP. Se você acertar tudo, leva.&lt;/p&gt;
&lt;p&gt;E quem for acertando, vai levando até nossos vouchers acabarem. Mas são poucos!!! São 2 vounchers de ZCE e dois
vouchers de ZCF !&lt;/p&gt;</description></item><item><title>Screencast Zend Framework e Netbeans</title><link>https://adlermedrado.com.br/posts/screencast-zend-framework-e-netbeans/</link><pubDate>Sun, 13 Jun 2010 06:07:40 -0300</pubDate><guid>https://adlermedrado.com.br/posts/screencast-zend-framework-e-netbeans/</guid><description>&lt;p&gt;Alô Rapaziada.
Acabei de colocar um screencast que eu fiz hoje cedo mostrando como integrar o Zend Framework, mais precisamente o
Zend_Tool com o NetBeans 6.9 RC 2.&lt;/p&gt;
&lt;p&gt;Como esse foi o primeiro screencast que fiz, perdoem-me caso ele não tenha ficado legal. Ah, alguns ruídos mais pro
final do filme são meus filhos que estavam brincando por perto. :-)&lt;/p&gt;
&lt;p&gt;Deixem seus comentários.&lt;/p&gt;
&lt;p&gt;Abraço.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/O0g6ARlDlys?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;</description></item><item><title>Zend Framework tutorial series capítulo 3</title><link>https://adlermedrado.com.br/posts/zend-framework-tutorial-series-capitulo-3/</link><pubDate>Sat, 22 May 2010 10:08:21 -0300</pubDate><guid>https://adlermedrado.com.br/posts/zend-framework-tutorial-series-capitulo-3/</guid><description>&lt;p&gt;Depois de muito tempo eu consegui voltar a este tutorial e a partir deste capítulo eu vou mudar um pouco a estratégia,
vocês irão perceber que este capítulo será menor do que os anteriores porque eu vou buscar escrever capítulos menores em
uma frequência maior. Espero que dê certo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Introdução&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Neste capítulo eu mostrarei um pouco do Zend_Form e algumas coisas que são possíveis de implementar usando ele.&lt;/p&gt;
&lt;p&gt;O &lt;code&gt;Zend_Form&lt;/code&gt; é um componente que nos permite tratar formulários HTML como objetos PHP, simplificando o uso quando
precisamos filtrar e validar dados provenientes de formulários.&lt;/p&gt;</description></item><item><title>Atualizem suas agendas</title><link>https://adlermedrado.com.br/posts/atualizem-suas-agendas/</link><pubDate>Sun, 25 Apr 2010 20:05:41 -0300</pubDate><guid>https://adlermedrado.com.br/posts/atualizem-suas-agendas/</guid><description>&lt;p&gt;Esse post é especial para aqueles que fazem parte da comunidade PHP brasileira e/ou estão buscando conhecer mais a
linguagem.&lt;/p&gt;
&lt;p&gt;Decidi postar aqui todos os eventos que tenho conhecimento que já foram divulgados por aí, colocando todos em um único
ponto para que vocês possam analisar as datas com antecedência e começarem a se planejar.&lt;/p&gt;
&lt;p&gt;Este ano, seguindo a tendência do ano passado, a nossa comunidade está bem servida de eventos que nos permitem
aprofundar mais o nosso conhecimento em áreas que já conhecemos e também conhecer outras que ainda não tivemos
oportunidade de trabalhar, além é claro, de fazer o tão importante networking.&lt;/p&gt;</description></item><item><title>Zend Framework tutorial series capítulo 2</title><link>https://adlermedrado.com.br/posts/zend-framework-tutorial-series-capitulo-2/</link><pubDate>Tue, 16 Feb 2010 21:55:16 -0300</pubDate><guid>https://adlermedrado.com.br/posts/zend-framework-tutorial-series-capitulo-2/</guid><description>&lt;p&gt;Tudo bem?&lt;/p&gt;
&lt;p&gt;Demorou um pouco para eu publicar este capítulo pois infelizmente eu tive alguns contratempos nas últimas semanas, mas
de qualquer forma, é muito bom saber que você se interessou por esta série de tutoriais e voltou para continuar
implementando um sistema de exemplo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Recapitulando&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;No primeiro capítulo desta série eu mostrei como configurar o seu ambiente de desenvolvimento para utilizar o Zend
Framework com o &lt;code&gt;Zend_Tool&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://adlermedrado.com.br/posts/zend-framework-tutorial-series-capitulo-1/"&gt;Reveja o Capítulo 1 do tutorial&lt;/a&gt;.
Uma observação importante: Eu estou utilizando a versão 1.10 do Zend Framework. Certifique-se que você também esteja
utilizando esta mesma versão para melhor aproveitamento do tutorial. Mantenha sua estrutura atualizada, ok?
Model, View, Controller&lt;/p&gt;</description></item><item><title>Zend Framework 1.10.0 stable released</title><link>https://adlermedrado.com.br/posts/zf-1-10-0-stable-released/</link><pubDate>Wed, 27 Jan 2010 08:06:09 -0300</pubDate><guid>https://adlermedrado.com.br/posts/zf-1-10-0-stable-released/</guid><description>&lt;p&gt;Ontem eu recebi um email pela lista geral do Zend Framework que informava o lançamento da release 1.10 Stable do Zend
Framework.&lt;/p&gt;
&lt;p&gt;Foram adicionados diversos novos recursos, entre eles, o &lt;code&gt;Zend_Oauth&lt;/code&gt; o qual me deixou excitado e vou fazer alguns testes
logo logo. Houve também o aperfeiçoamento do &lt;code&gt;Zend_Tool&lt;/code&gt; e isso me deixou bastante animado pois tenho trabalhado com ele e
gostado bastante. Hoje iniciarei os testes com ele usando no meu dia-a-dia.&lt;/p&gt;</description></item><item><title>Zend Framework tutorial series capitulo 1</title><link>https://adlermedrado.com.br/posts/zend-framework-tutorial-series-capitulo-1/</link><pubDate>Tue, 19 Jan 2010 18:56:50 -0300</pubDate><guid>https://adlermedrado.com.br/posts/zend-framework-tutorial-series-capitulo-1/</guid><description>&lt;p&gt;Estou iniciando uma série de tutoriais sobre Zend Framework onde eu pretendo mostrar desde os conceitos básicos até os
avançados.&lt;/p&gt;
&lt;p&gt;Tentarei colocar um novo capítulo semanalmente, desta forma teremos uma janela boa para praticar o conteúdo proposto.&lt;/p&gt;
&lt;p&gt;Este primeiro Tutorial da série visa demonstrar a instalação e configuração do ambiente bem como criar a estrutura de
diretórios de uma aplicação utilizando o Zend_Tool.&lt;/p&gt;
&lt;p&gt;Antes de mais nada, os pré-requisitos para continuar este tutorial são:
1- Conhecimento de PHP utilizando os conceitos de Orientação a Objetos.
2- Configuração do ambiente (Apache, PHP, etc).
3- Domínio do Sistema Operacional que está utilizando.&lt;/p&gt;</description></item><item><title>Agenda atualizada</title><link>https://adlermedrado.com.br/posts/agenda-atualizada/</link><pubDate>Tue, 04 Aug 2009 12:08:11 -0300</pubDate><guid>https://adlermedrado.com.br/posts/agenda-atualizada/</guid><description>&lt;p&gt;Apenas para informar a quem interessar possa, minha agenda foi atualizada. Se você deseja aprender PHP ou Zend Framework
e reside em Brasília ou nas proximidades, você pode aproveitar os cursos que eu ministrarei na X25 Treinamentos e
Consultoria.&lt;/p&gt;
&lt;p&gt;Confirmando novas turmas eu irei atualizar a agenda e divulgar no site.&lt;/p&gt;
&lt;p&gt;Abraços.&lt;/p&gt;</description></item><item><title>Por onde anda o tio Adler</title><link>https://adlermedrado.com.br/posts/por-onde-anda-o-tio-adler/</link><pubDate>Wed, 22 Jul 2009 18:53:50 -0300</pubDate><guid>https://adlermedrado.com.br/posts/por-onde-anda-o-tio-adler/</guid><description>&lt;p&gt;Opa.
Já tem algum tempinho que não atualizo meu blog mas é por uma boa causa: Férias!&lt;/p&gt;
&lt;p&gt;Estou usando muito pouco o computador nesses dias para dar uma descansada, mas em breve voltarei a publicar bastante
novidade por aqui.&lt;/p&gt;
&lt;p&gt;A propósito, olhei minha caixa postal hoje e reparei que estou com bastante email (+5000) para ler e responder, então
caso você tenha me enviado um email e eu demore para te responder, por favor não se irrite que é por que eu deixei
acumular devido às férias, porém eu vou colocar tudo em ordem assim que voltar a Brasília.&lt;/p&gt;</description></item><item><title>Minha agenda</title><link>https://adlermedrado.com.br/posts/minha-agenda/</link><pubDate>Sat, 27 Jun 2009 11:00:16 -0300</pubDate><guid>https://adlermedrado.com.br/posts/minha-agenda/</guid><description>&lt;p&gt;Como eu sempre recebo emails perguntando sobre datas de treinamento e/ou palestras eu resolvi aproveitar um pedaço do
meu sábado para criar uma área no meu site onde eu disponibilize essas informações.&lt;/p&gt;
&lt;p&gt;De início eu tentei usar o Google Calendar em conjunto com a &lt;code&gt;Zend_GData&lt;/code&gt; mas os recursos do Google se mostraram muito
além do que eu pretendia aqui no meu site então fiz ‘na mão’ mesmo usando banco de dados e criando meus controllers e
etc.&lt;/p&gt;</description></item><item><title>Profiling de banco de dados com Zend_Db_Profiler e Firebug</title><link>https://adlermedrado.com.br/posts/profiling-db-zend-firebug/</link><pubDate>Wed, 17 Jun 2009 15:54:18 -0300</pubDate><guid>https://adlermedrado.com.br/posts/profiling-db-zend-firebug/</guid><description>&lt;p&gt;Se você usa o Zend Framework já percebeu que não é muito trivial obter as queries executadas no banco de dados e isso é
algo comum no dia-a-dia de um desenvolvedor pois com elas nós podemos corrigir bugs e determinar pontos de lentidão e
etc.&lt;/p&gt;
&lt;p&gt;O Zend Framework possui um componente chamado &lt;em&gt;Zend_Db_Profiler&lt;/em&gt; que nos permite realizar o profiling dos acessos ao banco
mas na minha opinião ele sozinho é muito chato de usar então eu utilizo ele em conjunto com o componente
&lt;em&gt;Zend_Db_Profiler_Firebug&lt;/em&gt; e é isso que vou mostrar a você como se faz.&lt;/p&gt;</description></item><item><title>Vale a pena tirar certificacoes?</title><link>https://adlermedrado.com.br/posts/vale-a-pena-tirar-certificacoes/</link><pubDate>Tue, 16 Jun 2009 18:47:01 -0300</pubDate><guid>https://adlermedrado.com.br/posts/vale-a-pena-tirar-certificacoes/</guid><description>&lt;p&gt;Não é de hoje que este é um dos maiores questionamentos de quem trabalha na área de desenvolvimento de software
principalmente entre os programadores então estou escrevendo este post para tentar expôr a minha opinião sobre o
assunto.&lt;/p&gt;
&lt;p&gt;Eu sou meio suspeito para falar sobre isso pois possuo todas as certificações da Zend e pretendo em breve tirar uma
certificação Sun Java e outra Microsoft, é isso aí, o lance é ser fluente em várias linguagens… :-)&lt;/p&gt;</description></item><item><title>Slides da Palestra sobre Zend Framework no PHPSC Conf</title><link>https://adlermedrado.com.br/posts/slides-palestra-zf-phpsc-conf/</link><pubDate>Wed, 10 Jun 2009 18:07:29 -0300</pubDate><guid>https://adlermedrado.com.br/posts/slides-palestra-zf-phpsc-conf/</guid><description>&lt;p&gt;Demorei para disponibilizar o material porque após o evento minha semana em Brasília foi muito corrida e em seguida tive
uma viagem de trabalho para Ourinhos, interior de São Paulo.&lt;/p&gt;
&lt;p&gt;Esta é a primeira vez que utilizei os serviços do slideshare e conforme eu tenha disponibilidade de tempo eu irei
colocar o material mais antigo lá também.&lt;/p&gt;
&lt;p&gt;Abraços a todos. Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.slideshare.net/adlermedrado/zend-framework-1535481?type=presentation"&gt;Zend Framework&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Mudanças no Zend_Loader</title><link>https://adlermedrado.com.br/posts/mudancas-no-zend-loader/</link><pubDate>Thu, 28 May 2009 19:42:10 -0300</pubDate><guid>https://adlermedrado.com.br/posts/mudancas-no-zend-loader/</guid><description>&lt;p&gt;Com o advento da versão 1.8.0 do Zend Framework algumas mudanças no Zend_Loader serão necessárias quando for utilizado o
autoload.&lt;/p&gt;
&lt;p&gt;Até então nós habilitávamos o Zend_Loader no bootstrapper para usar o autoload da seguinte forma:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;Zend_Loader&lt;/span&gt;&lt;span style="color:#f92672"&gt;::&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;registerAutoload&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Com o código acima, todas as classes incluindo as que utilizassem a estrutura de namespaces do ZF seriam inclusas no
pelo autoload no ato da criação de sua instância desde que estivessem no include_path, porém, esta maneira está
deprecated e com isso algumas mudanças são necessárias para que seu código continue funcionando em versões futuras e não
receba um notice nas versões atuais.&lt;/p&gt;</description></item><item><title>Heróis Brasileiros esquecidos ou quase</title><link>https://adlermedrado.com.br/posts/herois-brasileiros-esquecidos-ou-quase/</link><pubDate>Sun, 10 May 2009 18:00:52 -0300</pubDate><guid>https://adlermedrado.com.br/posts/herois-brasileiros-esquecidos-ou-quase/</guid><description>&lt;p&gt;Este post é completamente OFF-TOPIC em relação ao que eu costumo colocar aqui, porém, não é OFF-TOPIC em relação a
aquilo que eu gosto de ler e de estudar que é o assunto de DEFESA NACIONAL e história ou você acha que fico 24 horas
pensando em PHP e programação? :D&lt;/p&gt;
&lt;p&gt;Bem, foi recentemente comemorado o DIA DA VITÓRIA da forças aliadas na Europa e o fato de não ter visto nenhuma
comemração a isso em Brasília, foi para mim um ato de completa falta de patriotismo. Estão de parabéns os cidadãos do
Rio de Janeiro e Curitiba que conforme eu soube comemoraram este significante dia em suas cidades.&lt;/p&gt;</description></item><item><title>Treinamento de Zend Framework em Brasilia confirmado</title><link>https://adlermedrado.com.br/posts/treinamento-de-zend-framework-em-brasilia-confirmado/</link><pubDate>Mon, 04 May 2009 08:19:34 -0300</pubDate><guid>https://adlermedrado.com.br/posts/treinamento-de-zend-framework-em-brasilia-confirmado/</guid><description>&lt;p&gt;Hoje iniciará um treinamento de Zend Framework na X25, empresa que ministro cursos de PHP em Brasília. Será a primeira
turma de Zend Framework lá na X25 e estou bastante empolgado.&lt;/p&gt;
&lt;p&gt;Neste curso eu irei mostrar o Zend Framework desde o básico e mostrarei como criar aplicações em nível enterprise
utilizando este que em minha opinião é o melhor framework para desenvolvimento PHP na atualidade.&lt;/p&gt;
&lt;p&gt;Ainda há tempo para se matricular, o curso será todas as segundas, quartas e sextas a noite.&lt;/p&gt;</description></item><item><title>Flisol 2009</title><link>https://adlermedrado.com.br/posts/flisol-2009/</link><pubDate>Sun, 26 Apr 2009 19:11:34 -0300</pubDate><guid>https://adlermedrado.com.br/posts/flisol-2009/</guid><description>&lt;p&gt;Ontem eu participei do FLISOL 2009 ministrando uma palestra sobre Zend Framework e foi muito legal.&lt;/p&gt;
&lt;p&gt;Sala cheia e público entusiasmado: Esse é o resumo sobre minha palestra; O material já se encontra disponível para quem
interessar possa em &lt;a href="http://adlermedrado.com.br/palestras"&gt;http://adlermedrado.com.br/palestras&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;O FLISOL como um todo foi bem bacana, teve muito gente e o estande do PHPDF foi bem movimentado; Distribuímos adesivos,
tiramos dúvidas, divulgamos o PHP e isso não seria possível sem a participação da comunidade principalmente os amigos
abaixo:&lt;/p&gt;</description></item><item><title>Chegou meu certificado ZCE-ZF</title><link>https://adlermedrado.com.br/posts/chegou-meu-certificado-zce-zf/</link><pubDate>Wed, 22 Apr 2009 17:56:53 -0300</pubDate><guid>https://adlermedrado.com.br/posts/chegou-meu-certificado-zce-zf/</guid><description>&lt;p&gt;A alguns dias atrás chegou pelo correio o meu certificado ZCE-ZF.&lt;/p&gt;
&lt;p&gt;Eu achei ele legal e o adesivo que veio com ele também, mas ainda acho o certificado de PHP 5 mais bonito, não que o de
Zend Framework seja feio mas sabe como é gosto né? Mas uma coisa bacana que tem nos dois é que eles são assinados pelo
Andi Gutmans e Zeev Suraski. :-)&lt;/p&gt;
&lt;p&gt;Da mesma forma quando tirei certificação ZCE PHP 5 a Zend mandou um adesivo com o selo da certificação e o adesivo é bem
bacana.
Os adesivos do selo da certificação PHP são maiores (eu tenho dois, o mais antigo e o mais novo) do que o do Zend
Framework e por serem tão grandes eu ainda não achei um bom lugar para fixa-los. O do ZF não deixa de ser grande mas é
menor do que os outros.&lt;/p&gt;</description></item><item><title>Tutorial Zend Paginator</title><link>https://adlermedrado.com.br/posts/tutorial-zend-paginator/</link><pubDate>Sat, 28 Mar 2009 17:52:51 -0300</pubDate><guid>https://adlermedrado.com.br/posts/tutorial-zend-paginator/</guid><description>&lt;p&gt;O Zend Framework é muito interessante mesmo nos componentes mais simples, desta vez eu irei falar sobre o componente
Zend_Paginator, que é um componente que se propõe a fazer a paginação de qualquer coleção de dados de uma maneira bem
simples e mostrar os dados paginados para o usuário.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ADAPTERS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Este componente não exige que os dados a serem paginados sejam especificamente dados provenientes de bancos de dados,
ele faz a paginação de arrays, de dados relacionados a objetos Zend_Db_Select e Zend_Db_Table_Select e Iterators. Hoje
iremos nos ater ao uso dos Adapters Array e DbTableSelect.&lt;/p&gt;</description></item><item><title>Enfim Zend Certified Engineer #2</title><link>https://adlermedrado.com.br/posts/enfim-zend-certified-engineer-2/</link><pubDate>Tue, 17 Mar 2009 03:51:08 -0300</pubDate><guid>https://adlermedrado.com.br/posts/enfim-zend-certified-engineer-2/</guid><description>&lt;p&gt;Quem acompanha meu blog a mais tempo deve se lembrar de quando usei este título pela primeira vez. Foi no dia
21/09/2007, um dia após eu fazer o exame de certificação de PHP 5 da Zend (ZCE PHP 5), quem não se lembra pode ver o
post aqui.&lt;/p&gt;
&lt;p&gt;Mas porque o mesmo título neste post? Porque ontem eu fiz o exame para a certificação de Zend Framework (ZCE ZF) e
graças a D’us, que me deu esta oportunidade, eu passei.&lt;/p&gt;</description></item><item><title>Meu primeiro plugin para Wordpress</title><link>https://adlermedrado.com.br/posts/meu-primeiro-plugin-para-wordpress/</link><pubDate>Sun, 15 Feb 2009 19:49:58 -0300</pubDate><guid>https://adlermedrado.com.br/posts/meu-primeiro-plugin-para-wordpress/</guid><description>&lt;p&gt;Eu sempre tive a curiosidade de saber como escrever um plugin para wordpress mas meu tempo anda escasso e eu acabei
protelando por algum tempo até ontem, quando arranjei um tempinho para ver como é que era.&lt;/p&gt;
&lt;p&gt;Tudo começou quando eu fui olhar no meu kaluach (um ótimo software de calendário judaico) para pesquisar qual era a data
correspondente a 24/02/2004 (uma data infeliz na minha vida, quem é mais chegado a mim sabe do que estou falando) no
calendário judaico. Nessa hora me dei conta de que eu poderia escrever um plugin para o WP que mostrasse as datas do
post no formato gregoriano, judaico transliterado e em caracteres do idioma hebraico. Como eu já tinha escrito um script
a uns 4 anos atrás que fazia quase isso tudo, eu apenas o adaptei para mostrar a data em caracteres hebraicos e o joguei
dentro da estrutura de plugin do wordpress.&lt;/p&gt;</description></item><item><title>Seven things that probably you may not know about me</title><link>https://adlermedrado.com.br/posts/seven-things/</link><pubDate>Sat, 03 Jan 2009 05:12:57 -0300</pubDate><guid>https://adlermedrado.com.br/posts/seven-things/</guid><description>&lt;p&gt;This is the first time I take part a meme/tag, as it was my friend &lt;a href="https://doh.ms"&gt;Rafael Dohms&lt;/a&gt; who invited me, I will
not deny my participation. :-) I think it is a opportunity to tell you some things that probably you may not know about
me.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I wrote my first software using turbo pascal. Was a kind of calendar software for my BBS.&lt;/li&gt;
&lt;li&gt;I already have practice in Karate, Kung-fu and Kickboxing. I have fought in some kung-fu championships and gained some
medals.&lt;/li&gt;
&lt;li&gt;Jewish is my religion.&lt;/li&gt;
&lt;li&gt;I like to study history and military issues as a hobby.&lt;/li&gt;
&lt;li&gt;I like to cook. Tabule and macarroni(pasta) are my specialities.&lt;/li&gt;
&lt;li&gt;In 1994 I was interviewed and I had my photo in the first page of the Correio Braziliense (a local newspaper). It was
a reportage about BBS.&lt;/li&gt;
&lt;li&gt;I have already lived in several Brazilian cities in the states of PR, DF, PE, SP and RJ. Some people call me a
gypsy. :)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now i will tag another brazilian guys.&lt;/p&gt;</description></item><item><title>Mini-curso Solidário</title><link>https://adlermedrado.com.br/posts/mini-curso-solidario/</link><pubDate>Thu, 27 Nov 2008 13:46:53 -0300</pubDate><guid>https://adlermedrado.com.br/posts/mini-curso-solidario/</guid><description>&lt;p&gt;Sei que está bem em cima da hora mas é que as últimas semanas tem sido bastante movimentadas. Por isso peço desculpas
pela demora ao postar.&lt;/p&gt;
&lt;p&gt;Bem, a X25, empresa a qual eu sou um dos instrutores de PHP, está organizando um evento denominado mini-cursos
solidários, que consiste em mini-cursos sobre diversos assuntos, com profissionais renomados a preço módico com o
intuito de ajudar as crianças carentes que enviam cartinhas ao papai noel para os correios.&lt;/p&gt;</description></item><item><title>Zend_Form: Um simples tutorial</title><link>https://adlermedrado.com.br/posts/zend-form-um-simples-tutorial/</link><pubDate>Sun, 14 Sep 2008 19:55:18 -0300</pubDate><guid>https://adlermedrado.com.br/posts/zend-form-um-simples-tutorial/</guid><description>&lt;p&gt;Introdução&lt;/p&gt;
&lt;p&gt;Depois de algum tempo sem escrever algo sobre o Zend Framework, venho hoje mostrar rapidamente um exemplo de como usar
o &lt;code&gt;Zend_Form&lt;/code&gt; e de quebra vou mostrar o &lt;code&gt;Zend_Translator&lt;/code&gt;, que pode ser usado em internacionalização.&lt;/p&gt;
&lt;p&gt;O &lt;code&gt;Zend_Form&lt;/code&gt; é um componente que permite que formulários sejam criados e mantido em um objeto, aumentando produtividade
e mantendo um padrão de desenvolvimento. É possível também com o &lt;code&gt;Zend_Form&lt;/code&gt;, a implementação de formulários com
herança, ou seja, você tem um formulário genérico (ex: &lt;code&gt;UsuarioForm&lt;/code&gt;) que pode ser utilizado para criação de outros (ex:
&lt;code&gt;UsuarioAdminForm&lt;/code&gt;) que possuiriam apenas alguns campos adicionais além do form padrão.&lt;/p&gt;</description></item><item><title>Dia do Programador</title><link>https://adlermedrado.com.br/posts/dia-do-programador/</link><pubDate>Fri, 12 Sep 2008 19:44:01 -0300</pubDate><guid>https://adlermedrado.com.br/posts/dia-do-programador/</guid><description>&lt;p&gt;Pois é, hoje é dia do programador, e devido à pressão diária que só nós programadores conhecemos, eu não pude elaborar
nada para comemorar esta tão importante data.&lt;/p&gt;
&lt;p&gt;Então, faço minhas as palavras do colega Dark Flames: &lt;strong&gt;Parabéns a todos nós&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Última aula do curso de PHP: Reloaded</title><link>https://adlermedrado.com.br/posts/ultima-aula-do-curso-de-php-reloaded/</link><pubDate>Tue, 05 Aug 2008 11:32:32 -0300</pubDate><guid>https://adlermedrado.com.br/posts/ultima-aula-do-curso-de-php-reloaded/</guid><description>&lt;p&gt;Ontem (segunda, 04/08), foi o último dia do curso de PHP avançado e Zend Framework que ministrei para meus colegas do
MDIC/Sigma.&lt;/p&gt;
&lt;p&gt;Foi muito legal rever esse pessoal e conhecer as pessoas que entraram lá depois que eu mudei de emprego.&lt;/p&gt;
&lt;p&gt;Para mim foi uma satisfação muito grande passar esses dias com esse pessoal que é nota 10.&lt;/p&gt;
&lt;p&gt;Um abraço e até a próxima.&lt;/p&gt;</description></item><item><title>Conisli 2008</title><link>https://adlermedrado.com.br/posts/conisli-2008/</link><pubDate>Mon, 30 Jun 2008 08:00:25 -0300</pubDate><guid>https://adlermedrado.com.br/posts/conisli-2008/</guid><description>&lt;p&gt;É com muito prazer que divulgo neste humilde site o evento &lt;a href="http://www.conisli.org/"&gt;Conisli 2008&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;O Conisli é um evento relacionado a software livre e que sempre contou com a presença da comunidade brasileira de
desenvolvedores PHP.&lt;/p&gt;
&lt;p&gt;Este ano não será diferente e contará com a presença do ilustre Andrei Zmievski, criador do PHP-GTK e responsável pela
implementação do Unicode no PHP 6, entre outros.&lt;/p&gt;
&lt;p&gt;É importante frisar que este evento foi realizado por membros da comunidade de desenvolvedores PHP nacional e por isso
nós devemos nos esforçar para prestigia-lo. É um evento feito por membros da comunidade para a comunidade.&lt;/p&gt;</description></item><item><title>Remote Systems no PDT</title><link>https://adlermedrado.com.br/posts/remote-systems-no-pdt/</link><pubDate>Fri, 27 Jun 2008 10:30:29 -0300</pubDate><guid>https://adlermedrado.com.br/posts/remote-systems-no-pdt/</guid><description>&lt;p&gt;Eu sempre procurei por plugins do eclipse que me permitissem acessar diretórios remotos via SSH para editar arquivos
remotamente, mas todos que encontrei não funcionavam corretamente.&lt;/p&gt;
&lt;p&gt;Hoje encontrei &lt;a href="https://www.freshblurbs.com/blog/2007/12/11/best-sftp-plugin-eclipse.html"&gt;neste site&lt;/a&gt; um plugin que
parece ser o mesmo usado no Zend Studio for Eclipse e é muito bom.&lt;/p&gt;
&lt;p&gt;[]s&lt;/p&gt;</description></item><item><title>PHPDF: 2 Anos</title><link>https://adlermedrado.com.br/posts/phpdf-2-anos/</link><pubDate>Thu, 26 Jun 2008 17:24:39 -0300</pubDate><guid>https://adlermedrado.com.br/posts/phpdf-2-anos/</guid><description>&lt;p&gt;Este mês é o mês de aniversário do &lt;a href="https://phpdf.org.br"&gt;PHPDF&lt;/a&gt; e para lembrar esta data eu irei reproduzir aqui o
texto elaborado pelo colega Ricardo Maia e enviado para a lista de discussões do grupo.&lt;/p&gt;
&lt;p&gt;O grupo PHP-DF comemora seu 2º aniversário.
E uma forma de demonstrar a evolução de nossa comunidade é através de números, então vamos lá!!!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nossa lista de discussão conta hoje com 346 membros, sendo que 04 deles ingressaram na última semana!!&lt;/li&gt;
&lt;li&gt;9522 mensagens trocadas na lista.&lt;/li&gt;
&lt;li&gt;305 usuários registrados no site.&lt;/li&gt;
&lt;li&gt;Dobramos o número de profissionais certificados no DF.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nosso primeiro evento, o 1º PHP-DF Road Show, contou com a presença de 257 participantes, muitos deles de outros estados
da federação. Um evento de qualidade profissional!&lt;/p&gt;</description></item><item><title>Ultima aula do curso de PHP</title><link>https://adlermedrado.com.br/posts/ultima-aula-do-curso-de-php/</link><pubDate>Thu, 26 Jun 2008 14:26:10 -0300</pubDate><guid>https://adlermedrado.com.br/posts/ultima-aula-do-curso-de-php/</guid><description>&lt;p&gt;Hoje foi a última aula da turma do curso de PHP do MDIC/Sigma que estava sendo realizada aos sábados.&lt;/p&gt;
&lt;p&gt;Foi muito bom rever essa turma a qual tive a honra de trabalhar no MDIC e passar diversos sábados lidando o dia todo com
PHP, Zend Framework, e etc.&lt;/p&gt;
&lt;p&gt;É sempre muito bom dar aula pra uma turma animada como essa, mas agora vou dar uma descansada por que dar aula vários
sábados seguidos durante o dia todo cansa demais :-)&lt;/p&gt;</description></item><item><title>Treinamento PHP avançado para meus colegas do MDIC/Sigma</title><link>https://adlermedrado.com.br/posts/treinamento-php-avancado-mdic-sigma/</link><pubDate>Sun, 22 Jun 2008 05:22:53 -0300</pubDate><guid>https://adlermedrado.com.br/posts/treinamento-php-avancado-mdic-sigma/</guid><description>&lt;p&gt;Iniciou ontem o treinamento de conceitos avançados em PHP para os meus colegas da SIGMA/MDIC.&lt;/p&gt;
&lt;p&gt;A Sigma é a empresa a qual eu trabalhava até o primeiro trimestre deste ano prestando serviços no Ministério do
Desenvolvimento Indústria e Comércio Exterior, desenvolvendo com PHP e Java.&lt;/p&gt;
&lt;p&gt;Para mim é bem legal ministrar este treinamento, porque eu vou rever muitos colegas por algum tempo e conhecer novas
pessoas que entraram lá depois de mim.&lt;/p&gt;</description></item><item><title>Vale a pena desenvolver um framework caseiro ultimamente?</title><link>https://adlermedrado.com.br/posts/vale-a-pena-framework-caseiro/</link><pubDate>Fri, 20 Jun 2008 09:03:17 -0300</pubDate><guid>https://adlermedrado.com.br/posts/vale-a-pena-framework-caseiro/</guid><description>&lt;p&gt;É fato que atualmente os desenvolvedores PHP estão bem servidos de frameworks, mas mesmo assim, alguns desenvolvedores
insistem em suas idéias caseiras. Será que isso vale a pena? Desperdiçar tempo reinventando a roda?&lt;/p&gt;
&lt;p&gt;Em todos estes anos que atuo com desenvolvimento eu aprendi que não se deve reinventar a roda, principalmente depois do
Buzz da OO e por isso, felizmente a quase dois anos eu deixei meu framework caseiro de lado pelos seguintes motivos:&lt;/p&gt;</description></item><item><title>Treinamento PHP5 Com Orientação a Objetos</title><link>https://adlermedrado.com.br/posts/treinamento-php5-com-orientacao-a-objetos/</link><pubDate>Thu, 19 Jun 2008 13:30:22 -0300</pubDate><guid>https://adlermedrado.com.br/posts/treinamento-php5-com-orientacao-a-objetos/</guid><description>&lt;p&gt;Hoje iniciará um treinamento de PHP 5 com OO na X25.&lt;/p&gt;
&lt;p&gt;Este curso é bem legal pois engloba desde os conceitos mais básicos do PHP até os conceitos de OO que o PHP 5 nos
proporciona.&lt;/p&gt;
&lt;p&gt;Publiquei o post agora em cima da hora mas ainda dá tempo caso você se interesse. Vale a pena.&lt;/p&gt;
&lt;p&gt;Para maiores
informações: &lt;a href="http://www.x25.com.br/curso/php_5_com_orientacao_a_objetos/342"&gt;http://www.x25.com.br/curso/php_5_com_orientacao_a_objetos/342&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Abraço.&lt;/p&gt;</description></item><item><title>Planet Adler</title><link>https://adlermedrado.com.br/posts/planet-adler/</link><pubDate>Thu, 22 May 2008 11:16:52 -0300</pubDate><guid>https://adlermedrado.com.br/posts/planet-adler/</guid><description>&lt;p&gt;Publiquei a alguns minutos o planet adler que consiste em um espaço no meu site onde eu mostro o último post de blogs
que eu considero relevantes.&lt;/p&gt;
&lt;p&gt;Eu acho interessante fazer algo do gênero por alguns motivos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mostro aos visitantes do meu site os posts de blogs que considero interessantes. Difundindo a informação.&lt;/li&gt;
&lt;li&gt;Divulgo a outras pessoas os posts que considero interessantes, em alguns casos, as fontes para posts do meu próprio
blog.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Espero que você goste deste novo espaço e caso deseje que seu blog seja listado no meu blogroll, me envie um e-mail para
adlermedrado arroba gmail ponto com.&lt;/p&gt;</description></item><item><title>Heavy Metal pra quem gosta de história</title><link>https://adlermedrado.com.br/posts/heavy-metal-pra-quem-gosta-de-historia/</link><pubDate>Sat, 17 May 2008 08:15:28 -0300</pubDate><guid>https://adlermedrado.com.br/posts/heavy-metal-pra-quem-gosta-de-historia/</guid><description>&lt;p&gt;Você gosta de Heavy Metal?&lt;/p&gt;
&lt;p&gt;Você gosta de História?&lt;/p&gt;
&lt;p&gt;Que tal unir o útil ao agradável? Há dois anos que quero fazer esse post mas não fiz sei-lá-porque. Bem, a resposta é:
Sabaton.&lt;/p&gt;
&lt;p&gt;Eu gosto muito de counterstrike ( quem me conhece vai saber o motivo do porque eu obviamente gostaria dessa música),
thundergods, metal crue, primo victoria, entre muitas outras.&lt;/p&gt;
&lt;p&gt;Vale a pena: &lt;a href="http://www.sabaton.net"&gt;www.sabaton.net&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;abraços.&lt;/p&gt;</description></item><item><title>Feed e Flickr em cache</title><link>https://adlermedrado.com.br/posts/feed-flickr-em-cache/</link><pubDate>Sat, 10 May 2008 10:10:46 -0300</pubDate><guid>https://adlermedrado.com.br/posts/feed-flickr-em-cache/</guid><description>&lt;p&gt;Quem está me acompanhando no twitter e tem lido meus últimos posts, sabe que criei um site e etc, porém, nos últimos
dias meu server no dreamhost está um pouco lento e justamente no consumo dos feeds do meu blog e na requisição REST para
minha página no Flickr o meu site tem tipo um comportamento um pouco lento. É lógico que não é culpa exclusiva do
consumo de feed e do REST do Flickr, porém, para melhorar um pouco eu usei o componente &lt;em&gt;Zend_Cache&lt;/em&gt; do ZF para colocar
estes dois objetos em cache.&lt;/p&gt;</description></item><item><title>Mudança de endereço realizada</title><link>https://adlermedrado.com.br/posts/mudanca-de-endereco-realizada/</link><pubDate>Fri, 09 May 2008 09:09:05 -0300</pubDate><guid>https://adlermedrado.com.br/posts/mudanca-de-endereco-realizada/</guid><description>&lt;p&gt;Como havia informado anteriormente, eu mudei meu blog de endereço. O novo endereço é &lt;a href="http://adlermedrado.com.br/blog"&gt;http://adlermedrado.com.br/blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Eu criei também um site no endereço &lt;a href="http://www.adlermedrado.com.br"&gt;http://www.adlermedrado.com.br&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;O Objetivo dessa mudança foi principalmente separar
meu blog do endereço da minha empresa e a criação do site, foi para retirar do blog alguns conteúdos que ao meu ver não
cabiam nele. Dessa maneira, meu blog continuará a existir, porém como ferramenta para inclusão de conteúdo apenas.&lt;/p&gt;
&lt;p&gt;Eu pretendo iniciar em breve um tutorial sobre Zend Framework e todas as lições serão inclusas no blog.&lt;/p&gt;</description></item><item><title>Atualizacao No Site</title><link>https://adlermedrado.com.br/posts/atualizacao-no-site/</link><pubDate>Fri, 09 May 2008 03:06:57 -0300</pubDate><guid>https://adlermedrado.com.br/posts/atualizacao-no-site/</guid><description>&lt;p&gt;Incluí no meu site uma área destinada à galeria de fotos. Eu coloco minhas fotos no flickr e não irei mudar isso.&lt;/p&gt;
&lt;p&gt;O que eu fiz foi apenas um mashup onde eu busco as 10 últimas imagens que enviei ao flickr e coloco no meu site.&lt;/p&gt;
&lt;p&gt;Implementar isso foi muito fácil utilizando o componente do Zend Framework para acesso à API do Flickr,
&lt;strong&gt;Zend_Services_Flickr&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Segue abaixo um exemplo de código para busca de imagens no Flickr utilizando o Zend Framework:&lt;/p&gt;</description></item><item><title>O endereço do meu blog irá mudar</title><link>https://adlermedrado.com.br/posts/o-endereco-do-meu-blog-ira-mudar/</link><pubDate>Wed, 07 May 2008 22:02:25 -0300</pubDate><guid>https://adlermedrado.com.br/posts/o-endereco-do-meu-blog-ira-mudar/</guid><description>&lt;p&gt;Depois de alguns anos com meu blog na URL &lt;a href="http://neshertech.net/adler"&gt;http://neshertech.net/adler&lt;/a&gt;, irei movê-lo para um novo endereço.&lt;/p&gt;
&lt;p&gt;Esta URL (neshertech.net) eu registrei para colocar o site da minha empresa (que eu ainda estou elaborando), porém,
aproveitei a infra-estrutura para hospedar o meu blog, mas essa semana eu registrei o domínio &lt;a href="http://adlermedrado.com.br"&gt;http://adlermedrado.com.br&lt;/a&gt;
que será utilizado para colocar meu blog e um site novo que implementarei para colocar meus projetos pessoais, minhas
idéias, galeria de fotos e etc. Dessa forma, irei separar o meu projeto pessoal do meu projeto profissional.&lt;/p&gt;</description></item><item><title>Chernobyl 22 anos</title><link>https://adlermedrado.com.br/posts/chernobyl-22-anos/</link><pubDate>Sat, 26 Apr 2008 17:02:35 -0300</pubDate><guid>https://adlermedrado.com.br/posts/chernobyl-22-anos/</guid><description>&lt;p&gt;Hoje fazem 22 anos que ocorreu o acidente nuclear de Chernobyl, o maior acidente nuclear da história humana.&lt;/p&gt;
&lt;p&gt;Em 26 de Abril de 1986, o reator número 4 da usina nuclear de Chernobyl, localizado próximo da cidade de Prypiat ,
Ucrânia, então parte da extinta União Soviética, explodiu e liberou radioatividade em um número maior do que o das
bombas de Hiroshima e Nagasaki que atingiu, além da Ucrânia, a Bielorrúsia, Escandinávia e Reino Unido.&lt;/p&gt;</description></item><item><title>Usabilidade</title><link>https://adlermedrado.com.br/posts/usabilidade/</link><pubDate>Tue, 01 Apr 2008 11:01:40 -0300</pubDate><guid>https://adlermedrado.com.br/posts/usabilidade/</guid><description>&lt;p&gt;Encontrei no site &lt;a href="http://stuffthathappens.com/blog/2008/03/05/simplicity/"&gt;stuffthathappens.com&lt;/a&gt; a seguinte imagem que
demonstra como poderíamos seguir exemplos de usabilidade que estão à disposição mas mesmo assim teimamos em não
observa-los quando desenvolvemos nossos projetos.&lt;/p&gt;</description></item><item><title>Relacionamento entre tabelas com Zend Framework</title><link>https://adlermedrado.com.br/posts/relacionamento-entre-tabelas-com-zend-framework/</link><pubDate>Tue, 25 Mar 2008 05:37:34 -0300</pubDate><guid>https://adlermedrado.com.br/posts/relacionamento-entre-tabelas-com-zend-framework/</guid><description>&lt;p&gt;O Zend Framework possui uma camada de modelo, composta por algumas classes
como &lt;code&gt;Zend_Db&lt;/code&gt;, &lt;code&gt;Zend_Db_Table&lt;/code&gt;, &lt;code&gt;Zend_Db_Table_Rowset&lt;/code&gt;, entre outras, e é muito simples criar uma classe que representa
uma determinada tabela, basta herdar da classe &lt;code&gt;Zend_Db_Table_Abstract&lt;/code&gt; que você terá todos os métodos principais de
acesso à dados, como insert, update, etc.&lt;/p&gt;
&lt;p&gt;Porém as tabelas possuem relacionamentos e uma entidade em uma tabela pode ser ligada a uma ou mais entidades em outra
tabela utilizando integridade referencial, e o Zend Framework permite que você faça isso tudo no nível de objeto através
de métodos específicos da classe &lt;code&gt;Zend_Db_Table_Row&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Lehitraot Guterman</title><link>https://adlermedrado.com.br/posts/lehitraot-guterman/</link><pubDate>Sun, 23 Mar 2008 08:09:12 -0300</pubDate><guid>https://adlermedrado.com.br/posts/lehitraot-guterman/</guid><description>&lt;p&gt;Marcos Guterman é editor do estadao.com.br e ele tinha um blog no portal do estadão que era um dos mais movimentados. O
blog dele normalmente tratava de questões política internacional e história normalmente relacionadas ao oriente-médio,
porém, sem pender para lado algum. Em muitos casos ele trazia informações que nada tinham a ver com os conflitos que são
comuns naquela região.&lt;/p&gt;
&lt;p&gt;Um blog tão movimentado atrai espécimes indesejáveis e isso não foi diferente no blog dele. Era comum pessoas escondidas
sob a anonimidade que a internet proporciona postarem comentários no blog dele o ofendendo com textos anti-semitas
somente porque ele é judeu. Foram raros os casos em que alguém discutia os posts dele com argumentos plausíveis, eu vi
uma vez, uma pessoa de origem muçulmana, discutindo com ele a respeito do que estava escrito, de maneira civilizada, sem
problemas, mas a grande maioria pregava o fim dos judeus e do estado de Israel. Um anti-semitismo ridículo, porém
eficaz.&lt;/p&gt;</description></item><item><title>Otimizando O Firefox</title><link>https://adlermedrado.com.br/posts/otimizando-o-firefox/</link><pubDate>Sun, 16 Apr 2006 13:21:50 -0300</pubDate><guid>https://adlermedrado.com.br/posts/otimizando-o-firefox/</guid><description>&lt;p&gt;Para otimizar o firefox, siga os passos abaixo:&lt;/p&gt;
&lt;p&gt;1 - Abra o Firefox&lt;/p&gt;
&lt;p&gt;2 - digite na linha do endereço : about:config&lt;/p&gt;
&lt;p&gt;3 - Clique com o botão direito, new / boolean.&lt;/p&gt;
&lt;p&gt;4 - Abrirá uma caixa de diálogo.&lt;/p&gt;
&lt;p&gt;5 - Coloque o nome da propriedade: config.trim_on_minimize&lt;/p&gt;
&lt;p&gt;6 - Escolher o valor True.&lt;/p&gt;
&lt;p&gt;Conforme o autor, o consumo de memória era 62Mb sendo reduzido para 18 MB.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://meiobit.com/arq/007735.html"&gt;Eu vi essa dica aqui&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Nova release de preview do Zend Framework neste fim de semana</title><link>https://adlermedrado.com.br/posts/nova-release-preview-do-zf/</link><pubDate>Tue, 11 Apr 2006 08:50:03 -0300</pubDate><guid>https://adlermedrado.com.br/posts/nova-release-preview-do-zf/</guid><description>&lt;p&gt;Conforme palavras do &lt;a href="http://andigutmans.blogspot.com"&gt;Andi Gutmans&lt;/a&gt; na lista de discussões do Zend Framework, é
possível que neste final de semana seja liberada mais uma release de preview do framework.&lt;/p&gt;
&lt;p&gt;Andi disse em mensagem postada ontem:
&lt;strong&gt;We are working hard to get a new tarball rolled, bug DB up, etc. We should be
getting this out the door this coming week. In the meanwhile, feel free to grab the latest version from
SVN &lt;a href="http://framework.zend.com/download/subversion"&gt;http://framework.zend.com/download/subversion&lt;/a&gt;. Also Mike has updated the manual just recently including some of the
language translations contributed by the community (Thanks!).&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Pesquisa Interessante</title><link>https://adlermedrado.com.br/posts/pesquisa-interessante/</link><pubDate>Sat, 08 Apr 2006 10:00:49 -0300</pubDate><guid>https://adlermedrado.com.br/posts/pesquisa-interessante/</guid><description>&lt;p&gt;Hoje eu li uma matéria bastante interessante no site do Zend Developer Zone.&lt;/p&gt;
&lt;p&gt;Nela o autor utilizou variantes da query de pesquisa do
site &lt;a href="https://web.archive.org/web/20060507033039/http://www.tiobe.com/tpci.htm"&gt;TIOBE Programming Community Index&lt;/a&gt; para
verificar até que ponto aquele indíce do Tiobe é realista.&lt;/p&gt;
&lt;p&gt;O Tiobe verifica em sites de pesquisa ( Google, Msn, etc ) quais as linguagens que mais aparecem em determinada pesquisa
nestes engines de busca. A query utilizada pelo TIOBE (conforme mostrada em seu site ) é +&amp;quot; programming&amp;quot; -tv -channel .&lt;/p&gt;</description></item><item><title>About</title><link>https://adlermedrado.com.br/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/about/</guid><description>&lt;h1 id="about-adler"&gt;About Adler&lt;/h1&gt;
&lt;div class="about-hero"&gt;
 &lt;div class="about-hero__text"&gt;
 &lt;p&gt;I am Adler Medrado — also known as spacexnu — a software engineer with 20+ years writing code, defending systems, and staying ahead of hype.&lt;/p&gt;
 &lt;p&gt;I care about building fast, secure systems and keeping people sovereign over their data.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class="about-hero__photo"&gt;
 &lt;img src="https://adlermedrado.com.br/images/IMG_7191.jpeg" alt="Adler Medrado" loading="lazy" width="320" height="320" /&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="what-i-do"&gt;What I do&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Architect and deploy systems across finance, e-commerce, and healthcare with security, privacy, and performance as defaults.&lt;/li&gt;
&lt;li&gt;Build AI-powered tooling for log analysis and NLP-based data extraction.&lt;/li&gt;
&lt;li&gt;Design decentralized, censorship-resistant tools that keep people sovereign.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="currently"&gt;Currently&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Building &lt;a href="https://fraudtalon.com"&gt;FraudTalon&lt;/a&gt;, an AI-powered platform that detects phishing, scams, and online fraud in emails, images, and URLs.&lt;/li&gt;
&lt;li&gt;Exploring local and cloud AI stacks to keep defenses close to the metal.&lt;/li&gt;
&lt;li&gt;Finishing a History degree while staying embedded in hacker culture.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="origin-story"&gt;Origin story&lt;/h2&gt;
&lt;p&gt;My journey started on a BBS I ran in the 90s on a PC/AT 386 with MS-DOS. That DIY spirit still drives everything I do: build it yourself, understand every layer, stay sovereign.&lt;/p&gt;</description></item><item><title>Contact</title><link>https://adlermedrado.com.br/contact/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/contact/</guid><description>&lt;h1 id="contact"&gt;Contact&lt;/h1&gt;
&lt;p&gt;Want to collaborate, swap ideas, or report something? Use any channel below—email is best for detailed conversations.&lt;/p&gt;
&lt;h2 id="direct"&gt;Direct&lt;/h2&gt;
&lt;h3 id="-personal-"&gt;&amp;ndash; personal &amp;ndash;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;email: &lt;a href="adler@adlermedrado.com.br"&gt;adler@adlermedrado.com.br&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;webpage: &lt;a href="https://adlermedrado.com.br"&gt;https://adlermedrado.com.br&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;twitter: @spacexnu&lt;/li&gt;
&lt;li&gt;pgp fingerprint: 07D7 0FDB CC44 6C19 CA43 02CE 6D5F 1A78 F1DC 361D&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-projects-"&gt;&amp;ndash; projects &amp;ndash;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;webpage: &lt;a href="https://spacexnu.com"&gt;https://spacexnu.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;dharma tecnologia: &lt;a href="https://dharmat.com.br"&gt;https://dharmat.com.br&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-wallets-"&gt;&amp;ndash; wallets &amp;ndash;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;bitcoin (legacy): 13wvajSwhzaHhj5gZ3WWGqNe3P3C9tdVEv&lt;/li&gt;
&lt;li&gt;monero (private): 86AKXynjc3vEi3e269mNH7UDREyJnQLVpBPgWKvx9jhH9q4y9Fk5ZNEYwhX96TunEr6q98N62v86eZAGJdo1HpoY15u3pUm&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;identical to &lt;a href="https://adlermedrado.com.br/address.asc"&gt;cleartext signed message&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="find-me"&gt;Find me&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/spacexnu"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://linkedin.com/in/adlermedrado"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://x.com/spacexnu"&gt;Twitter/X&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nostr.build/u/spacexnu"&gt;Nostr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tilde.team"&gt;Tilde.team&lt;/a&gt; and &lt;a href="https://sdf.org"&gt;SDF&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prefer encrypted or private-by-default channels? Mention it and we will pick the right medium.&lt;/p&gt;</description></item><item><title>Projects</title><link>https://adlermedrado.com.br/projects/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://adlermedrado.com.br/projects/</guid><description>&lt;h1 id="projects"&gt;Projects&lt;/h1&gt;
&lt;p&gt;Things I am building, maintaining, or experimenting with right now.&lt;/p&gt;
&lt;h2 id="active-builds"&gt;Active builds&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://fraudtalon.com"&gt;FraudTalon&lt;/a&gt;: AI-powered platform that flags phishing, scams, and online fraud across emails, images, and URLs.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/spacexnu/ShadowData"&gt;ShadowData&lt;/a&gt;: NLP pipeline that hunts for sensitive data leaks inside text and documents.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/spacexnu/log-analyzer"&gt;log-analyzer&lt;/a&gt;: Real-time attack detection from logs with pragmatic rules and signals.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/spacexnu/hades"&gt;hades&lt;/a&gt;: Heuristic analysis of domains and embedded sites for quick risk assessments.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/spacexnu/job_finder"&gt;job_finder&lt;/a&gt;: CLI tool that scrapes tech job listings with filters that actually matter.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/spacexnu/sovereign-rag"&gt;Sovereign Rag&lt;/a&gt;: Fully private, offline sovereign AI pipeline for security code auditing—own your lab, models, and data with zero cloud lock-in or vendor tracking.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="elsewhere"&gt;Elsewhere&lt;/h2&gt;
&lt;p&gt;More experiments live on &lt;a href="https://github.com/spacexnu"&gt;GitHub&lt;/a&gt;. If something here sparks an idea, reach out via the &lt;a href="https://adlermedrado.com.br/contact"&gt;contact page&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>