Links Comentados de 2020-06-20

SIGSEGV, Conferência de ActivityPub, Nomes de Branches no Git, O Eco-Sistema do Rust, Apredendo Rust com Linha de Comando, Problemas de Design, SCP.

Why is there a "V" in SIGSEGV Segmentation Fault?

Um pouco de história dos sistemas operacionais baseados em UNIX/POSIX -- e algo que eu nunca me preocupei realmente, principalmente considerando os nomes das outras interrupções e alguns comandos do sistema (creat, por exemplo).

ActivityPub Conference 2020

Eu sei que ainda é cedo para conversar sobre isso -- o "call for papers" acabou de abrir -- mas como fã do que o ActivityPub se propõe a solucionar, eu tenho que compartilhar: Uma conferência baseada na discussão do protocolo e as ferramentas (bom, eu acho que é sobre isso, de qualquer forma).

Fiquem ligados para a lista de talks no futuro.

On Git branch naming

A troca do nome do branch principal do Git para algo que não seja "master" tem dado alguma discussão por aí, mesmo com grandes representantes de Git (Github, por exemplo) já terem anunciado que o nome vai mudar em novos repositórios.

Existe sim uma questão sobre o significado do nome e o que ele representa para um grupo significativo da população do mundo, mas o que o post mostra é que mesmo ignorando isso, o nome "master" faz sentido na arquitetura do Git; ele é baseado no nome utilizado pelo BitKeeper, que tinha uma arquitetura mestre/servidor, que o Git não copiou.

E sim, eu concordo com todas as repostas apresentadas. E mais: Se é uma mudança simples, não vai quebrar nada, e vai fazer com que grupos oprimidos (no passado ou presente) não se sintam ofendidos, por que não?

Mas tem mais um ponto: Git é distribuído, certo? Com isso, eu quero dizer que não existe um servidor principal; toda instalação do Git é o principal de si mesmo. O mesmo acontece com os branches: Todo branch é uma cópia auto contida e você não precisa colocar todas elas no mesmo balaio em algum ponto, por exemplo, fazendo merge para o branch principal, porque não existe um branch principal. É só um nome e ele não tem nenhuma funcionalidade especial comparado com outros branches.

Understanding the Rust Ecosystem

Eu tenho falado que "linguagens não existem em um vácuo", e com isso eu quero dizer que você não pode focar somente na linguagem ou numa parte relacionada a ela, mas no todo; como é o eco-sistema dessa coisa?

E Rust sempre me pareceu um sistema vibrante, com todas as suas esquisitices e legalzices. E esse post mostra boa parte do que existe no sistema, de plataformas, passando por forums, meetups, empresas que usam a linguagem e indo até as ferramentas mais famosas.

Diving into Rust with a CLI

Falando em Rust, Kevin K escreveu esse post sobre criar uma ferramenta de linha de comando para baixar as tirinhas do XKCD. Mas ao invés de fazer isso da forma mais simples possível para mostrar a linguagem, ele usou as bibliotecas mais conhecidas para pontos específicos (explicando porque usou as mesmas) e mostrando uma aplicação final completa.

Eu estou escrevendo uma outra ferramenta de linha de comando para aprender mais sobre Rust e não chega nem de perto com o resultado apresentado aqui.

Stop Blaming People: It’s a Design Problem

Programadores são famosos por não conseguir desenhar um botão de forma correta ou fazer com que seja extremamente complicado usar o maldito botão -- ou, em piores casos, construindo uma interface com tantas opções que é praticamente impossível usar a aplicação.

Mas não é só no mundo do software que essas coisas acontecem: O incêndio da Catedral de Notre Dame poderia ter sido evitado se a interface não tivesse um design indireto; o alarme de míssil balístico no Havaí não teria acontecido se a interface para o alarme não fosse simplório. E assim por diante.

Algumas vezes é preciso pensar um pouco mais sobre como o serviço vai ser usado ao invés de deixar as coisas complexas (ou muito simplórias).

SCP - Familiar, Simple, Insecure, and Slow

Que o SCP era lento eu já sabia, mas não sabia o quanto. O que me impressionou do post foi essa linha aqui:

tar cf - /tmp/big_folder | ssh server 'tar xC /tmp/ -f -'

Basicamente, usando o tar para pegar o conteúdo de vários arquivos e transformar numa sequência de bytes, enviar pelo stdout para o ssh e, de lá, rodar o tar para desfazer a sequencia de bytes (transformando de volta em arquivos separados). Curioso, e potencialmente 4x mais rápido que copiar os arquivos diretamente por scp.