terça-feira, 25 de fevereiro de 2014

Eu já contei que foi por causa do Robocop que eu virei engenheiro? 

A história é assim: lá no finzinho da década de 80 nós éramos um grupinho de três amigos decidindo o que fazer da vida. A gente já tinha decidido fazer o curso técnico, só faltava escolher a área.

Aí nós assistimos o filme e ficou decidido: nosso objetivo de vida era fazer o Robocop! E o que precisávamos para fazer o Robocop? Dividimos as tarefas: um iria fazer eletrônica, um iria fazer mecânica, e outro iria fazer computação.

Mas em certo ponto nós notamos que faltava uma parte importante: para fazer o Robocop, a gente iria precisar de um cadáver. Eu pensei um pouco e logo resolvi o problema. Chamei de canto meu irmão, quatro anos mais novo, e perguntei:

- Nós estamos com um plano para transformar alguém no Robocop. Você quer virar o Robocop?
- NOSSA QUE LEGAL EU QUERO
- Você vai ter que morrer, mas depois a gente te traz de volta como Robocop, tudo bem?
- EU VOU VIRAR O ROBOCOP QUE LEGAL

No fim o plano falhou miseravelmente. Eu fiz o técnico em eletrônica e depois engenharia elétrica, mas trabalho com computação. Um dos amigos fez o técnico em mecânica, mas não curtiu, e acabou se formando em arquitetura. O outro amigo estudou computação, mas hoje trabalha como sales engineer na microsoft. E o meu irmão, que ia ser o cadáver, tá aí vivo até hoje.

domingo, 23 de fevereiro de 2014

Gostei muito do Robocop novo, fica ainda mais legal quando você percebe que os personagens são o Steve Jobs e o Nicolelis. E eles não estão vendendo soft drinks haha.
Na primeira vez que eu peguei para ler o Quantum Mechanics and Path Integrals do Feynman, eu não entendi porra nenhuma. Mas agora eu peguei de novo para ler e entendi até a página 27! Eu progredi, agora faltam só as outras 350 páginas!

domingo, 16 de fevereiro de 2014

O auto corretor ortográfico quer tirar o acento da minha idéia. Fuck the system, a idéia é minha e eu que decido quantos acentos ela tem.
Que tipo de nerd você é? Achei um jeito fácil de descobrir.
Vai no google e digita "wol" no campo de pesquisa
Se auto completar com "wolfram alpha", você é do tipo 1. Se auto completar com "wolverine", você é do tipo 2.

sábado, 15 de fevereiro de 2014

Ontem eu li o paper original do Weierstrass com a definição original do método do epsilon-delta. É bem acessível, recomendo a leitura! E ainda permite codificar isso:


O duelo do Luke e do Vader no Episódio 5 é legal porque é o único desigual da série. Todas as outras lutas são mestres contra mestres, mas esse é adulto versus pirralho. O Vader desarma o Luke em 30s usando uma mão só, e só não mata o pivete porque queria levá-lo vivo para o Imperador.
(Mas a melhor trilha sonora é o Duel of the Fates no episódio 1.)



quinta-feira, 13 de fevereiro de 2014

A lenda dos dragões surgiu quando os antigos achavam crânios de dinossauros, que eram bichos que eles nunca tinham visto. O que eu não sabia era a origem dos ciclopes, os gigantes de um olho só! Nessa foto que achei na web dá pra ver claramente, um grego achando um crânio desses poderia facilmente deduzir que era de um ciclope.


quarta-feira, 12 de fevereiro de 2014

Fiz uma implementação de graph partition usando MIP, porque MIP é vício:

https://github.com/ricbit/Oldies/blob/master/2014-02-partition/partition.cc

A primeira motivação é dividir uma quantidade de trabalho entre p processadores, de modo que cada processador tenha uma carga mais ou menos igual e o tráfego entre eles seja minimizado.

A segunda motivação é fazer figuras bonitas com bolinhas coloridas.


terça-feira, 11 de fevereiro de 2014

Eu andei pensando no caso do Woody Allen, especialmente em saber se as acusações desqualificam a obra dele, ou se a obra tem valor independente do caráter da pessoa que faz. Eu nunca vi um filme dele, então não tenho como julgar, mas tem um análogo que eu consigo imaginar, que é o Feynman.

Eu adoro o trabalho do Feynman, tanto o científico quanto o não-científico. Mas ele fez a bomba atômica, então é culpado pela morte de pelo menos 150 kpessoas. Isso desqualifica o trabalho dele ou não?

Como eu sou fã do Feynman, minha cabeça ficou racionalizando e concluí que no fim essas mortes não são culpa dele, são culpa do Popper. Quem matou essas pessoas foi o método científico.

O problema do projeto Manhattan é que eles estouraram o deadline, quando a bomba ficou pronta a Alemanha já tinha perdido a guerra. Mas eles gastaram muita grana para fazer a bomba, e não sabiam qual seria o efeito delas em humanos (só sabia-se em casas e porcos, não em humanos). Então, para saber se o investimento valeu a pena, você precisava de um teste empírico. E tome bomba em Hiroshima, já que nessa altura só tinha sobrado o Japão de inimigo.

E a prova de que isso foi um teste é a bomba em Nagasaki. Se o motivo fosse só aterrorizar e forçar a capitulação, não precisava da segunda bomba. Eles só lançaram porque precisavam testar se o mecanismo implosion-type de plutônio da Fat Man era tão bom quanto o gun-type de urânio da Little Boy.

Então não foram mortes causadas pela ciência, foram mortes causadas pelo método científico.

De curiosidade, pacote de fotos assustadoras de quando eu visitei Hiroshima em 2012:


https://picasaweb.google.com/116439213243261718069/Hiroshima?noredirect=1#

sábado, 8 de fevereiro de 2014

Depois da brincadeira dos artistas, agora é a vez da brincadeira dos matemáticos! Você ganha um matemático e precisa escolher um teorema que ele tenha criado. O Reynaldo Fagundes me passou o Donald Knuth, se você também quiser um matemático, é só postar um comentário escrito MANDA.

O Knuth é um dos mais prolíficos autores do século XX, atuando nas áreas mais diversas. Todo mundo o conhece pelo seu trabalho na computação, mas ele também é matemático, organista e humorista (seu primeiro trabalho publicado foi na revista MAD. Sim, aquela revista MAD). Escolher um dos teoremas do Knuth é difícil, porque ele tem muitos trabalhos memoráveis, mas eu acabei escolhendo o mais seminal deles: o paper "Ordered Hash Tables", publicado pela primeira vez The Computer Journal #17 (1974).

O problema é simples: qual é o tempo médio para inserir um valor em uma hash table (com open addressing)? Pergunte isso para qualquer estudante ingênuo e ele vai te responder que é O(1). Mas essa não é a resposta correta! O tempo O(1) só vale no caso em que o número de inserções é muito menor que a tabela, de modo que não tenham colisões.

Mas, na vida real, colisões acontecem. Essa é a essência do teorema do aniversário: em uma hash table de 365 posições, você tem 50% de chance de ter uma colisão após 23 inserções, e essa chance sobe com o número de inserções.

Então, qual o valor real do tempo médio? Apesar do enunciado ser relativamente simples, por anos ninguém sabia resolver o problema, até o Knuth achou a solução em 1974. O povo se perguntava: como analisar, se eu não sei qual a função de hash que você vai considerar? A resposta do Knuth foi: considere todas ao mesmo tempo! Se a sua tabela tem M posições e você vai fazer N inserções, então existem M^N funções de hash diferentes, e o que o Knuth fez foi calcular a média sobre todas elas.

Se você quiser ver a solução, ela está no Art of Computer Programming vol.3. O Knuth, sempre piadista, deixou a demonstração como exercício para o leitor (LOL). Mas não é complicado, em três páginas de contas você resolve, se tiver paciência e conhecimento de análise combinatória.

O resumo da solução é que o número médio de consultas à tabela de tamanho M após N inserções é:



Esse valor do Knuth é exato, mas não te dá muita intuição sobre o algoritmo. Se você assumir que N é razoalmente menor que M, então tem um assintótico mais simples:



Nesse assintótico fica mais claro. Ele realmente é O(1) na primeira inserção, quando N=0; mas depois esse tempo vai subindo. E no limite, quando a tabela está cheia, é infinito? Nope, esse assintótico só vale quando N<<M; intuitivamente, não tem como ter mais que M-1 colisões numa tabela de tamanho M.

Porém, se você colocar N=M e usar a função Q de Ramanujan (um clássico para quem, como eu, sofreu fazendo o curso de Analytic Combinatorics no coursera), então você consegue o valor limite:



Agora, se alguém perguntar, você pode responder com propriedade: a inserção é O(1) quando a tabela está vazia, e vai crescendo até chegar em O(sqrt(N)) quando a tabela está cheia.


Bônus 1: foto de quando encontrei o Knuth.


Bônus 2: eu e a revista MAD que tem o primeiro artigo do Knuth


Bônus 3: Minha biblioteca de livros do Knuth. Os quatro Art of Computer Programming (sendo que o vol.4 está autografado e com dedicatória!), o Concrete Mathematics (que é o melhor livro de Matemática ever), três fascículos do Art of Computer Programming em japonês (que foram presente do Carlos Duarte Do Nascimento), e quatro volumes da série de Selected Papers (obras super legais que pouca gente conhece).


Bônus 4: se você ficou curioso com a função Q de Ramanujan, então talvez queira ver minha apostila de Analytic Combinatorics. No exercício 4.71 eu resolvi o assintótico da função P de Ramanujan, que é parente da função Q: http://www.ricbit.com/temp/analytic.pdf
Ila Fox é uma garota muito sistemática, e sempre que recebe um orçamento no email ela adiciona o nome e a data numa planilha no google docs. Aí hoje eu resolvi pegar esses dados e brincar.

Primeiro, eu agrupei o número de pedidos por semana. Depois mandei essa série temporal para o Google Correlate. O resultado foi que essas são as queries mais relacionadas com a minha série:

r=0.8280 festa infantil galinha pintadinha
r=0.8208 convite de cha de bebe 

Olha só, eu forneci para ele uma lista de datas e números, mais nada. Nenhum metadata, nenhuma informação de origem, só datas e números. E com isso ele deduziu que era um gráfico sobre venda de lembrancinhas para festas infantis.

SCIENCE. IT WORKS, BITCHES.
Se a informação na tela está certa, então esse download vai demorar 422 milênios para terminar.


Provavelmente eles escrevem o datagrama num papel, colocam nas costas de uma formiga, e mandam ela vir da Califórnia para cá.

terça-feira, 4 de fevereiro de 2014


Sempre tem os idiotas que defendem o Gentili dizendo que a base do standup americano é a ofensa mesmo. Mas eu vejo dois problemas com essa argumentação.

Primeiro, quem disse que você precisa copiar o humor alheio? A nossa tradição humorística é mais antiga que os standups americanos, os cancioneiros portugueses possuem cantigas de escárnio e maldizer que datam do século 12. 

Segundo, mesmo essas cantigas do século 12, que eram humor ofensivo por definição, sempre ofendiam os abusadores, e não os abusados. As cantigas de escárnio eram indiretas porque se você mencionasse o nome do padre corrupto sendo zoado, você ia para a fogueira.

Agora compara a mediocridade do Gentili com o video mais recente da Porta dos Fundos para ver a diferença: