domingo, 28 de fevereiro de 2016

Dica da semana: saiu no steam um jogo MUITO BOM chamado SuperHot. É um fps clássico de dar tirinho nos inimigos, a diferença é que o tempo só avança quando você se move. Então você joga como se fosse um bullet time infinito onde você é o Neo do Matrix ou o Quicksilver dos X-Men. A estética é inspirada nos anos 90, quem usava DOS vai curtir os easter eggs também.
(Eu ultimamente ando resistente a jogar no PC, mas esse jogo é tão bom que me fez jogar com teclado e mouse de novo).
Aqui o trailer:


Mais um dia normal de trabalho.


quinta-feira, 25 de fevereiro de 2016

Dia desses eu fui procurar fotos que tirei da minha coleção de celulóides de animação. Para isso eu fui no google photos e digitei CEL. Apareceram essas fotos aí embaixo haha.
Decerto tanta gente procura errado cel com L que o google aprendeu a grafia nova. Fica a lição, seu machine learning é apenas tão bom quanto os dados de entrada.


domingo, 21 de fevereiro de 2016

Mexi mais um pouco no meu mapa do Doom, agora você pode dar zoom no mapa com mouse, como se fosse o google maps. Também ajustei o sistema de coordanadas, então as texturas estão na escala correta.

Vendo em detalhes com zoom alto, acabei achando outro bug. Na fase E1M8 tem o portal para outra fase, era para ser um quadrado onde está desenhada a cara cruel do capiroto. Mas como eu não implementei o painter's algorithm, o capiroto fica escondido debaixo do tapete e não dá pra ver. Preciso ordenar os polígonos no z para aparecer.

Para testar:http://www.ilafox.com.br/doom/doom.html
Src:https://github.com/ricbit/ricdoom


Essa semana eu recebi um email perguntando se eu poderia participar de uma pesquisa sobre fio dental. Achei esquisito, mas continuei lendo. Dizia lá "Como você é desenvolvedor do firefox...", e aí caiu a ficha, não era fio dental, era software livre, eu traduzi errado smile emoticon
Mas eu não sou desenvolvedor do firefox não. Eu fiz um commit de uma linha pra ele só, e a história é engraçada. Minha tarefa do dia no trabalho era mudar o cursor que aparece em cima de um botão. Mole né?, só mudar o css. Mas aí aconteceu o bizarro, funcionou no chrome e no IE, mas não funcionou no firefox.
Eu fiquei uma manhã inteira tentando achar o problema no meu css, mas acabei concluindo que na verdade era um bug do firefox mesmo. Então eu podia mudar o css do site todo só para cobrir esse caso, o que ia levar um dia inteiro; ou consertar o bug do firefox, que era rapidinho. Acabou que eu escolhi consertar o bug mesmo.
Mas foi uma boa lição para notar a diferença entre developer time e time to market. Eu levei meia hora para fazer o patch e submeter, mas foram três meses até o patch ser revisado e aceito!
Aqui o video de onde eu tirei o screenshot, é o melhor video ever sobre firefox, recomendo!
https://www.youtube.com/watch?v=VTz5MtxrDTA





sábado, 20 de fevereiro de 2016

Meu mapa do Doom agora tem texturas! Ainda falta consertar o polígono aberto do E1M3, e as texturas estão no sistema de coordanadas errado, mas tá valendo.
Esse exercício todo foi para ficar fluente em javascript. Acho que atingi o objetivo, então posso dar uma opinião informada sobre a linguagem. Minhas conclusões são que:
0. Javascript é uma bosta.
1. É uma bosta por dois motivos, o primeiro é que, por design, ela é orientada a estado global. O document é global; window é global; as variáveis são globais por default; se você forçar a ficar local, é local na função e não no escopo; o inheritance é baseado em prototype, que é um objeto global. O único jeito de ficar são é programando com patterns funcionais e métodos puros, então eu não me imagino programando javascript sem libs funcionais como underscore ou lodash.
2. O segundo motivo é que ela compartilha o design do html e do css, que é fazer parsing generoso e falhar silenciosamente quando erra. Se você digitar um typo no nome de uma variável, ao invés de dar erro ela vai ficar undefined e vai carregar esse undefined por todo o seu código. É horrível de debugar. Ligar o strict mode ajuda, usar o jshint ajuda, mas é tudo paliativo porque isso foi uma decisão de design lá no começo e não tem como voltar atrás agora.