sábado, 28 de março de 2015

Quando eu estou programando, gosto de desenhar um grafo com a dependência entre as classes, assim fica fácil de ver quem está acoplado demais, ou quem tem responsabilidades em excesso. Mas quando o projeto começa a crescer, o grafo fica zoneado como esse aí da figura.


O jeito de conseguir ler isso é pegar as classes mais externas e extrair a árvore que começa nelas. Mas como fazer isso? Meu primeiro instinto foi abrir o python e começar a escrever um parser de .dot e um dfs, mas aí eu pensei que seria melhor fazer direto em bash mesmo:
for i in `cat graph.dot | gvpr -i "N[indegree==0]{print($)}"`; do dijkstra -d -a $i graph.dot | gvpr -i "N[dist<50.0]" | dot -Tpng -o $i.png; done; convert -append *png graph.png
Esse one liner bobo recorta todas as árvores do grafo e remonta numa imagem muito mais legível que a original:
E antes que perguntem: sim, Boolean depende de Context Emoticon smile
Pausa para o pedido pessoal.
Vocês conhecem o Lauro De Luna Larsen né? Ele é figurinha nos eventos de quadrinhos. A foto de background no meu perfil do facebook, onde estou eu, o George Perez e uma porta autografada, foi a esposa dele que tirou. Recentemente ele criou a Editora MINO que está publicando quadrinhos nacionais de qualidade.
Esse post não é sobre ele, é sobre a irmã dele. Domingo passado a casa dela pegou fogo e ela perdeu TUDO. A coisa foi tão feia que ela perdeu até a casa em si, vai ter que demolir para construir do zero de novo. Agora eles estão fazendo uma vaquinha para reconstruir a vida:
Qualquer pouquinho que você contribuir já ajuda, e se você compartilhar a informação, os pouquinhos de todos os seus amigos somados ajudam mais ainda!


domingo, 22 de março de 2015

Hoje o professor Pierluigi Piazzi faleceu. É até difícil falar o quanto ele me influenciou, então eu vou contar uma das historinhas preferidas dele, a história da montanha.
Certa vez dois engenheiros foram contratados para demolir uma montanha. Vendo que era uma tarefa muito difícil, o primeiro engenheiro fundou a Montanhabrás, que produzia uma centena de tratores por dia, todos usados para acabar com a montanha.
Já o segundo engenheiro fez um trator só. Mas esse trator usava o material escavado da montanha para criar um outro trator igualzinho a ele. No segundo dia eram dois tratores, no terceiro dia eram quatro tratores. Em duas semanas ele já tinha mais tratores que a Montanhabrás, graças ao poder da progressão geométrica.
Era isso que o prof. Pier fazia. Ele criava máquinas auto-replicantes. Não contente em ensinar, ele ensinava a ensinar, de modo que um aluno replicava o conhecimento adiante em progressão geométrica.
Se você olhar com cuidado, os posts no meu blog seguem o estilo de post que o Pier fazia. São textos feitos para o leitor inteligente, escritos com bom humor e acompanhados por desenhos ilustrativos. Eu sou um tratorzinho, e espero que os meus leitores virem tratorzinhos também.
A primeira vez que eu o vi foi em um encontro da Frota Estelar Brasileira. (e que coincidência ele morrer no mesmo mês em que o Spock morreu). Na foto abaixo nós dois aparecemos, foi tirada em um encontro de MSX. Ele sempre deixava comentários no blog, a última vez que falei com ele foi falando de nossa paixão em comum por réguas de cálculo. Vamos todos sentir falta dele.


domingo, 15 de março de 2015

Lucas Uyezu me recomendou um site divertido, o coding game:
O objetivo é escrever pequenas AIs para joguinhos. O que eu estou fazendo agora é um solver para o lunar lander. Ele te dá x,y, dx, dy da sonda lunar a cada iteração, e você precisa dar o thrust e o ângulo para pousar em repouso. Bem divertido!


O google code foi deprecated, agora é recomendação é migrar os projetos para o github. Eu movi agora os três que eu tinha por lá:
gibit - search engine para gibis
https://github.com/ricbit/gibit
spojtweet - achievements para spoj
https://github.com/ricbit/spojtweet
ricbot - AI para jogar Go, escrita em Go
https://github.com/ricbit/ricbot
O gibit só eu uso, e o ricbot era uma prova de conceito. Mas o spojtweet tem bastante usuários, e a parte bacana é que a maioria é de indianos :)




segunda-feira, 9 de março de 2015

Eu ajudei a fazer o Nerdologia da semana passada, sobre a cor do vestido lendário.
Para mim o problema todo não é sobre física e nem sobre biologia, é que ninguém ensina para as pessoas o que é uma cor. A cor não é uma propriedade de um objeto, a cor é uma sensação.
Se você falar para um esquimó tomar banho a 25 C ele vai falar que tem a sensação de banho quente, e se você falar para um angolano tomar banho a 25 C, ele vai falar que tem a sensação de banho frio. E se eles trocarem de país por um ano, depois desse período a sensação do banho vai inverter também.
Por isso não tem como falar da "cor do vestido". Vestido não tem cor. Vestido tem refletância, que pode ser não-isotrópica, que é influenciada pela luz incidente, que chega no sistema nervoso humano, que varia de indivíduo por indivíduo. Se no fim ele acha que viu azul, então a cor do vestido para ele, naquele momento, é azul.


sexta-feira, 6 de março de 2015

Das melhores coisas que você pode fazer: dar notas para filmes no Netflix. Quando você dá notas, o algoritmo do Netflix aprende do que você gosta, e começa a sugerir pérolas que você nem sabia que existiam.
Por exemplo, ontem ele me sugeriu Os 13 Assassinos, um filme japonês de 2010 que eu nunca tinha ouvido falar. Resolvi assistir no escuro e valeu a pena!
A história se passa no finzinho do shogunato Tokugawa. Essa já era uma era de paz, onde os samurais ainda existiam, mas na prática não faziam nada, a ponto de ter samurai de meia idade que nunca matou ninguém.
Isso tudo é bom e bacana até que um dos sucessores do trono ganha poder político, e por acaso esse sucessor é mais malvadão que o Joffrey. Uns poucos sensatos resolvem assassinar o malvadão antes que ele tome posse, mas pra isso eles precisam achar algum samurai que ainda entenda do riscado. No fim tudo que conseguem é um grupo de 13 samurais, que vão lutar contra mais de 200 que protegem o vilão.
E aí vem a batalha. Mas não é a lutinha asséptica e digital de Star Wars, nem a dancinha voadora do wushu. Essa luta é SUJÊRA, com sangue, lama, dedo no olho, e cabeça voando. Coisa linda de assistir, e que deve ser bem próxima do que deveria ser uma batalha histórica.
O filme também tem tanukis. Ou não, vai saber.