- O autor, que desenvolveu o editor de código pessoal Boo, explica por que pausou o projeto por um tempo para criar uma nova linguagem de programação
- Boo é um editor baseado em Rust com navegação por teclado centrada no humano e um sistema substituto ao LSP, voltado para uso pessoal mais do que para comercialização
- Ele considera que processos repetitivos de desenvolvimento reduzem a criatividade e valoriza o prazer de criar software que inspira
- Usando montagem com blocos de Lego e The Legend of Zelda: Breath of the Wild como exemplos, enfatiza a importância de criações memoráveis
- Em vez de seguir fórmulas de sucesso, mantém uma filosofia de desenvolvimento centrada nos próprios interesses e no aprendizado, com planos de reescrever o Boo no futuro usando a linguagem que está criando
Projeto Boo e motivação de desenvolvimento
- Boo é um projeto que o autor criou como um editor de código para si mesmo, com foco na utilidade pessoal mais do que no sucesso popular
- Boo conta com um recurso de navegação humano-teclado e usa um sistema mais rápido e menos pesado para o sistema operacional no lugar do LSP (Language Server Protocol)
- Atualmente funciona bem o bastante para ser usado no trabalho do dia a dia, mas não há planos de distribuí-lo como código aberto
- Tanto o Boo quanto o Rio Terminal foram escritos em Rust e têm estrutura e processo de distribuição semelhantes
- Essa semelhança passou a parecer um trabalho repetitivo, reduzindo o prazer de desenvolver
Relação entre criação e inspiração
- Usando a brincadeira com blocos de Lego como exemplo, ele explica que a liberdade de criar uma forma diferente a cada vez é o prazer da criação
- Em vez de reutilizar repetidamente as mesmas peças, o aspecto mais interessante é o processo de adicionar elementos externos para gerar novos resultados
- Quanto mais repetitiva a programação se torna, menor a chance de surgir uma criação com efeito “uau”
- Ele enfatiza que é preciso estar inspirado para criar um software que inspire
Exemplos de software memorável
- Usando The Legend of Zelda: Breath of the Wild como exemplo, ele menciona um nível de acabamento capaz de levar até pessoas que não jogavam videogame a comprar um console
- Destaca a força de uma obra que oferece uma experiência que permanece na memória por muito tempo mesmo depois de jogar
- Ele explica que um software feito com esse nível de cuidado deixa uma impressão emocional nas pessoas
Pausa no Boo e desenvolvimento de uma nova linguagem
- Boo é um projeto de hobby, não voltado a negócios, sem receita ou prazo final
- Também não há intenção de criar um grande projeto como o VS Code, e ele não força o andamento do trabalho
- Para retomar o projeto quando a inspiração voltar, ele colocou o Boo em pausa temporária e agora está desenvolvendo sua própria linguagem de programação
- No longo prazo, planeja reescrever o Boo nessa linguagem
Filosofia e atitude de desenvolvimento
- Desenvolver uma nova linguagem é muito trabalho, mas o autor encara isso como um processo de aprendizado prazeroso
- Ele amplia seu entendimento sobre binários e compiladores enquanto avança no próprio ritmo
- Em vez de seguir fórmulas de sucesso ou conselhos externos, continua desenvolvendo com base no próprio modo de pensar e nos próprios interesses
- Este texto também foi escrito usando o Boo
1 comentários
Opiniões no Hacker News
Ao ler o relato de alguém que acordou hoje, tomou café e ficou com a tarde livre porque a família foi dormir, fiquei me perguntando como exatamente os fusos horários deles funcionam. Cheguei a imaginar que talvez fosse uma família que dorme à tarde, ou alguém que acorda à noite para começar o dia
A frase “este editor existe para me divertir” pareceu revigorante. Hoje há uma pressão para que todo projeto paralelo evolua para open source ou SaaS, e isso muitas vezes acaba matando a criatividade. Projetos experimentais como Boo ou Rio parecem nascer justamente dessa liberdade
A frase “fiz isso para mim mesmo” é o modo de trabalhar de muitos artistas. Tolkien também era assim, e a maioria cria para si primeiro e só depois mostra ao mundo. Mas em geral ninguém se importa, ou a obra só recebe atenção depois da morte do autor. E tudo bem. O importante é o instinto humano de expressar a imaginação para fora
Quando a programação fica repetitiva, o fator “uau” diminui. Mas há exceções, como projetos tipo yt-dlp que suportam uma enorme variedade de sites. Criar incontáveis parsers de dados é entediante, mas no fim isso produz a sensação de “funciona em qualquer lugar”
Eu faço software que faz as pessoas sentirem emoções — principalmente raiva. No fim, só existem dois tipos de software: os que são ignorados e os que são usados a ponto de as pessoas reclamarem deles
Emacs e Emacspeak me despertam emoções enormes. Parece que o sistema inteiro é um único manual, e basta apertar C-h m para todos os comandos aparecerem na hora. Não há nada escondido, nem necessidade de ficar fuçando documentação em HTML. Se algo não funciona, eu corrijo com o Codex e faço acontecer do jeito que eu quero
No ideal, o desenvolvimento de software deve ser tratado como artesanato (craft). Assim como a marcenaria, pode ser útil e ao mesmo tempo virar arte. Mas muitos projetos tratam desenvolvedores como operários de fábrica. O problema é uma cultura que valoriza quantidade acima de qualidade.
Ao mesmo tempo, também não é prático ver software apenas como arte. O objetivo do código não é ser admirado, e sim funcionar. Ainda assim, é uma pena que a expressão “software feito com artesanato” soe estranha
Até FAANGs como Meta e Google já fizeram software que faz as pessoas sentirem emoções — raiva, depressão e às vezes até alegria. Mas isso mostra como uma tecnologia iniciada com boas intenções pode ser deturpada. Como diz a frase, “o caminho para o inferno é pavimentado com boas intenções”: muitas vezes se busca o bem e se produz o mal.
Citando Knuth, deixar “milhares de cientistas da computação fazerem livremente o que querem” é o motor do progresso. Era assim no Bell Labs, e a liberdade de explorar é importante.
Hoje há obsessão por otimização, mas pouca habilidade matemática, e acabamos virando uma sociedade que parou de explorar. Acho que é por isso que o progresso desacelerou
É um hábito que aprendi com Casey Muratori e Jonathan Blow, e eu também gosto de criar meu pequeno mundo particular. São projetos em que eu sou o único usuário e o único público. Um espaço de prazer puro, sem prazo, sem pedidos, sem runtime
Hoje em dia, a maior parte do software me provoca emoções fortes
node_modules, fico irritado. E quando vejo apps baseados em Electron, penso: “onde foi que erramos?”. Também detesto colocar UI de mobile no desktop