Uma Política de Transiência: Uma Filosofia de Uso do Computador de um Programador

2025-05-13

Este artigo detalha os hábitos incomuns de uso do computador de um programador, centrados em uma "política de transiência". Essa filosofia dita que todos os dados devem ser ou deliberadamente permanentes e organizados, ou estritamente temporários, evitando a permanência acidental. Exemplos incluem desativar o histórico persistente do shell, limpar regularmente a área de trabalho da GUI e fechar o navegador com frequência. O autor explica os benefícios, como aumento da eficiência, melhor organização e redução de dados desnecessários. Práticas relacionadas, como gestão de registros corporativos e configuração automatizada do sistema operacional, são discutidas, juntamente com exceções à política, como e-mail e histórico do navegador, que são mantidos permanentemente devido à sua utilidade imprevisível.

Leia mais

A Filosofia das Corrotinas: Reflexões de um Programador

2025-03-27

Este artigo mergulha na filosofia das corrotinas através da lente da jornada pessoal do autor. Desde os primeiros dias simulando corrotinas em C com truques de pré-processador até o advento das corrotinas nativas do C++20, o autor compartilha insights sobre seu uso e vantagens. Uma comparação de corrotinas versus máquinas de estado e threads destaca sua flexibilidade, capacidade de depuração e facilidade de limpeza, particularmente benéficas para tarefas sequenciais como protocolos de rede e processamento de fluxo de dados. O autor explora várias implementações de corrotinas, técnicas de otimização usando filas e pré-filtros e oferece uma visão do futuro das corrotinas.

Leia mais
Desenvolvimento

A Evolução dos Ícones do PuTTY: Do Desenho Manual ao SVG

2025-03-12

Este artigo relata a evolução dos ícones do PuTTY, desde desenhos feitos à mão na década de 1990 até os vetores SVG escaláveis de hoje. O autor inicialmente criou ícones de 32x32 pixels usando o editor de ícones MSVC, limitado pela paleta de 16 cores e pela tecnologia de exibição da época. Com o tempo, para acomodar resoluções mais altas e as necessidades de várias ferramentas, o autor refinou o processo, eventualmente desenvolvendo um script que gera automaticamente ícones em vários tamanhos e formatos. Isso culminou em versões SVG, alcançando verdadeira escalabilidade. A filosofia de design permanece simples e clara, refletindo o estilo 'antigamente confiável' do PuTTY, e continua sendo usada até hoje.

Leia mais
Desenvolvimento Design de Ícones

Repensando rastreadores de bugs: uma separação de preocupações

2025-03-10

Após anos usando vários rastreadores de bugs, o autor identifica uma falha fundamental em sua representação de dados, levando a frustrações recorrentes. Três problemas principais são destacados: um campo unificado de 'Versão de Correção' que confunde fatos e planos; um sistema de dois níveis de Status e Resolução que confunde a realidade do código com intenções futuras; e a confusão entre listas de bugs e listas de tarefas, criando dificuldades para tarefas não relacionadas a bugs. O autor propõe um princípio de 'separação de preocupações', sugerindo uma divisão em tabelas de 'fatos' e 'planos'. A tabela de fatos registra informações objetivas sobre bugs (existência, versão, gravidade), enquanto a tabela de planos acompanha intenções, cronogramas e prioridades subjetivas. Essa separação simplifica o rastreamento de bugs, acomoda melhor diferentes tipos de projetos e até permite a omissão completa da tabela de planos para projetos focados apenas na resolução de bugs.

Leia mais

Sozinho: Um Programador Veterano Rejeita Forjas Git

2025-03-05

O programador veterano Simon Tatham mantém seus projetos de código aberto usando repositórios Git independentes há muito tempo, evitando plataformas populares como GitHub e GitLab. Ele detalha seu raciocínio: confiança - preferindo autocontrole em vez de depender de grandes empresas; eficiência - evitando a sobrecarga de sistemas de forja complexos; experiência do usuário - minimizando o ônus da criação de contas; e autonomia de fluxo de trabalho - priorizando processos de desenvolvimento independentes em vez de restrições da plataforma. Ele prefere envios de patches por e-mail, detalhando os métodos preferidos, incluindo um URL de repositório Git, pacotes Git incrementais e outras abordagens, explicando sua lógica para cada um. Embora reconhecendo a menor transparência de seu método, ele ainda não está convencido de que as vantagens das forjas superam suas desvantagens. Ele conclui expressando abertura a sistemas alternativos que oferecem transparência e gerenciamento leve.

Leia mais
Desenvolvimento Hospedagem de Código

Um mergulho profundo no XOR: Da lógica booleana à criptografia

2025-02-18

Este artigo mergulha no aparentemente simples operador XOR (OU exclusivo) na ciência da computação. Começando com XOR na lógica booleana, ele avança para operações bit a bit em inteiros e explora as aplicações do XOR em criptografia, gráficos de pixels, teoria de jogos e campos finitos. O autor usa storytelling envolvente e inúmeros exemplos para explicar as propriedades e os usos do XOR, como seu papel como um método de criptografia simples em criptografia, desenho e apagamento reversíveis em gráficos de pixels e determinação de estratégias ótimas no jogo Nim. Finalmente, o artigo conecta o XOR a conceitos matemáticos como a diferença simétrica de conjuntos, grupos de expoente 2, Nim-sum, campo finito GF(2) e somas de verificação CRC, revelando os fundamentos matemáticos mais profundos e as amplas aplicações do operador XOR.

Leia mais
Desenvolvimento