LOLWUT: uma obra de arte em uma equipe de db

O autor é Salvatore Sanfilippo, também conhecido como antirez, um dos principais desenvolvedores do banco de dados Redis, um funcionário do Redis Labs. Artigo publicado em 12 de setembro de 2018

Os últimos dias foram muito estressantes. Um dos argumentos da disputa sobre substituir ou não as palavras usadas no código de replicação Redis foi o seguinte: vale a pena fazer um trabalho que não produz nenhum resultado tecnológico? [Trata-se de substituir os termos "mestre / escravo" na replicação - aprox. por.]

No processo de limpeza de fontes Redis a partir de uma palavra específica, sempre que possível, pensei em escrever código mesmo sem efeitos tecnológicos mensuráveis. Substituir palavras é um trabalho rotineiro demais, é simplesmente irritante, mesmo que ocorram problemas tecnológicos dignos. Mas há outro tipo de código com uma qualidade especial, que eu chamaria de "valor de hack". Pode não resolver nenhum problema, mas ainda é uma tarefa digna. Existem várias razões. Às vezes, o processo de escrever código é útil por si só. Às vezes, idéias tecnicamente avançadas são usadas para resolver um problema não crítico. E às vezes o código é escrito apenas por razões estéticas.

As discussões estúpidas, caóticas e acaloradas dos últimos dias no Twitter levaram à idéia de que agora estamos muito longe dos primeiros hackers dos anos 60. Está se tornando cada vez mais difícil a cada ano discutir tecnologia do ponto de vista de hackers - sem idéias e problemas prontos, onde o objetivo é pura pesquisa. Para todas as "práticas recomendadas" desenvolvidas. Existe um tabu para todas as ideias. Eu digo LOLWUT para este novo mundo, porque não me sinto parte dele, e não é completamente hacker, pelo menos na minha visão. Assim, a ideia era dedicar algum tempo a uma idéia tecnicamente inútil, pesquisar algo a partir dos anos 60.

Imediatamente me lembrei de uma das minhas obras favoritas de arte computacional - o cascalho Schotter de George Nies . O autor escreveu no ALGOL um programa de plotadora que gerava obras de arte usando o caos (números aleatórios). [Figuras gradualmente esbeltas na imagem se tornam cada vez mais caóticas - e vice-versa, o caos é sistematicamente ordenado em uma estrutura organizada, se você girar a imagem 180 ° - aprox. trans.] . Este cascalho é magnífico em sua simplicidade e profundo significado, que o espectador pode entender. Sob a cobertura da calma completa, o caos se esconde profundamente dentro da ordem. Se você virar a foto de cabeça para baixo, ela parecerá com o mar durante uma tempestade. O caos assola a superfície, e nas profundezas do mar permanece calmo.

É possível transformar uma obra de arte em uma equipe de banco de dados? Isso é bastante complicado, porque o Redis é usado principalmente na linha de comando. Atualmente, os consoles são mais sofisticados do que no passado, mas exibir gráficos decentes é difícil. Por outro lado, temos uma enorme vantagem na computação em tempo real - a imagem pode se tornar dinâmica e mudar a cada geração.

Antes de continuar, mostrarei o resultado final:



Embora em uma resolução muito baixa, a idéia original foi preservada. Aqui eu apliquei um truque que muitos programas usam, mostrando várias coisas interessantes em um console de texto. A primeira parte da solução é usar um braille Unicode para gerar uma matriz de pixels com uma resolução mais alta que os caracteres individuais do console. Em particular, para cada símbolo, uma grade de 2 × 8 pixels pode ser feita.

A segunda parte são os parâmetros para a imagem:



Você pode gerar várias versões da imagem alterando o número de quadrados e a resolução de saída. Por fim, queria escrever o código-fonte como um exemplo de programação competente - de uma forma que se pareça mais com um livro com uma descrição detalhada de cada etapa, e não apenas com um gerador de caixa preta. O código está aqui .

A partir do Redis 5, a equipe do LOLWUT se tornará padrão. Em cada nova versão principal, sua funcionalidade mudará completamente. Somente o conjunto de regras permanece inalterado:

  1. Ela não pode fazer nada de útil.
  2. Ele deve funcionar rapidamente para que possa ser chamado com segurança nos servidores em produção.
  3. O resultado deve ser interessante de alguma forma.

Eu escrevi a primeira versão para o Redis 5. Na próxima versão, pedirei a alguém dos desenvolvedores do Redis que queira, caso contrário, eu mesmo escreverei (espero não ter que fazer isso). A equipe do LOLWUT deve nos lembrar que nosso trabalho - programação - existe não apenas para o bem. Inicialmente, tratava-se principalmente de explorar oportunidades . Espero que o LOLWUT também lembre a comunidade Redis de que os computadores são feitos para as pessoas e que você não pode falar estéril, pensando apenas nas implicações tecnológicas. Existem pessoas vivas que usam sistemas que constroem sistemas e assim por diante.

Source: https://habr.com/ru/post/pt423197/


All Articles