quarta-feira, setembro 01, 2010

Node Knockout (Parte 2)

Pois bem, quando eu li que haveria uma espécie de hackday/hackaton para desenvover projetos com o node em 48 horas, me empolguei e mandei um email p/ um monte de gente perguntando quem se animava para formar uma equipe, depois de duas confirmações anunciei no meu twitter e consegui completar 4 pessoas. Só gente boa, um designer de mão cheia e mais dois programadores um aluno e um ex-aluno do ICMC.

O Daniel e o Mauricio viriam de São Paulo, e o Armando tinha aula até tarde na sexta, então começariamos mesmo p/ valer só no Sábado (a largada foi Sexta as 21 e o fim no Domingo as 21). Não tinhamos muito bem definido o que seria o projeto, durante a semana estavamos fazendo uns brainstorms num notepad compartilhado, mas só especulando o que daria p/ fazer, que explorasse as coisas boas do nodejs (aguentar muitas conexoes simultaneas, ter libraries de websockets, nosql databases e varias outras "mudernidades").

Então sexta eu comecei com testes do Socket.io, para ver se instalava legal no VPS da Joyent que deram p/ nossa equipe e tentar fazer um chat simples rodar, porque qualquer das ideias que estávamos ainda cogitando iria precisar deste passo inicial de fazer clients diferentes trocarem mensagem. A noite meu irmao chegou, discutimos um pouco e rabiscamos muito o flipchart aqui de casa(preciso tirar fotos e subir pro flickr) para ir amadurecendo tanto o conceito quanto ir limando coisas que pareciam ser inviáveis p/ um período tão curto de tempo, jantamos fora e depois encontramos com o Armando em um café para sincronizarmos o que tinhamos discutido até então.

No sábado chegou o Daniel, e a coisa séria começou de verdade (ele programa melhor que eu), sentamos no mesmo computador e ficamos quase o dia todo pair-programming na minha máquina, quebrando a cabeça para fazer nossos servidores de sockets se comportarem como queriamos. Enquanto isso meu irmão criava no 3D elementos de UI com visual incrível (dê uma olhada!) que poderiam ser utilizados nas demos, e o Armando ia tentando se entender com a API de eventos multitouch do Mobile Safari, pois sabiamos que queriamos mostrar algo no iPod e no iPad, feito em HTML. Um trabalho de equipe muito empolgante apesar de cansativo.

Muito café e muita sinergia num apartamento quente e cheio de poluição sonora vindo da rua (carros de som de políticos com músicas repetitivas, alarme de lojas disparando, enfim…).

Ao fim do sábado parecia que não iriamos dar conta do desafio que impusemos a nós mesmos, e mesmo o conceito e definição do que fariamos ainda estava confuso. E todos poderiam usar algumas horas de sono. Demos o dia por encerrado.

Domingo de manhã o dia começou bem melhor do que o Sábado terminou: o Daniel resolveu trocar a abordagem e abandonamos o Socket.io em favor do Faye, o que foi a sacada para o tipo de objetivo que estávamos tentando alcançar (Mobile Safari não tem suporte a websockets), além disso finalmente chegamos a um consenso sobre o que seria e como vender o projeto, agora era só correr para colocar tudo no lugar. E como corremos… a reta final foi alucinante.

Entregamos no prazo, o que foi inacreditável, e até que não ficou tão ridículo, pelo contrário eu me orgulhei bastante… mas falo do projeto e do resultado em si no próximo post.

Enquanto isso, leia somente a sequência de commit messages do nosso repositório, do começo para o fim como se fossem status updates do twitter… da para ter um pouco de noção da loucura que foi nosso fim de semana :)

[Update] Confiram as partes 1 e 3 deste post.

3 comentários:

Maurício Maia disse...

Parabéns caras! Ficou bem foda o projeto. Ainda mais legal tendo sido executado em um hackday.

"Hack days to day to day development is like The Ramones to The Beatles" - @codepo8

abs!

Fabricio disse...

Com certeza, é muita adrenalina estes hack days, todo mundo deveria saber programar, deveriam ensinar isso junto com Inglês nas escolas, é muito emancipador e gratificante alguém poder ter uma idéia doida e ir la e implementar, todos deveriam ter a oportunidade de sentir isso :D

Icerulz disse...

Concordo com o Fabricio, devia-se aprender isto nas escolas. As pessoas que estão em casa e só sabem fazer os basicos no pc e não vem isto, não sabem o que estao a perder :s