Quick
index
main
eev
eepitch
maths
angg
blogme
dednat6
littlelangs
PURO
(C2,C3,C4,
 λ,ES,
 GA,MD,
 Caepro,
 textos,
 Chapa 1)

emacs
lua
(la)tex
maxima
git
agda
forth
squeak
icon
tcl
tikz
fvwm
debian
irc
contact

Anotações executáveis - oficina no CAEPRO, 2022

(Título alternativo: Emacs e Software Livre com a parceria do CAEPRO, mar/2022)

Resumo: a oficina aconteceu nos dias 8 e 10/março de 2022, duas horas em cada dia. Só sete pessoas se inscreveram - contando com o Bruno Macedo, que usa Emacs e eev há um tempão e que resolveu participar pra assistir e ajudar - e no primeiro dia as pessoas-que-não-são-o-Bruno-Macedo não participaram quase nada. Só duas "outras pessoas" - o Daniel e o Outro Bruno - falaram algo no canal de Telegram da oficina, e elas falaram só umas poucas frases que davam a entender que elas estavam tentando ler a documentação, mas elas não perguntaram nada. No meio da primeira sessão o Daniel disse que ia ter que sair pra levar o irmão dele num curso, e só no final da primeira sessão e depois de insistir muito eu consegui que o Outro Bruno compartilhasse as anotações dele - e aí eu vi que se ele me tivesse me mostrado aquilo antes eu teria resolvido os problemas dele num instante e ele teria economizado pelo menos uma hora e meia. Eu fiquei muito frustrado e muito puto, e algumas horas depois da primeira sessão eu mandei isso aqui pro canal do Telegram da oficina:

Gente, talvez eu só dê a primeira meia hora da oficina na quinta e cancele o resto. Motivo: mau humor. Deixa eu dar uma explicação muito resumida.

Imagino que vocês já tenham tentado aprender coisas em que a comunidade era como a do segundo comentário daqui: https://news.ycombinator.com/item?id=30310699

E imagino que você já tenham em algum momento odiado isso e pensando em procurar comunidades que não fossem desse jeito.

Toda vez que as pessoas acham que têm que ler 2000 páginas antes de me fazer um comentário ou uma pergunta eu fico achando que estão me tratando com uma dessas pessoas arrogantes metidas a gênios que ficam esfregando no nariz dos outros como elas sabem coisas complicadíssimas e os outros não.

Então o grande tema da quinta vai ser o quanto de emacs, eev e anotações executáveis vocês conseguem aprender em 30 minutos.

Espero que funcione. Espero que vocês consigam se pôr no meu lugar e espero que algum dia quando eu precisar de ajuda em algo que eu acho difícil - tipo Python =P - vocês encontrem o melhor jeito de me ajudar com as minhas dúvidas em 5 ou 10 minutos ao invés de me dizerem pra ler 2000 páginas. =)

Acho que o meu esporro funcionou, porque na segunda sessão o Outro Bruno passou a comentar e perguntar tudo, e aí em poucos minutos a gente resolveu todos os problemas técnicos dele... e eu consegui descobrir quais partes dos tutoriais iriam interessar mais a ele, e a gente se concentrou nessas partes. No fim da segunda sessão ele tinha chegado até o fim da seção 6 do tutorial de Emacs Lisp e entendido tudo exceto o "&optional" e o "&rest", e com isso ele já conseguia entender o básico do código fonte do eev, que é cheio de testes fáceis de executar, e já conseguia rodar bloquinhos de código como o do quarto thumbnail daqui (o que tem a figura em 3D).

O que eu aprendi:
  • que eu tenho que tratar mal as pessoas que não falam comigo;
  • que pessoas que me tratam como um gênio que tá explicando coisas complicadíssimas impossíveis de entender vão sair das minhas oficinas contando pra todo mundo que aquilo é complicadíssimo e impossível de entender, e isso vai afastar outros possíveis interessados, então eu tenho que expulsar essas pessoas das minhas oficinas o mais rápido possível;
  • que nesse momento só vale a pena interagir com pessoas que me tratem de igual pra igual, no seguinte sentido. Imagina que você é uma pessoa A que fez um programa que ainda não é muito fácil de usar, e que ela quer ver como as pessoas reagem a ele pra descobrir o que você pode melhorar nele. Aí essa pessoa A chama uma amiga dela, B, pra testar o programa - e aí até "feedbacks involuntários" da pessoa B, como que ela tá demorando demais em algo que deveria ser simples, são úteis pra pessoa A. Então: nesse momento só vale a pena interagir com pessoas que conseguem se imaginar no lugar da pessoa A, e que conseguem imaginar como elas gostariam de ser tratadas;
  • que eu tenho TONELADAS de material que serve como "dicas" e "soluções". Se eu consigo descobrir onde a pessoa B empacou eu geralmente consigo resolver o problema dela num instante; se eu não consigo descobrir, não;
  • que o esquema das oficinas como temas tipo "o quanto de emacs, eev e anotações executáveis vocês conseguem aprender em (5 ou 10 ou 15 ou) 30 minutos" é ótimo pra mim, porque aí ninguém enrola e eu não saio me sentindo um idiota... se as pessoas conseguirem participar e elas aprenderem coisas legais e ficarem empolgadas a gente prorroga a oficina o quanto der, e se ninguém participar eu vou embora. =/

Obs: antes dessa oficina do CAEPRO eu estava em dúvida se eu deveria ou não tentar oficializar o projeto de ensino que eu menciono aqui, e eu tava me sentindo bem culpado por não estar conseguindo fazer a parte burocrática dele. Depois da oficina ficou claro pra mim que não vale a pena tentar oficializá-lo agora, e que eu ganho mais "brownie points" fazendo pesquisa, aprendendo Agda e Maxima e fazendo vídeos - veja (find-1stclassvideos) - e coisas de software livre em inglês... =(


O que eu aprendi, 2 - adendo sobre segurança, acrescentado em 2022may06. Em grupos técnicos de brasileiros, como grupos de Telegram sobre Debian ou Emacs, as pessoas são "obcecadas por segurança" num sentido que eu já vou explicar; em grupos internacionais, como o canal #emacs do IRC, isso não acontece. As pessoas "obcecadas por segurança" estão sempre pensando que pode ter exploits e malware em todo lugar - e se eu digo pra elas "assiste esse vídeo aqui no youtube, ou baixa uma cópia local dele com o comando "wget http://angg.twu.net/eev-videos/2021-oficina-1.mp4" e assiste a cópia local com mpv ou vlc", a reação delas é sempre tipo: "eu não confio no browser", "eu não confio no youtube", "porque é que eu devo confiar nesse seu .mp4? Ele pode ser um arquivo que ativa um bug do mpv e que vai fazer você ter acesso à minha máquina"... e mesmo quando elas usam Debian Stable elas mantêm essa atitude de que elas têm que desconfiar de tudo - e aí é óbvio que se eu disser algo como "confia em mim" é porque é óbvio que eu tou querendo enganar elas. Tudo é muito perigoso, e todo mundo pode estar mentindo.

Deixa eu fazer um modelinho mental. Os usuários na "fase 1" acreditam em tudo e caem em todos os golpes. Os usuários na "fase 2" "sabem que tudo é muito perigoso": eles conhecem muitos tipos de exploits e ficam imaginando outros tipos a toda hora pra não caírem nem nos golpes que eles conhecem e nem nos golpes que eles ainda não conhecem, mas que podem existir. Os usuários "na fase 3" sabem bastante sobre como não cair em golpes e usam sistemas que são suficientemente seguros.

Tem lugares - como o canal #emacs do IRC - em que 1) a etiqueta é supor que todo mundo lá está na "fase 3", e 2) as pessoas estão acostumadas a discutir tanto o que é dito literalmente quanto os pressupostos do que cada um diz. Então se uma pessoa na "fase 2" diz, por exemplo, "eu não confio no mpv", espera-se que ela pelo menos mande uns links pra explicar o que ela quer dizer. A explicação pra isso é meio grande. Lá vai.

Digamos que uma pessoa A, que está na "fase 2", está no #emacs, onde tem muitas pessoas "na fase 3" que não hesitam em abrir os links que as outras pessoas mandam, e essa pessoa A diz "eu não confio no mpv". Essa frase dela tem um monte de subtextos possíveis (obs: como eu traduzo "intended meaning" pra português? "Significado pretendido?" Vou usar "subtexto" mesmo, que é mais curto...) - por exemplo, o subtexto pode ser "vocês estão sendo ingênuos", ou "eu entendo de segurança e vocês não". Se for isso é péssimo, porque não há resposta possível - mesmo que uma outra pessoa, B, mostrem que, sei lá, ela é maintainer do Debian desde 2003 a pessoa A pode responder "isso não quer dizer nada"...

Existem outros subtextos possíveis pra frase "eu não confio no mpv": por exemplo, "eu li um artigo sobre um exploit do mpv. Vocês leram? O que vocês acharam? O que está descrito lá põe em risco os computadores de vocês?"... normalmente em lugares como o #emacs as pessoas as pessoas tentam fazer as discussões serem as mais produtivas possíveis - até porque ficar chamando os outros de burros pega muito mal - e um truque que pega muito bem é compartilhar links. Deixa eu continuar no exemplo do "eu não confio no mpv"; digamos que a pessoa A ouviu falar de um exploit no mpv. Ela pode dizer "procurem no Google" ou ela pode considerar que ela provavelmente lembra mais palavras-chaves sobre esse exploit do que as outras pessoas do canal, e aí ela pode usar essas palavras-chave, procurar no Google, selecionar um link que parece bom, e compartilhar esse link no canal. Se ela compartilhar esse link pode ser que algumas pessoas que sabem pelo que procurar mas que estão ocupadas com outra coisa e que consideram que só têm 30 segundos sobrando podem num encontrar num instante o bug report certo em lugares como aqui, aqui e aqui, compartilhar links sobre como o mpv e o Debian lidaram com esse bug, e aí a discussão passa a ser sobre como bugs concretos são localizados e resolvidos - ao invés de sobre como pode haver um bicho-papão em cada canto escuro.

Repara, os truques são: não supor que os outros são ingênuos; organizar do melhor modo possível a informação que você tem; criar todas as condições possíveis pra que a discussão seja a mais produtiva possível; considerar vários jeitos possíveis de dizer o que você tem pra dizer, pensar sobre os efeitos de cada um deles, e escolher o melhor.

Mas voltando às oficinas. De vez em quando apareciam umas pessoas "na fase 2" nas oficinas que eu dei, e eu não sabia como lidar com elas... agora quando apareceram as próximas eu vou dizer: olha, pra mim é muito desgastante lidar com pessoas "na fase 2", então lê isso aqui,

http://angg.twu.net/2022-oficina-caepro.html#o-que-eu-aprendi-2

e se você não confia nos programas que eu tou recomendando 1) procura alternativas mais seguras, 2) pede ajuda pras outras pessoas que você conhece que também são "obcecadas por segurança", 3) compartilha links com a gente... e se você não quiser fazer isso então beijos e tchau.


Tudo que está acima deste paragrafinho foi escrito depois da oficina, e tudo que está abaixo foi escrito antes dela.



O texto de divulgação da oficina

O Emacs é um ambiente Lisp que às vezes é usado como editor de texto. Se você nunca ouviu falar em Lisp dê uma olhada nestes links:

Search Hacker News: "Lisp"
How Lisp Became God's Own Programming Language (twobithistory.org)
Show HN: Lisp with GC in 436 Bytes (justine.lol)

Se você nunca ouviu falar no Emacs você pode começar pelas páginas das EmacsConfs de 2021, 2020 e 2019, pela apresentação do Protesilaos Stavrou na EmacsConf2021, ou pelo artigo "EMACS: The Extensible, Customizable Display Editor", do Richard Stallman, que explica bastante bem como é que o movimento do Software Livre surgiu a partir da comunidade dos usuários do Emacs - mas que é de 1981... você também pode dar uma olhada no Emacs Weekly News, mas quase todas as coisas que são postadas lá são sobre usar o Emacs "como usuário", que é algo que eu nunca aprendi a fazer e que nunca me interessou muito... veja os slides da minha apresentação na EmacsConf2019. Dentre os tutoriais de Emacs "pra usuários" que eu conheço o que eu acho melhor é o "Learning Emacs" do Prot.

Essa oficina vai ser baseada no material que eu preparei pras oficinas que eu ofereci em 2019 - veja esta página em português e esta em inglês.

Se você quiser saber mais sobre o eev vá na página abaixo e siga os links que você achar mais interessantes... muitos deles têm screenshots e links que pulam direto pros trechos mais interessantes de vídeos longos.

http://angg.twu.net/#eev


Público alvo: "não-usuários".

Deixa eu tentar explicar. Eu uso o Emacs desse jeito desde a década de 90 e o eev virou um pacote oficial do Emacs em 2019, mas bem pouca gente usa ele, e eu sempre quis entender porque é que ele não faz sucesso quase nenhum... a minha hipótese atual é que ele só interessa pras (poucas) pessoas que pensam de uma determinada forma - os "não-usuários". Eu fiz um vídeo exatamente sobre isso e um outro vídeo mais ou menos sobre isso:

"Org for non-users (2021)"
"Why eev has a weird elisp tutorial and how to use it (2021)"

Acho que tem um jeito fácil de descobrir se você é um "usuário" ou um "não-usuário". Se você tentou aprender Python e teve dificuldade porque você precisava saber os detalhes do que é uma classe e aí você empacou porque os detalhes são considerados um assunto avançadíssimo, então você provavelmente é um "não-usuário"; se você lida bem com caixas pretas e com botões mágicos que fazem coisas complicadas cujos detalhes você não entende então você provavelmente é um "usuário" - e os "usuários" costumam achar que o eev está TODO ERRADO. =( =( =(