<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>William Brendaw — Artigos</title>
  <link href="https://williambrendaw.com/feed/posts.xml" rel="self" type="application/atom+xml"/>
  <link href="https://williambrendaw.com/artigos" rel="alternate" type="text/html"/>
  <updated>2026-07-04T16:39:21+00:00</updated>
  <id>https://williambrendaw.com/feed/posts.xml</id>
  <author>
    <name>William Brendaw</name>
  </author>
  
    <entry>
  <title>Como ajustar o locale do Ubuntu Server para português brasileiro</title>
  <link href="https://williambrendaw.com/2026/como-ajustar-locale-ubuntu-server-pt-br.html"/>
  <updated>2026-03-05T00:00:00+00:00</updated>
  <id>https://williambrendaw.com/2026/como-ajustar-locale-ubuntu-server-pt-br.html</id>
  
    <summary>Alguns comandos nos ajudam a deixar a instação do servidor de jeito que a gente quer</summary>
  
  
    <content type="html">&lt;p&gt;Vira e mexe estou realizando configurações em VPSs ou até mesmo em VMs.&lt;/p&gt;

&lt;p&gt;Uma das coisas que mais preciso ajustar é o idioma do SO. Esse é o passo-a-passo que sigo toda vez que preciso realizar esse ajuste.&lt;/p&gt;
&lt;h2 id=&quot;descobrir-os-locale-instalados&quot;&gt;Descobrir os &lt;em&gt;locale&lt;/em&gt; instalados&lt;/h2&gt;
&lt;p&gt;Eleve a permissão do terminal para o usuário root:&lt;/p&gt;
&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;su
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Retorno do comando:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;root#&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Execute o comando para ver qual é o &lt;em&gt;locale&lt;/em&gt; instalado:&lt;/p&gt;
&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;locale
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Retorno do comando:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;LANG=pt_PT.UTF-8
LANGUAGE=
LC_CTYPE=”pt_PT.UTF-8”
LC_NUMERIC=”pt_PT.UTF-8”
LC_TIME=”pt_PT.UTF-8”
LC_COLLATE=”pt_PT.UTF-8”
LC_MONETARY=”pt_PT.UTF-8”
LC_MESSAGES=”pt_PT.UTF-8”
LC_PAPER=”pt_PT.UTF-8”
LC_NAME=”pt_PT.UTF-8”
LC_ADDRESS=”pt_PT.UTF-8”
LC_TELEPHONE=”pt_PT.UTF-8”
LC_MEASUREMENT=”pt_PT.UTF-8”
LC_IDENTIFICATION=”pt_PT.UTF-8”
LC_ALL=&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Agora descubra quais são os &lt;em&gt;locales&lt;/em&gt; instalados na máquina:&lt;/p&gt;
&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;locale &lt;span class=&quot;nt&quot;&gt;-a&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Retorno do comando:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;C
C.utf8
POSIX
pt_PT.utf8&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;gerar-o-locale-correto&quot;&gt;Gerar o &lt;em&gt;locale&lt;/em&gt; correto&lt;/h2&gt;
&lt;p&gt;Nesse caso, como não temos instalado o &lt;em&gt;locale&lt;/em&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pt_BR.utf8&lt;/code&gt;, precisamos gerar ele no sistema com o comando abaixo:&lt;/p&gt;
&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;locale-gen pt_BR.UTF-8
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Retorno do comando:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;Generating locales (this might take a while)…
pt_BR.UTF-8… done
Generation complete.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Também precisamos regerar os &lt;em&gt;locales&lt;/em&gt; no &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dpkg&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;dpkg-reconfigure &lt;span class=&quot;nt&quot;&gt;--frontend&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;noninteractive locales
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Retorno do comando:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;Generating locales (this might take a while)…
pt_BR.UTF-8… done
pt_PT.UTF-8… done
Generation complete.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;atualizar-o-locale-correto&quot;&gt;Atualizar o &lt;em&gt;locale&lt;/em&gt; correto&lt;/h2&gt;
&lt;p&gt;Agora vamos atualizar o &lt;em&gt;locale&lt;/em&gt; do sistema com o que instalamos anteriormente:&lt;/p&gt;
&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;update-locale &lt;span class=&quot;nv&quot;&gt;LANG&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;pt_BR.UTF-8
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Vamos ver se o locale foi atualizado de forma correta:&lt;/p&gt;
&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nb&quot;&gt;cat&lt;/span&gt; /etc/default/locale
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Retorno do comando:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;LANG=pt_BR.UTF-8&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Por fim, reinicie o sistema para aplicar a mudança:&lt;/p&gt;
&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;reboot now
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;É isso. Espero que o tutorial tenha sido útil.&lt;/p&gt;

&lt;p&gt;Até a próxima!&lt;/p&gt;
</content>
  
</entry>

  
    <entry>
  <title>O verdadeiro começo do ano (e do blog)</title>
  <link href="https://williambrendaw.com/2026/o-verdadeiro-comeco-do-ano-e-do-blog.html"/>
  <updated>2026-02-19T00:00:00+00:00</updated>
  <id>https://williambrendaw.com/2026/o-verdadeiro-comeco-do-ano-e-do-blog.html</id>
  
    <summary>São tantos recomeços que, espero, esse ser o último</summary>
  
  
    <content type="html">&lt;p&gt;Originalmente, havia planejado voltar a publicar artigos no blog bem no início de janeiro, a partir de uma reestruturação e organização que estou fazendo na minha vida, junto à &lt;a href=&quot;https://ingridmachado.net/about&quot;&gt;minha esposa&lt;/a&gt;, que propôs esse novo olhar para nós.&lt;/p&gt;

&lt;p&gt;O grande problema é que a gente precisa de uma lição de humildade para entender que nem sempre o que a gente quer é o que a gente vai conseguir fazer.&lt;/p&gt;

&lt;p&gt;Para variar, coloquei muitas coisas para fazer — e precisava mesmo. A minha vida precisava de organização para ter um rumo mais claro das coisas. E eu tenho uns 500 projetos em paralelo. Até queria fazer menos coisas, mas não tinha como não ter que resolver muito disso tudo, de verdade.&lt;/p&gt;

&lt;p&gt;De qualquer forma, precisei desse 1 mês e meio para seguir botando a casa em ordem para poder voltar a nutrir esse cantinho meu que sempre foi uma vontade, mas nunca uma prioridade.&lt;/p&gt;

&lt;p&gt;Tenho &lt;a href=&quot;https://williambrendaw.com/2024/estamos-em-obras&quot;&gt;uma obra aqui que está rolando há um bom tempo&lt;/a&gt;, mas que também empacou. Para este ano, quero acelerar esse movimento para fazer ajustes que façam sentido para o site e, principalmente, para mim.&lt;/p&gt;

&lt;p&gt;Também penso em manter um ritmo de publicações que seja saudável para esse pequeno espaço na internet e que faça refletir a minha visão sobre como deveria ser a relação entre as pessoas e essa ferramenta tão incrível como é a internet.&lt;/p&gt;

&lt;p&gt;E nada melhor do que no real início do ano aqui no Brasil para reiniciar o meu blog: após o carnaval.&lt;/p&gt;

&lt;p&gt;Vamos ver até onde vai tudo isso. Conto com a sua leitura e feedbacks. Meu email está sempre aberto para trocar ideias.&lt;/p&gt;

&lt;p&gt;É isso. Até a próxima!&lt;/p&gt;
</content>
  
</entry>

  
    <entry>
  <title>Celebração da edição 56 das Notas Quinzenais</title>
  <link href="https://williambrendaw.com/2025/celebracao-edicao-56-notas-quinzenais.html"/>
  <updated>2025-03-19T00:00:00+00:00</updated>
  <id>https://williambrendaw.com/2025/celebracao-edicao-56-notas-quinzenais.html</id>
  
    <summary>Um grande marco para dois projetos muito especiais</summary>
  
  
    <content type="html">&lt;blockquote&gt;
  &lt;p&gt;Originalmente publicado na &lt;a href=&quot;https://trilhadevalor.substack.com/p/trilha-de-valor-100-edicao-especial&quot;&gt;edição comemorativa de 100 publicações&lt;/a&gt; da newsletter &lt;a href=&quot;https://trilhadevalor.substack.com&quot;&gt;Trilha de Valor&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Gosto muito de consumir artigos e notícias pela internet. Estar informado é um hábito que cultivo desde pequeno, iniciado quando tive contato com o primeiro computador que compartilhei com os meus irmãos.&lt;/p&gt;

&lt;p&gt;Também sempre fui muito curioso. Adoro aprender sobre assuntos diversos. Vira e mexe acabo caindo no buraco negro das pesquisas na Wikipedia, somente pelo simples prazer de saber e também ver até onde esse fio vai me levar.&lt;/p&gt;

&lt;p&gt;Com esse consumo desenfreado de conteúdos diversos, sempre compartilhei o que achava com pessoas próximas. A partir disso, a minha esposa (na época, namorada) sugeriu que eu começasse a compartilhar com o mundo. Do mesmo jeito que ela faz com o &lt;a href=&quot;https://ingridmachado.net&quot;&gt;seu blog&lt;/a&gt; e na sua newsletter &lt;a href=&quot;https://trilhadevalor.substack.com&quot;&gt;Trilha de Valor&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Originalmente, tentei publicar as Notas Semanais, em formato de artigos no blog. Me inspirei nas &lt;a href=&quot;https://boingboing.net/2018/07/25/deep-nerd-ruminations.html&quot;&gt;Weeknotes&lt;/a&gt;, hábito comum em blogs estrangeiros para conseguir manter a constância semanal de publicações.&lt;/p&gt;

&lt;p&gt;Mas, como alguém que não tinha nenhuma constância em escrever, me coloquei um desafio que certamente era maior do que eu conseguia manter naquele momento. O fim desse formato era esperado.&lt;/p&gt;

&lt;p&gt;Também já tentei manter as Notas Quinzenais em outro formato, espaçando um pouco o período de publicação. Era uma newsletter que atingiu mais de 20 inscritos. Só que, como era de se esperar, teve o mesmo fim que as Notas Semanais.&lt;/p&gt;

&lt;p&gt;Por isso, coloco aqui a comemoração da publicação da 56ª edição das Notas Quinzenais no seu formato final, na newsletter Trilha de Valor (que chega à sua 100ª edição). Finalmente consegui a constância de publicar regularmente, a cada quinze dias, com um pouco do que encontro por aí.&lt;/p&gt;

&lt;p&gt;Sem o empurrão da minha esposa, para publicar recorrentemente no projeto dela, certamente essa encarnação das Notas Quinzenais teria o mesmo destino que as outras.&lt;/p&gt;

&lt;p&gt;E que bom que ela me convidou para participar. Consegui manter a recorrência de publicações, compartilhando conteúdos interessantes com vocês, e, de quebra, também posso comemorar com ela essa marca maravilhosa de um projeto muito especial.&lt;/p&gt;

&lt;p&gt;Vida longa às Notas Quinzenais e, principalmente, à Trilha de Valor.&lt;/p&gt;

</content>
  
</entry>

  
    <entry>
  <title>A necessidade de gerar renda com conteúdo na internet</title>
  <link href="https://williambrendaw.com/2024/a-necessidade-de-gerar-renda-com-conteudo-na-internet.html"/>
  <updated>2024-05-24T00:00:00+00:00</updated>
  <id>https://williambrendaw.com/2024/a-necessidade-de-gerar-renda-com-conteudo-na-internet.html</id>
  
    <summary>Como a internet nos leva a monetizar conhecimento e como (tentar) sair dessa</summary>
  
  
    <content type="html">&lt;p&gt;Há alguns meses eu estava lendo &lt;a href=&quot;https://buttondown.email/rodrigoghedin&quot;&gt;a newsletter pessoal do Rodrigo Ghedin&lt;/a&gt; (do &lt;a href=&quot;https://manualdousuario.net&quot;&gt;Manual do Usuário&lt;/a&gt;) e descobri por ele que o &lt;a href=&quot;https://nigelgoodman.com.br&quot;&gt;Nigel Goodman&lt;/a&gt;, ótimo roteirista de humor, &lt;a href=&quot;https://nigelgoodman.substack.com&quot;&gt;também tinha uma&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Quando fui dar uma lida &lt;a href=&quot;https://nigelgoodman.substack.com/p/chegou-email-do-nigel-fofoca-criativa&quot;&gt;na edição citada pelo Ghedin&lt;/a&gt;, me deparei com um comentário incrível sobre a gente não precisar se jogar nas coisas para fazer dinheiro, como é via de regra hoje em dia:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;“Esses dias &lt;strong&gt;uma amiga pediu uma indicação de livro sobre roteiro&lt;/strong&gt; e eu mandei pra ela alguns que eu acho que são referências que todo mundo já acabou lendo ou sabe do que se trata. Aí eu fiquei com isso na cabeça &lt;strong&gt;e, como eu vejo muita gente anunciando curso por aí&lt;/strong&gt; eu pensei: &lt;strong&gt;vou lançar um curso de escrita criativa&lt;/strong&gt; com tudo que eu aprendi em uns 13 anos de experiência? &lt;strong&gt;Não&lt;/strong&gt;. &lt;strong&gt;Vou escrever alguns parágrafos&lt;/strong&gt; nessa newsletter &lt;strong&gt;e vai ser isso&lt;/strong&gt;.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Eu já sofri muito com isso de querer fazer conteúdo em doses cavalares para compartilhar o que eu sei. Ou até tentar criar algo pensando já no viés para monetizar, já que todo mundo faz isso, né? Só que nunca deu certo. O foco fica em ganhar grana, mas não em compartilhar conhecimento.&lt;/p&gt;

&lt;p&gt;Sem contar com o cansaço e a desmotivação que vem com a complexidade de ter que colocar isso tudo na internet. No fim fica apenas na ideia.&lt;/p&gt;

&lt;p&gt;Mesmo que seja necessário disciplina para criar de forma constante, algo que sigo trabalhando para compartilhar aqui, no fim é melhor escrever pouco como um breve comentário. Não precisa ser algo extremamente detalhado.&lt;/p&gt;

&lt;p&gt;O que importa no final é a mensagem. E tentar compartilhar na frequência que melhor se encaixar no teu dia a dia. Essa mentalidade está fazendo com que eu consiga publicar de uma forma mais recorrente, como esse artigo.&lt;/p&gt;

&lt;p&gt;Por hoje é só. Espero que tenha gostado. Nos vemos por aí!&lt;/p&gt;
</content>
  
</entry>

  
    <entry>
  <title>Uma tragédia anunciada</title>
  <link href="https://williambrendaw.com/2024/uma-tragedia-anunciada.html"/>
  <updated>2024-05-10T00:00:00+00:00</updated>
  <id>https://williambrendaw.com/2024/uma-tragedia-anunciada.html</id>
  
    <summary>O preço do descaso em prevenção e manutenção para enchentes no meu estado</summary>
  
  
    <content type="html">&lt;p&gt;Hoje seria mais um dia para publicar algo técnico aqui no site. Só que desde a sexta-feira passada (03/04), o estado do Rio Grande do Sul e sua capital, onde moro, estão vivendo uma calamidade sem precedentes.&lt;/p&gt;

&lt;p&gt;Nunca imaginei que viveria mais um evento histórico negativo após a pandemia. E de forma tão rápida. Minha esposa e eu estamos bem, dentro do possível – com o apartamento intacto, com luz e internet, mas racionando água e comida.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/articles/centro-de-porto-alegre-alagado.webp&quot; alt=&quot;Centro histórico de Porto Alegre completamente alagado pelas enchentes na bacia hidrográfica do Guaíba&quot; /&gt;
&lt;span class=&quot;image-description&quot;&gt;Centro histórico de Porto Alegre completamente alagada pelas enchentes na bacia hidrográfica do Guaíba.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Porém, em muitas partes da cidade, incluindo a distância de 3 quadras daqui de casa, bairros estão completamente debaixo d’água. Muitas pessoas estão deslocadas de suas casas e vivendo em abrigos.&lt;/p&gt;

&lt;p&gt;Sem contar na destruição da infraestrutura da cidade. Nosso aeroporto e rodoviária estão debaixo d’água. Estradas estão destruídas e o único caminho possível virou um corredor humanitário para recebimento de ajuda dos outros lugares. Barulhos de ambulâncias, helicópteros e lanchas são ouvidos durante todo o dia.&lt;/p&gt;

&lt;p&gt;É literalmente um cenário de guerra.&lt;/p&gt;

&lt;p&gt;E poderia ser evitado se tivesse um planejamento e prevenção por parte do governo do estado e da prefeitura da capital. O sucateamento da máquina pública cobrou o seu preço.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/articles/centro-de-rio-grande-alagado.webp&quot; alt=&quot;Mercado público da cidade de Rio Grande, no sul do estado, alagado pelo início das enchentes na Laguna dos Patos&quot; /&gt;
&lt;span class=&quot;image-description&quot;&gt;Mercado público da cidade de Rio Grande, no sul do estado, alagado pelo início das enchentes na Laguna dos Patos.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;De qualquer forma, estamos ajudando como podemos e agradecemos muito pela sensibilidade daqueles que estão apoiando da forma que conseguem, seja onde estiver.&lt;/p&gt;

&lt;p&gt;Espero que você que está lendo isso esteja bem. E se puder ajudar, faça uma doação para a cozinha solidária, pois estão fazendo um trabalho incrível nesse momento terrível. Ela pode ser feita por pix para &lt;a href=&quot;mailto:rededeabastecimento@gmail.com&quot;&gt;rededeabastecimento@gmail.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A cabeça não consegue focar em outra coisa além de sobreviver, ajudar e esperar que as coisas melhorem por aqui.&lt;/p&gt;

&lt;p&gt;Espero que você e sua família estejam bem. Se cuidem.&lt;/p&gt;
</content>
  
</entry>

  
    <entry>
  <title>Passo a passo de como compilar localmente o Godot no macOS</title>
  <link href="https://williambrendaw.com/2024/passo-a-passo-como-compilar-localmente-godot-macos.html"/>
  <updated>2024-04-26T00:00:00+00:00</updated>
  <id>https://williambrendaw.com/2024/passo-a-passo-como-compilar-localmente-godot-macos.html</id>
  
    <summary>Gere o seu próprio editor do Godot a partir do código-fonte do projeto</summary>
  
  
    <content type="html">&lt;p&gt;Estou voltando a desenvolver o jogo Small River &lt;a href=&quot;https://gasworksstudio.net&quot;&gt;pelo meu estúdio&lt;/a&gt; e tive que atualizar o código do Godot para poder adicionar o &lt;a href=&quot;https://github.com/godotengine/godot/pull/80709&quot;&gt;recurso de reconhecer controles sem fio no macOS&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Essa atualização é feita através de uma customização antes da compilação, porque a versão estável ainda não possui o recurso dos controles.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;Essa parte de gerenciar o código customizado do Godot ficará para um próximo artigo, onde explicarei como que eu mesclo num repositório local o conteúdo estável com alterações propostas por pull requests no projeto, mas que ainda não subiram para a versão oficial.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Como preciso fazer esse procedimento periodicamente, acabei virando especialista em como compilar o código-fonte do Godot e ter o editor com as funcionalidades que me atendem.&lt;/p&gt;

&lt;p&gt;Por isso, compartilharei aqui como funciona esse processo de gerar o editor na mão, tal qual faziam os australopitecos.&lt;/p&gt;

&lt;h2 id=&quot;instalação-do-ferramental-para-a-compilação&quot;&gt;Instalação do ferramental para a compilação&lt;/h2&gt;

&lt;h3 id=&quot;instalações-manuais&quot;&gt;Instalações manuais&lt;/h3&gt;

&lt;p&gt;Antes de mais nada, é necessário instalar 3 programas que vão te ajudar a gerar o executável do Godot. São eles:&lt;/p&gt;

&lt;h4 id=&quot;home-brew&quot;&gt;Home Brew&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Porque é necessário:&lt;/strong&gt; para instalar outros programas que ficam mais fáceis de gerenciar por ele.&lt;/p&gt;

&lt;p&gt;Comando de instalação (também &lt;a href=&quot;https://brew.sh&quot;&gt;presente no site do projeto&lt;/a&gt;):&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;/bin/bash &lt;span class=&quot;nt&quot;&gt;-c&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;curl &lt;span class=&quot;nt&quot;&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;xcode&quot;&gt;Xcode&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Porque é necessário:&lt;/strong&gt; para instalar ferramentas de compilação do macOS.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;&lt;strong&gt;Nota:&lt;/strong&gt; Mesmo que a instalação do Home Brew também tente instalar o Command Line Tools for Xcode, que traz de forma mais enxuta as ferramentas de compilação do macOS, por algum motivo no meu MacBook Pro não funcionou assim. Por isso ensino aqui como instalar o Xcode, para quem precisar contornar esse problema.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Apesar de existir a opção de instalar o Xcode pela App Store, sugiro fortemente &lt;a href=&quot;https://developer.apple.com/download/applications/&quot;&gt;fazer o download pela plataforma Apple Developer&lt;/a&gt;. Busque a versão mais atual e estável, para não arriscar ter algum comando de compilação quebrado na versão instável do Xcode.&lt;/p&gt;

&lt;p&gt;Para instalar é muito fácil. Basta fazer o download do arquivo &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Xcode_XX.X.xip&lt;/code&gt;, depois clicar duas vezes nele para começar a descompactar o pacote &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Xcode.app&lt;/code&gt; e mover o pacote extraído para a pasta &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/Applications&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Após mover para a pasta &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/Applications&lt;/code&gt;, execute o pacote uma vez para finalizar as configurações do Xcode.&lt;/p&gt;

&lt;h4 id=&quot;vulkan-sdk&quot;&gt;Vulkan SDK&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Porque é necessário:&lt;/strong&gt; para dar suporte a biblioteca gráfica Vulkan no editor, que não vem nativamente no macOS.&lt;/p&gt;

&lt;p&gt;O processo de instalação dele é mais complicado, mas nem tanto. Após &lt;a href=&quot;https://sdk.lunarg.com/sdk/download/latest/mac/vulkan-sdk.dmg&quot;&gt;fazer o download do arquivo &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vulkan-sdk.dmg&lt;/code&gt; do site da biblioteca&lt;/a&gt;, monte a imagem no sistema clicando duas vezes no arquivo e execute o arquivo interno para iniciar o processo de instalação como se fosse um executável do Windows.&lt;/p&gt;

&lt;p&gt;Quando pedir o caminho para instalar, escolha o &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/Library/Graphics/VulkanSDK/1.3.268.1&lt;/code&gt; para seguir o padrão UNIX do sistema (lembrando que nesse exemplo o &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1.3.268.1&lt;/code&gt; é a versão que instalei no meu sistema. Esse número será conforme a versão disponível no momento da sua instalação).&lt;/p&gt;

&lt;p&gt;Depois siga o processo até o final. Provavelmente pedirá para reiniciar o sistema e habilitar alguns serviços gráficos para rodar o Vulkan SDK de forma tranquila.&lt;/p&gt;

&lt;h3 id=&quot;instalações-pelo-home-brew&quot;&gt;Instalações pelo Home Brew&lt;/h3&gt;

&lt;p&gt;Os outros 3 programas podem ser instalados pelo Home Brew, sem toda a complexidade dos programas anteriores. São eles:&lt;/p&gt;

&lt;h4 id=&quot;git&quot;&gt;Git&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Porque é necessário:&lt;/strong&gt; para poder clonar o repositório do Godot e compilar o mesmo.&lt;/p&gt;

&lt;p&gt;Para instalar, basta rodar o comando abaixo no terminal:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;brew &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;git
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h4 id=&quot;python-36&quot;&gt;Python 3.6&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Porque é necessário:&lt;/strong&gt; para compilar o editor.&lt;/p&gt;

&lt;p&gt;Mais um que é muito fácil de instalar, basta rodar o comando abaixo no terminal:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;brew &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;python
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h4 id=&quot;scons&quot;&gt;Scons&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Porque é necessário:&lt;/strong&gt; para orquestrar as chamadas necessárias para compilar o editor.&lt;/p&gt;

&lt;p&gt;Por fim, basta rodar o comando abaixo no terminal para instalar:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;brew &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;scons
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;compilação-do-editor&quot;&gt;Compilação do editor&lt;/h2&gt;

&lt;p&gt;Após ter instalado tudo o que é necessário para compilar, chegou a hora de botar a mão na massa.&lt;/p&gt;

&lt;h3 id=&quot;clonar-o-repositório-do-godot&quot;&gt;Clonar o repositório do Godot&lt;/h3&gt;

&lt;p&gt;Para começar, precisamos copiar o código do Godot para o computador.&lt;/p&gt;

&lt;p&gt;Abra o terminal, entre na pasta onde ficam os teus projetos (no meu caso seria a pasta &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/Developer/Projetos&lt;/code&gt;) e rode o comando &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git clone https://github.com/godotengine/godot&lt;/code&gt;. Após finalizar o clone, entre na pasta do repositório.&lt;/p&gt;

&lt;p&gt;A ordem dos comandos ficaria assim:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; ~/Developer/Projetos
git clone https://github.com/godotengine/godot
&lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;godot
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;compilar-o-editor-do-godot&quot;&gt;Compilar o editor do Godot&lt;/h3&gt;

&lt;p&gt;Agora chegou a hora da verdade. Vamos colocar o &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;scons&lt;/code&gt; (e a tua máquina) para trabalhar.&lt;/p&gt;

&lt;h4 id=&quot;compilar-para-processadores-apple-silicon-m1-m2-e-m3&quot;&gt;Compilar para processadores Apple Silicon (M1, M2 e M3)&lt;/h4&gt;

&lt;p&gt;Só rodar o comando abaixo e ir passar um café para esperar concluir a compilação:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;scons &lt;span class=&quot;nb&quot;&gt;arch&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;arm64 &lt;span class=&quot;nv&quot;&gt;platform&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;macos &lt;span class=&quot;nv&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;editor &lt;span class=&quot;nv&quot;&gt;use_llvm&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;no &lt;span class=&quot;nt&quot;&gt;-j4&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;vulkan_sdk_path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/Library/Graphics/VulkanSDK/1.3.268.1
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Ao fim da execução, a compilação vai gerar um binário no caminho &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bin/godot.macos.editor.arm64&lt;/code&gt;.&lt;/p&gt;

&lt;h4 id=&quot;compilar-para-processadores-intel&quot;&gt;Compilar para processadores Intel&lt;/h4&gt;

&lt;p&gt;Só rodar o comando abaixo e ir fazer um chá para esperar concluir a compilação:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;scons &lt;span class=&quot;nb&quot;&gt;arch&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;x86_64 &lt;span class=&quot;nv&quot;&gt;platform&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;macos &lt;span class=&quot;nv&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;editor &lt;span class=&quot;nv&quot;&gt;use_llvm&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;no &lt;span class=&quot;nt&quot;&gt;-j4&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;vulkan_sdk_path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/Library/Graphics/VulkanSDK/1.3.268.1
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Ao fim da execução, a compilação vai gerar um binário no caminho &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bin/godot.macos.editor.x86_64&lt;/code&gt;.&lt;/p&gt;

&lt;h4 id=&quot;empacotar-binário-universal-para-processadores&quot;&gt;Empacotar binário universal para processadores&lt;/h4&gt;

&lt;p&gt;Caso você queira gerar um binário universal (ou seja, que rode tanto nos processadores Apple Silicon quanto nos Intel), basta rodar os dois comandos anteriores, em ordem, para gerar os dois binários para cada processador, e depois disso rodar o comando abaixo:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;lipo &lt;span class=&quot;nt&quot;&gt;-create&lt;/span&gt; bin/godot.macos.editor.x86_64 bin/godot.macos.editor.arm64 &lt;span class=&quot;nt&quot;&gt;-output&lt;/span&gt; bin/godot.macos.editor.universal&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;gerar-o-pacote-godotapp-a-partir-do-binário-compilado&quot;&gt;Gerar o pacote &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Godot.app&lt;/code&gt; a partir do binário compilado&lt;/h2&gt;

&lt;p&gt;Mesmo com o binário compilado, ele só funciona sendo chamado pelo terminal. Para simplificar o acesso do programa, é possível gerar o pacote &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Godot.app&lt;/code&gt;, podendo mover o mesmo para a pasta &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/Applications&lt;/code&gt;. Assim, o programa fica disponível pelo Spotlight e também pelo Launchpad.&lt;/p&gt;

&lt;p&gt;A mágica acontece após rodar os comandos abaixo:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
4
5
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nb&quot;&gt;cp&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-r&lt;/span&gt; misc/dist/macos_tools.app ./Godot.app
&lt;span class=&quot;nb&quot;&gt;mkdir&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-p&lt;/span&gt; Godot.app/Contents/MacOS
&lt;span class=&quot;nb&quot;&gt;cp &lt;/span&gt;bin/godot.macos.editor.universal Godot.app/Contents/MacOS/Godot
&lt;span class=&quot;nb&quot;&gt;chmod&lt;/span&gt; +x Godot.app/Contents/MacOS/Godot
codesign &lt;span class=&quot;nt&quot;&gt;--force&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--timestamp&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--options&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;runtime &lt;span class=&quot;nt&quot;&gt;--entitlements&lt;/span&gt; misc/dist/macos/editor.entitlements &lt;span class=&quot;nt&quot;&gt;-s&lt;/span&gt; - Godot.app
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;E é isso! Agora tu conseguiu fazer a compilação do Godot “no braço”. Parabéns!&lt;/p&gt;

&lt;p&gt;Espero que tenha gostado. Nos vemos por aí!&lt;/p&gt;

&lt;h2 id=&quot;referências&quot;&gt;Referências:&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.godotengine.org/en/latest/contributing/development/compiling/&quot;&gt;Building from source - Godot Documentation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.godotengine.org/en/latest/contributing/development/compiling/compiling_for_macos.html&quot;&gt;Compiling for macOS - Godot Documentation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.godotengine.org/en/latest/contributing/development/compiling/introduction_to_the_buildsystem.html&quot;&gt;Introduction to the buildsystem - Godot Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
  
</entry>

  
    <entry>
  <title>Como abrir um link com um &amp;lt;button&amp;gt; HTML</title>
  <link href="https://williambrendaw.com/2024/como-abrir-um-link-com-button-html.html"/>
  <updated>2024-04-12T00:00:00+00:00</updated>
  <id>https://williambrendaw.com/2024/como-abrir-um-link-com-button-html.html</id>
  
    <summary>Dica simples e rápida de como criar um &amp;lt;button&amp;gt; clicável</summary>
  
  
    <content type="html">&lt;p&gt;Tive essa dúvida para criar um botão (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;button&amp;gt;&lt;/code&gt;) clicável numa nova seção na página principal do &lt;a href=&quot;https://ingridmachado.net&quot;&gt;site da minha esposa&lt;/a&gt;. Encontrei duas formas de fazer: abrindo na mesma aba ou criando uma aba nova.&lt;/p&gt;

&lt;h2 id=&quot;abrindo-na-mesma-aba&quot;&gt;Abrindo na mesma aba&lt;/h2&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;button&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;onclick=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;location.href=&apos;https://williambrendaw.com&apos;&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;Acesse meu site&lt;span class=&quot;nt&quot;&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;O pulo do gato está no atributo &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;onclick&lt;/code&gt;, onde se adiciona um pequeno código JavaScript chamado &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;location.href&lt;/code&gt; que recebe um parâmetro do site que tu quer abrir na aba atual.&lt;/p&gt;

&lt;h2 id=&quot;abrindo-numa-nova-aba&quot;&gt;Abrindo numa nova aba&lt;/h2&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;button&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;onclick=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;window.open(&apos;https://williambrendaw.com&apos;,&apos;_blank&apos;)&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;Acesse meu site&lt;span class=&quot;nt&quot;&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;O truque segue sendo no atributo &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;onclick&lt;/code&gt;, onde se adiciona outro pequeno código JavaScript chamado &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;window.open&lt;/code&gt; que recebe dois parâmetros: o primeiro com o site que tu quer abrir; e o segundo para sinalizar que o site será aberto numa nova aba.&lt;/p&gt;

&lt;p&gt;Espero que tenha gostado. Nos vemos por aí!&lt;/p&gt;
</content>
  
</entry>

  
    <entry>
  <title>Como planejo e organizo as tarefas de projetos</title>
  <link href="https://williambrendaw.com/2024/planejamento-de-tarefas.html"/>
  <updated>2024-03-29T00:00:00+00:00</updated>
  <id>https://williambrendaw.com/2024/planejamento-de-tarefas.html</id>
  
    <summary>Minha estratégia para planejar e organizar as tarefas que preciso fazer</summary>
  
  
    <content type="html">&lt;p&gt;Ao &lt;a href=&quot;/2024/estamos-em-obras&quot;&gt;fazer as “obras” do site&lt;/a&gt;, reparei que involuntariamente acabo seguindo os mesmos passos para realizar tarefas em projetos, sejam elas pessoais ou profissionais.&lt;/p&gt;

&lt;p&gt;É legal ver que tenho uma estratégia própria, mesmo que provavelmente não seja única, de como me planejar e organizar as tarefas que preciso fazer.&lt;/p&gt;

&lt;p&gt;Por isso compilei esse roteiro sobre como funciona a minha abordagem para fazer as tarefas.&lt;/p&gt;

&lt;h2 id=&quot;listar-tudo-o-que-se-pretende-fazer-no-projeto&quot;&gt;Listar tudo o que se pretende fazer no projeto&lt;/h2&gt;

&lt;p&gt;Começar com algum tipo de rascunho que liste tudo o que se pretende fazer no projeto. &lt;strong&gt;O bom e velho levantamento de requisitos.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Pode ser desenho mesmo. Ou tópicos que expliquem de forma simples as funcionalidades. Os dois combinados são o mundo ideal, mas não é a regra.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Exemplo:&lt;/strong&gt; Página principal: Cabeçalho com os itens X, Y e Z; no corpo apresente a foto do autor com uma descrição sobre ele; uma lista dos últimos artigos do site; rodapé com o copyright e nome do autor.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;criar-um-roteiro-a-partir-dos-requisitos-levantados&quot;&gt;Criar um roteiro a partir dos requisitos levantados&lt;/h2&gt;

&lt;p&gt;Após ter esse ponto de partida, agora chegou a parte para criar &lt;strong&gt;uma lista de tarefas&lt;/strong&gt; que destrinche tudo isso. Aqui &lt;strong&gt;com um pouco mais de detalhe, mas sem ser cada &lt;em&gt;bit&lt;/em&gt; explicado&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A ideia é definir um roteiro que ajude no fluxo de execução das tarefas.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Exemplo:&lt;/strong&gt; Criar a página principal: criar a página &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;index.html&lt;/code&gt; com a estrutura básica da página; criar o arquivo &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;style.css&lt;/code&gt; que inicie zerando as regras CSS; implementar o cabeçalho com os itens X, Y e Z, adicionando estilo a essa seção dentro do arquivo &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;style.css&lt;/code&gt;; colocar a foto do autor numa seção abaixo do cabeçalho, adicionando estilo…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;implementação-com-auxílio-de-comentários&quot;&gt;Implementação com auxílio de comentários&lt;/h2&gt;

&lt;p&gt;Com as tarefas &lt;em&gt;destrinchadas&lt;/em&gt;, &lt;strong&gt;agora é partir para a execução&lt;/strong&gt;. Mas caso tenha algum tipo de bloqueio nessa parte, &lt;strong&gt;é possível usar comentários dentro do código como um roteiro&lt;/strong&gt; do que precisa ser feito dentro dele.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Exemplo:&lt;/strong&gt; Considerando a atividade “Criar a página &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;index.html&lt;/code&gt; com a estrutura básica da página”, é possível colocar no código algo assim:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;index.html&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
4
5
6
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;// Primeiro pensar sobre o que seria a estrutura básica de uma página.
// Dá pra pensar como colocar as tags básicas para qualquer página funcionar

// Colocar tags de abertura e fechamento do documento html
// Colocar conteúdo &apos;head&apos;: viewport, title, styles e alguns metas
// Colocar conteúdo &apos;body&apos;: só as tags body por enquanto já serão mais do que suficientes
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;blockquote&gt;
  &lt;p&gt;E na medida que tu fores editar alguma coisa, é só remover o comentário de referência. Fica bem mais fácil e fluido codificar assim.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Esse tipo de abordagem não é nada de novo, mas é o jeito que eu tento abordar as tarefas que preciso fazer. Principalmente quando são os meus projetos pessoais.&lt;/p&gt;

&lt;p&gt;Espero que tenha gostado. Nos vemos por aí!&lt;/p&gt;
</content>
  
</entry>

  
    <entry>
  <title>Estamos em obras</title>
  <link href="https://williambrendaw.com/2024/estamos-em-obras.html"/>
  <updated>2024-03-19T00:00:00+00:00</updated>
  <id>https://williambrendaw.com/2024/estamos-em-obras.html</id>
  
    <summary>Para manter as tradições, estou planejado fazer uma mudança na estrutura do site.</summary>
  
  
    <content type="html">&lt;p&gt;Mais uma vez, para não perder o costume, estou planejando fazer uma mudança na estrutura do site.&lt;/p&gt;

&lt;p&gt;Pelo menos dessa vez as mudanças não serão drásticas, que foquem numa mudança radical de layout. A ideia é fazer ajustes e adições de elementos, mas que mantenham a essência do layout atual.&lt;/p&gt;

&lt;p&gt;Já que não será uma mudança total, estou programando para lançar as modificações aos poucos.&lt;/p&gt;

&lt;p&gt;E como uma boa obra de casa, tem data para começar (agora), mas não tem data para acabar.&lt;/p&gt;
</content>
  
</entry>

  
    <entry>
  <title>O acerto da Apple com o Vision Pro</title>
  <link href="https://williambrendaw.com/2023/vision-pro.html"/>
  <updated>2023-06-13T00:00:00+00:00</updated>
  <id>https://williambrendaw.com/2023/vision-pro.html</id>
  
    <summary>Um pequeno ensaio sobre porque o novo dispositivo de realidade aumentada e virtual da Apple é um melhor caminho para o futuro do que os apresentados até agora para metaversos e afins.</summary>
  
  
    <content type="html">&lt;p&gt;Da mesma forma que apareceram várias &lt;em&gt;Mães Dináhs&lt;/em&gt; sobre como a tal &lt;em&gt;web3&lt;/em&gt;, &lt;em&gt;criptomoedas&lt;/em&gt; e &lt;em&gt;metaverso&lt;/em&gt; iriam vingar, agora também apareceram vários críticos sobre o novo dispositivo da Apple. Ainda mais que o metaverso deu errado (pelo menos no tempo e forma de hoje), com seus dispositivos que nunca deslancharam.&lt;/p&gt;

&lt;p&gt;E eu até entendo o ceticismo para o dispositivo que, num primeiro momento, parece ser mais do mesmo. Só que existe uma gritante diferença em forma e conceito entre ele e os que vieram antes: os anteriores queriam mudar radicalmente o jeito como você trabalha; este busca fazer uma &lt;em&gt;transição&lt;/em&gt; do que você já conhece, só que num ambiente totalmente fascinante.&lt;/p&gt;

&lt;p&gt;Com certeza o valor é absurdamente proibitivo no momento, não parecendo que em algum momento seja levado às massas (pelo menos não tão cedo). E talvez nem precise. Nem toda inovação precisa ser, de fato, revolucionária num nível como foram o celular ou a eletricidade. Basta apenas ser mais uma alternativa do que já estamos usando. Ou o celular matou completamente o uso do computador para trabalhar?&lt;/p&gt;

&lt;p&gt;No fim é bom ver que nós ainda conseguimos inovar, trazer novas formas e alternativas de trabalho, que nos aproximam cada vez mais do futuro vendido pela ficção científica. De forma evolutiva, buscando se adaptar ao que já temos, sem precisar ser de uma jeito &lt;em&gt;disruptivo&lt;/em&gt;.&lt;/p&gt;
</content>
  
</entry>

  
    <entry>
  <title>Começando uma rotina de escrita</title>
  <link href="https://williambrendaw.com/2022/comecando-uma-rotina-de-escrita.html"/>
  <updated>2022-03-04T00:00:00+00:00</updated>
  <id>https://williambrendaw.com/2022/comecando-uma-rotina-de-escrita.html</id>
  
    <summary>Ano novo, rotina nova. Pelo menos agora focando na parte de criar conteúdo a partir da escrita.</summary>
  
  
    <content type="html">&lt;p&gt;A escrita sempre me fascinou. Principalmente em momentos como após ler um livro, ver um filme ou jogar algum jogo que me fez sentir que aquela experiência foi incrível. Sempre fico pensando em como seria interessante conseguir criar algo que causasse esse tipo de impacto nas pessoas. No fim, sempre me deixei levar por outros caminhos (e procrastinações) que acabavam colocando essa possibilidade de lado.&lt;/p&gt;

&lt;p&gt;Trazendo para o contexto técnico, como o meu site, nunca consegui engajar de fato na criação de conteúdo. Já tentei começar a escrever muitas coisas para cá, inclusive pensei em criar vários artigos como um tutorial ou guia para quem queira fazer algo e não sabe como. O problema dessa abordagem é criar toda uma estrutura de documentação que, pra mim, acaba sendo muito maçante e desinteressante de fazer.&lt;/p&gt;

&lt;p&gt;Por tudo isso e motivado pelos começos que o início do ano nos proporciona, decidi que agora seria diferente e me comprometeria a engajar mais na escrita. Então comecei a mudar o meu foco em torno da escrita, seguindo as propostas dos objetivos abaixo.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Escrever o que eu estiver com vontade&lt;/strong&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Criar uma rotina de escrita no meu dia&lt;/strong&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Intercalar entre vários formatos&lt;/strong&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Pensar a escrita como uma maratona e não uma corrida&lt;/strong&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Para o site, focar em textos mais simples, pra não deixar as ideias morrem&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bora ver cada item com mais detalhes.&lt;/p&gt;

&lt;h2 id=&quot;escrever-o-que-eu-estiver-com-vontade&quot;&gt;Escrever o que eu estiver com vontade&lt;/h2&gt;

&lt;p&gt;Já perdi muito tempo para buscar algo “perfeito” para escrever. Ou escolhia algo que seria interessante para se ter no site, mas que não me engajava a tirar do papel. A verdade é que no fim o importante é simplesmente criar. E pra facilitar a criação, é importante conseguir coletar as coisas que te empolgam no momento em que você bater o olho, para depois já sair criando. Por isso, estou usando o app Notas para ir coletando as ideias de escrita e o Scrivener para me auxiliar a dar corpo aos rascunhos e tirar as histórias do papel.&lt;/p&gt;

&lt;h2 id=&quot;criar-uma-rotina-de-escrita-no-meu-dia&quot;&gt;Criar uma rotina de escrita no meu dia&lt;/h2&gt;

&lt;p&gt;A parte mais interessante de escrever é, com o perdão da redundância, escrever. Só que pra fazer isso, é necessário criar o hábito escrita. Assim é possível manter o ritmo de produção e geração de conteúdo. Estou tentando encaixar uma hora de escrita no fim do dia, onde tenho mais disponibilidade de horário na minha rotina.&lt;/p&gt;

&lt;h2 id=&quot;intercalar-entre-vários-formatos&quot;&gt;Intercalar entre vários formatos&lt;/h2&gt;

&lt;p&gt;Sempre fui uma pessoa que se empolga com várias coisas diferentes. Quase todo dia surge uma fagulha que me motiva a começar algo. Por isso, estou tentando canalizar essa motivação de experimentar coisas diferentes para a escrita. Já comecei alguns rascunhos de contos, uma comédia romântica (porque sim), alguns argumentos para possíveis jogos (vai que né) e opiniões sobre tecnologia. Dessa forma, consigo dividir um pouco a escrita entre cada frente, sem deixar que a falta de motivação para determinado conteúdo me deixe parado.&lt;/p&gt;

&lt;h2 id=&quot;pensar-a-escrita-como-uma-maratona-e-não-uma-corrida&quot;&gt;Pensar a escrita como uma maratona e não uma corrida&lt;/h2&gt;

&lt;p&gt;Isso era um dos grandes erros que eu sempre cometi, achar que eu preciso ser uma máquina de escrita e entregar conteúdo perfeito a todo momento. A realidade é que ainda não sou tão bom escritor assim, além de não ter tanto tempo pra escrever. Sem contar que tenho vontade de fazer várias coisas, como já comentei antes.&lt;/p&gt;

&lt;p&gt;Por isso, agora eu estou tentando desencarnar dessa mentalidade e ir no objetivo de escrever aos poucos sobre tudo, dentro da minha hora de escrita (ou também quando abrir uma brecha nos meus horários). Se em algum momento finalizar algo, será ótimo.&lt;/p&gt;

&lt;h2 id=&quot;para-o-site-focar-em-textos-mais-simples-pra-não-deixar-as-ideias-morrem&quot;&gt;Para o site, focar em textos mais simples, pra não deixar as ideias morrem&lt;/h2&gt;

&lt;p&gt;Até já comentei um pouco acima, cometi o erro de projetar a criação de conteúdos grandiosos para o site, com o pensamento de que o conteúdo que estivesse aqui fosse algo relevante como uma wiki. Como você deve ter percebido, nunca deu certo. Nenhuma das séries foram pra frente e eu sempre fiquei com a sensação de nunca conseguir concluir nada por aqui.&lt;/p&gt;

&lt;p&gt;No fim, o que eu percebi é que qualquer conteúdo é relevante, mesmo que não seja uma série ou algo muito elaborado. A partir disso, estou com alguns conteúdos já engatilhados para serem lançados aqui, como pequenas dicas ou coisas que sejam pontualmente relevante. Também penso em trazer pra cá algumas ideias que não caibam num tuíte e sejam bacanas de estarem por aqui.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Não sei se são as melhores estratégias para escrita ou se eu vou conseguir manter essa rotina por muito tempo, mas posso dizer que está sendo bem interessante seguir tudo isso e estou tendo muito mais gosto na escrita do que eu já tive antes.&lt;/p&gt;
</content>
  
</entry>

  
</feed>
