Debconf 7… aqui estou eu!

Muito tempo sem escrever. Desde a última vez participei do IV ESLAM (Encontro de Software Livre do Amazonas) e me impressionei positivamente com a organização, com as pessoas e com o evento em geral. Muito bom!

Arc de Triomphe

No dia 16 às 8:40 da manhã eu viajei pra Sampa, onde à tarde peguei um avião pra Paris. Deu tempo pra correr até o Arc de Triomphe e à Torre Eifel e tirar algumas fotos, mas nada mais.

Torre Eifel

Peguei o avião pra Edimburgo no final da tarde do dia 17 e cheguei já no início da noite. Fiz check-in, peguei minha senha de wireless e dormi das 22 às 13 do outro dia, de tão cansado. Desde então estou andando por aí com o Tiago, Tassia, stratus e o faw. Já encontrei diversas pessoas, assisti um monte de palestras (a maioria via streaming). Fiz algum trabalho, também: consegui atualizar algumas coisas do update-manager, iniciei o empacotamento do software-properties e acabei tendo de fazer um patch pra o python-apt.

Edimburgo

Nos próximos dias teremos a Day Trip e eu já estive falando com o Bdale sobre as minhas idéias de melhorar o sudo e o su para conversarem melhor com o gksu, então devo lidar mais com isso durante o resto da semana!

Eu fiz upload de fotos separadas por dias em que foram tiradas.

09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0

Eu não poderia ficar de fora dessa. Depois que foi descoberto o número usado para descriptografar os mecanismos de DRM do HD-DVD, meses atrás, uma sequência de acontecimentos interessantes fez com que esse talvez seja um dos números mais conhecidos do mundo. A coisa realmente explodiu quando a MPAA iniciou uma campanha de exigir que todos os sítios que o estivessem publicando retirassem do ar as páginas que o citassem; o Digg recebeu uma carta dos defensores do DRM exigindo que artigos que contivessem o número fossem removidos.

O Digg até tentou retirá-los, mas os usuários se revoltaram e postaram artigos e mais artigos contendo o número. Isso continuou até que o Digg saiu do ar e voltou com um posto do fundador do Digg declarando que topou a briga, e que vai permitir que os artigos permaneçam, lidando com as consequencias que aparecerem. Esse é um evento importante de desobediência civil da grande nação que é a Internet.

É um passo importante na luta contra as tecnologias que tem defeitos deliberados embutidos como decisões de projeto.

Vida pós-FISL

Primeiro, claro, alguns comentários sobre o FISL 8: como sempre, foi muito bom rever os meus vários amigos, bater papo, trocar idéias sobre assuntos técnicos ou não. Tive oportunidade de discutir com diversas pessoas o design do PyMeter, que aliás anda meio parado por minha falta de tempo, e do gksu. A primeira apresentação que assisti (só o final) foi a do Mazoni falando de qualidade de vida, crença nas pessoas e da qualidade do ambiente de trabalho. Bastante emocionante, para dizer a verdade, gostei muito. É uma pena que a Celepar ainda não tenha respondido definitivamente questionamentos sobre o fato de a LPG-AP não ser software livre (e ter sido avaliada como tal inclusive pela FSF), mas pelo que vinha sendo feito no final de 2006, creio que isso seja resolvido logo, vamos ficar de olho.

Tem mais coisas pra falar, provavelmente, mas eu lembro depois =D.

Tenho feito, agora que o Etch foi lançado, uma geral nos meus pacotes. Mandando versões novas para unstable, experimentando novas técnicas para alguns pacotes serem mais úteis ou mais simples. Semana passada consegui tratar do Glade3, principalmente, entre outros. Essa semana foi pythonica: ConfigObj e CherryPy3 receberam bastante amor. Próximo passo é olhar bastante para gksu e sua turma, que vai levar bastante trabalho de código propriamente dito.

No trabalho, por motivos que não cabe expor aqui, tenho ajudado um time de desenvolvedores (eu sou da produção) a resolver um problema de leak de memória no código Java deles. Hein? Isso mesmo. Java também tem vazamento de memória, mas de uma forma diferente: Java (e outras linguagens, Python incluso) depende do Garbage Collector para liberar memória. O GC somente libera objetos que não tenham mais nenhuma referência (ponteiro, para amigos do C); se você não vai usar mais um objeto, mas não retira dele todas as referências, ele começa a lotar sua área “Tenured” (a JVM divide o Heap em várias áreas para otimizar o GC) com objetos inúteis, até que a memória destinada à JVM acaba. Para quem interessar, as duas melhores ferramentas que eu achei para fazer análise disso, até agora, foram HPROF, que vem com o JDK, e HAT (http://hat.dev.java.net/) para analisar o dump de heap que o HPROF gera.

Tudo em Java é tão mais difícil… deu até saudade de memprof e valgrind (que eu até então achava chato). Tudo é tão mais lento, complexo… enfim, admiro pacaramba a Sun por ter feito algo tão ruim, improdutivo e lento e ainda assim conseguir vender pra tanta gente a idéia. Admiro a Sun por ter liberado (ou prometido liberar) o Java como software livre, também. Em favor da Sun eu tenho a dizer que das empresas que lidam com SL ela talvez seja a que mais faz, embora muitas falem tanto quanto ela. OpenOffice.org, GNOME, e agora Java, todos se beneficiam bastante do trabalho da Sun, e por isso eu realmente a respeito, mas não pela qualidade do Java =P.

Resultado: um colega de trabalho, Jose Assis, citou que tinha feito não sei o que em Assembly e minha veia nerd coçou fortemente, incentivada pelas horas de insanidade que passei com Java, e tive de ir brincar com ASM também. Acabei gastando boas horas das minhas aulas de Java na faculdade fazendo um programa que baixa a página de teste do apache do Debian do localhost, sem usar funções da libc, usando somente chamadas de sistema:


.data
msg:
.ascii "GET /apache2-default/ HTTP/1.0\n\n"
len = . - msg

.bss
servaddr:
.space 128, 0
servaddrlen = . - servaddr

sock:
.long 0x0

buffer:
.space 256
bufferlen = . - buffer

bytesread:
.long 0x0

.text
.global main

main:
pushl %ebp
movl %esp,%ebp
subl $12,%esp

movl $102,%eax /* socket () */
movl $1,%ebx
pushl $6
pushl $1
pushl $2
movl %esp,%ecx
int $0x80
/* is this needed?
movl %ebp,%esp
popl %ebp
doesn't look like*/

movl %eax,sock /* save the return value of the socket() call */

pushl %ebp
movl %esp,%ebp
subl $136,%esp

movl $102,%eax
movl $0x03,%ebx
movw $0x02,servaddr /* build the sockaddr struct */
movw $((80 & 0xff00) >> 8 | (80 & 0xff) << 8),servaddr+2 movl $0x0100007f,servaddr+4 pushl $servaddrlen pushl $servaddr pushl sock movl %esp,%ecx int $0x80 movl $4,%eax movl sock,%ebx movl $msg,%ecx movl $len,%edx int $0x80 L1: movl $3,%eax movl sock,%ebx movl $buffer,%ecx movl $256,%edx int $0x80 movl %eax,bytesread cmpl $0,%eax je L2 movl $4,%eax movl $1,%ebx movl $buffer,%ecx movl bytesread,%edx int $0x80 jmp L1 L2: movl $1,%eax movl $0,%ebx int $0x80 ret

Deve estar cheio de erros, dado meu grande desconhecimento de ASM, syscalls e de como funciona de fato o CPU, pilha, etc, mas funciona bonitinho:


kov@cenoura:~/src/asm$ strace -s 1024 ./socket
[...]
socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 3
connect(3, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("127.0.0.1")}, 128) = 0
write(3, "GET /apache2-default/ HTTP/1.0\n\n", 32) = 32
read(3, "HTTP/1.1 200 OK\r\nDate: Sat, 21 Apr 2007 19:05:00 GMT\r\nServer: Apache/2.2.3 (Debian)\r\nLast-Modified: Sat, 20 Nov 2004 20:16:24 GMT\r\nETag: \"6400b-2c-4c23b600\"\r\nAccept-Ranges: bytes\r\nContent-Length: 44\r\nConnection: close\r\nContent-Type: text/html; charset=UTF-", 256) = 256
write(1, "HTTP/1.1 200 OK\r\nDate: Sat, 21 Apr 2007 19:05:00 GMT\r\nServer: Apache/2.2.3 (Debian)\r\nLast-Modified: Sat, 20 Nov 2004 20:16:24 GMT\r\nETag: \"6400b-2c-4c23b600\"\r\nAccept-Ranges: bytes\r\nContent-Length: 44\r\nConnection: close\r\nContent-Type: text/html; charset=UTF-", 256HTTP/1.1 200 OK
Date: Sat, 21 Apr 2007 19:05:00 GMT
Server: Apache/2.2.3 (Debian)
Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
ETag: "6400b-2c-4c23b600"
Accept-Ranges: bytes
Content-Length: 44
Connection: close
Content-Type: text/html; charset=UTF-) = 256
read(3, "8\r\n\r\n<html><body><h1>It works!</h1></body></html>", 256) = 49
write(1, "8\r\n\r\n<html><body><h1>It works!</h1></body></html>", 498

<html><body><h1>It works!</h1></body></html>) = 49
read(3, "", 256) = 0
_exit(0) = ?
Process 14468 detached

Eu vou ao FISL… Debian e devaneios sobre educação

Eu não ia. Tinha resolvido que era melhor focar somente no evento de Maio, no Amazonas, em que vou falar de Debian e TurboGears e na Debconf, para a qual já comprei passagem e estou pleiteando financiamento, inclusive.

Mas aí fiquei sabendo pelo meu chefe que o MDS, onde eu trabalho hoje em dia, vai patrocinar o evento e que terá direito a uma palestra, e fui escalado junto com a Fabiana, desenvolvedora PHP que cordena a equipe de desenvolvimento do Ministério.

A apresentação é sobre um assunto interessante e tem bastante resposta pra ‘show us the code’, embora, como todas as iniciativas de governo que existem, seja bastante ‘marginal’, não indo tão a fundo no conceito do software livre, sendo mais usuário que produtor.

Então poderemos nos ver por POA no FISL! No campo Debian, estou ansioso pela saída da Etch, e pela Debconf. Minha vida debiânica tem sido basicamente manter os pacotes do gksu e TG redondinhos e com traduções atualizadas para a Etch, mas minha cabeça já está borbulhando com idéias para a próxima era do gksu; vou detalhá-las mais aqui em outra ocasião.

Outra coisa que tem estado bastante na minha cabeça é Educação; não é novidade pra quem me conhece que eu sempre pensei muito sobre como aprender e como a educação deveria ser. Postei várias vezes nos meus antigos blogs sobre isso. Por diversas razões tenho pensado muito nisso nos últimos tempos. A idéia principal que gira na minha cabeça ultimamente é que talvez fosse muito melhor se a educação fosse focada em habilidades, ao invés de ser focada em conhecimento.

Por que não ensinar as pessoas a entender e resolver problemas, ao invés de fazê-las decorar métodos de resolução de equações de segundo grau, por exemplo? Não seria mais útil ensinar interpretação de textos de verdade ao invés de obrigar pessoas a decorarem regras de gramática? Estive pensando bem e acho que a única habilidade que nós realmente praticamos durante nossa vida escolar é a de memorizar; bastante alinhada com a realidade que conhecemos na vida profissional, se você pensar bem… de que tipo de habilidade você precisa para fazer certificações e concursos, afinal? =)

Acontecimentos dignos de blogging…

Não é de hoje que eu não tenho a menor fé em educação formal. O caminho para conseguir o famoso “canudo” sempre me pareceu uma tentativa falida de formar. A realidade nua e crua costuma ser bem aquém das expectativas idealizadas, e a falta de preocupação com a qualidade do corpo Docente é sempre um calcanhar de aquiles.

Nada melhor do que viver a realidade nua e crua na pele. Decidi que não fazia sentido deixar um canudo ser impedimento para qualquer coisa que eu queira fazer e por isso me matriculei no curso de Análise de Sistemas do UNICEUB, em Brasília. Curso de 2 anos, próximo da minha área de interesse, com um foco diferente do que eu próprio tinha dado até hoje no meu conhecimento.

Entra Ana Cristina de Figueiredo Dornelas (veja a lista de professores). A disciplina é “Sistemas Distribuídos”. Me pareceu que eu ia gostar da professora: funcionária da Embrapa, administra bancos de dados e trabalha extensivamente com Unix. Mas aí começaram a vir as bobagens.

Vieram tímidas em princípio; discussões pouco técnicas e pouco acadêmicas a respeito de um conceito vago e subjetivo de “transparência” com relação a software. Mais tarde algumas outras a respeito de como acontece o boot de um computador (a começar pelo fato de que ela explicou o processo de boot de um unix-like como se fosse parte do processo ‘genérico’, com init e tudo).

Mas nada, nada poderia superar a explicação que ela deu sobre processos zumbi no UNIX. Segundo ela processos zumbi são processos que têm problemas quando a máquina é desligada inesperadamente. O UNIX mostra os processos como zumbi e deixa a cargo do administrador decidir o que fazer com eles, segundo ela. Uma obra digna de gênio! Quem me conhece sabe que eu sei admirar pessoas competentes; isso não exclui pessoas competentes em serem ruins! Erre, mas erre com estilo!

<ironia>Aqui algumas referências que corroboram o dito pela professora, para os não-iniciados:</ironia>

Eu disse que nada poderia superar isso? Ana Cristina não me deixaria na mão. Ontem ela explicou para nossa turma que o Linux é um sistema que faz gerenciamento de memória e de sistemas de arquivos em espaço de usuário, adotando o modelo “micro-kernel”. Quando eu tentei dizer que não ela iluminou minha alma me explicando que existem algumas distribuições que discordam do Linus e adotam o esquema micro-kernel.

Ana Cristina de Figueiredo Dornelas é um modelo para a educação no Brasil.


Comentário semi-pós-post: eu não tenho nada contra pessoas que sabem pouco ou que não sabem muito a fundo. Eu tenho muita coisa contra pessoas que dizem saber coisas que não sabem e que se colocam com a autoridade de ‘professor’ à frente de uma turma de dezenas de alunos que não têm, em sua maioria, competência no assunto para julgar criticamente o que essas pessoas dizem e despeja baboseiras desse tipo. É um desrespeito com as pessoas; mereceu até configurar novamente um blog.