Este nosso Coding Dojo foi marcado por um novo formato. Desta vez fizemos usando o formato PreparedKata, que tem as seguintes características:
Defini-se um limite de tempo.
A solução é iniciada do zero.
Usar TDD e BabySteps.
Todo passo deve ser explicado para que todos consigam acompanhar.
As pessoas só devem interromper se não estiverem entendendo algo.
É claro que nem todos esses passos foram seguidos a risca, mas na medida do possível todos foram cumpridos.
Tivemos a presença de 13 pessoas bastante concentradas e interessadas, dessa forma, não aconteceram dispersões graves e o fluxo do Coding Dojo seguiu (quase) como o programado.
No início eu, Alê Borba, fiz uma rápida apresentação sobre o ecosistema da Amazon Web Services e sobre como é e para que serve o Elastic Beanstalk. Essa apresentação serviu para deixar todos alinhados com o assunto do Dojo e dar um ponta pé inicial sobre o que seria o Coding Dojo.
O problema que escolhi para este Kata foi colocar o Postmon funcionando no ecosistema do Elastic Beanstalk, com deploy via Git, monitoramento, escalabilidade, conexões externas e tals. E no final, fazer um teste de stress na aplicação para ver a coisa escalar. :)
Para todos entenderem o desafio, vou explicar um pouco sobre como o Postmon funciona hoje e quais eram os principais desafios em colocá-lo no Elastic Beanstalk:
O Postmon, hoje, roda em um único servidor, que serve como servidor de banco de dados e servidor de aplicação, este era o primeiro desafio, separar o servidor MongoDB do servidor onde estava rodando a aplicação. Este ponto foi fácil, subimos uma instância EC2 e cofiguramos nela o MongoDB. Uma outra especificidade do Postmon é ele rodar utilizando o Bottle e o lxml como dependências, ai neste ponto algumas pessoas acham que isso não é um problema, basta colocar no requirements.txt e está tudo certo. Não, errado! Por algum motivo, o PIP utilizado pelos servidores do Elastic Beanstalk não possuem, nos seus mirros, nem o Bottle e nem o lxml. Tivemos que fazer um hack simples para o Bottle e um hack bastante bizarro para o lxml (quem já teve que compilá-lo sabe o quão chato ele é para isso.)
Como o tempo acabou ficando curto, não conseguimos resolver o problema totalmente. Mas combinamos de marcar um dia para revisitarmos o problema, já com uma "pré" solução e fazermos os tão sonhados e queridos pelos presentes, testes de stress! o/
Seguindo com seu cronograma de Coding Dojos quinzenais para toda a comunidade,
a Das Dad recebeu os participantes na noite do dia 06/06/2013.
A linguagem escolhida na hora, entre algumas opções de ambientes montados, foi
Java. O problema foi selecionado no site da OBI, dentre os problemas
disponíveis para treino para a Olimpíada. Foi resolvido o
O mar não está para peixe, que está entre os exercícios de nível 2.
O pessoal que veio mandou muito bem, além do Pair Programming todo mundo
foi para o quadro branco esboçar ideias, pensar e resolver o problema.
Isso enquanto comia o mais fino da trash food provida pela casa.
Na última rodada conseguiram terminar de implementar a solução e enviar no
corretor da OBI, que aprovou o código!
A retrospectiva e o código podem ser encontrados no repositório dos
Dojos da Das Dad.
Se o seu Dojo vai acontecer no Estado de São Paulo e não esta na nossa agenda, entre na lista do DojoSP no Google Groups e faça um post sobre o seu Coding Dojo.
Este Coding Dojo foi o primeiro realizado na sede do Hackerspace de São José dos Campos, o SJC HackerClube. Neste Dojo nós usamos Python como linguagem e o problema escolhido foi a Geração de Fatores Primos.
Como foi um Dojo no meio do feriado e organizado em cima da hora, apareceram apenas 3 pessoas, o que não impediu o pessoal de se divertir. O Fábio cuidou do café pra galera no início do Coding Dojo e fez as apresentações da casa a nós, já que nem eu (Ale), nem o Yuri, conheciamos a sede do clube.
Sem contar que a galera conseguiu dar pau no Python, com um Segmentation Fault #LOL. Coisas da recursividade mal aplicada.
Abaixo a retrospectiva e a foto com a prova do crime! :)
Neste Coding Dojo nós usamos Python como linguagem e o problema escolhido foi o Jogo da Vida. O grande diferencial desta edição é que usamos o tão famoso (e pedido pelo Danilo Bellini) pytest usando o Dose.
O fato de ter um semáforo o tempo todo na tela, avisando a todo o momento como o código estava, ou verde ou vermelho, ajudou bastante e foi bem legal usar essa ferramenta. Mas isso não impediu a galera de gerar conversas paralelas e nem de conversar no vermelho. Ok, confesso que inibiu, mas nem tanto.
Umas das partes mais interessantes (e que se tornaram, também, uma das mais confusas no final) foi o uso dos testes parametrizados, funcionalidade específica do Pytest. Isso ajudou bastante na criação dos testes, mas acabou confundindo um pouco a cabeça das pessoas.
O conhecimento avançado do tutor deste Coding Dojo (Danilo Bellini) cooperou muito para que todos aprendessem coisas bem especificas da linguagem Python, como list comprehension, pytest e parametrize, além de termos usado um editor que poucos conheciam, o Spyder.
Esse Coding Dojo foi organizado pela galera do GruPy-SP, mas precisamente pelo Rodolpho Eck, que esta de passagem pelo Brasil e resolveu juntar a galera pra codar um pouco.
Foi um Dojo muito bacana, pois aconteceu novamente no Google, depois de muito tempo sem nada do tipo no escritório deles. Foi legal também que muitas caras novas (e velhas rs) apareceram e a troca de experiências foi bem interessante.
Como tinhamos muita gente presente neste Dojo e, automaticamente, muitos novatos, o problema escolhido para a sessão foi o "Hello World" FizzBuzz. Como era de se esperar, o problema fácil ajudou muito na fluidez e na prática do TDD e não foi uma barreira para ninguém.
Dentre os pontos positivos, destacados pela galera, tivemos a infra-estrutura do local, a localização, o problema, a linguagem, a grande adesão da galera (creio que não tivemos nenhuma baixa nos inscritos) e a participação de todas as pessoas presentes (todos codaram, sem exceção!).
Como pontos negativos foram destacados os seguintes itens: a falta de babysteps no início, o excesso de babysteps durante (rsrs, sim, sim, isso aconteceu) e, é claro, a conversa paralela durante o vermelho. Como era de esperado, em um grupo tão grande de pessoas, dificilmente conseguiriamos controlar esse tipo de coisa, mas como disse o Rodolpho, fica a dica para os próximos: quem estiver como piloto e co-piloto nos próximos controle mais a galera. :)
Veja nas fotos um pouco do que aconteceu neste Coding Dojo:
Foi um prazer participar do meu primeiro dojo no iMasters!
Muito grato ao Alê Borba pela organização e pelo espaço, e principalmente a todos que participaram! As discussões foram muito boas!
Para quem não foi, o código final realmente não retrata bem o processo. A idéia de fazer commits o tempo todo é muito boa para capturar a evolução.
No caso de ontem, o código chegou a ser várias vezes mais extenso. Funcionava perfeitamente mas estava cheio de código repetitivo. Só numa refatoração final as repetições foram removidas e o array de leds foi introduzido.
Como eu comentei ontem, as repetições explícitas e o array de leds são duas soluções que eu já tinha visto acontecerem para esse problema. Uma terceira solução não envolve array, mas apenas lógica. Vejam aqui
O código acima foi criado na primeira vez que este Dojo com Arduino foi realizado, quando o Garoa participou da programação oficial da Virada Cultural de São Paulo. Foi uma loucura, tinha dezenas de pessoas comprimidas no porão 0 do Garoa e até pessoas do lado de fora assistindo pela janela!
Na época da Virada Cultural a gente registrava os passos da solução em outro arquivo, no caso este:
O primeiro Coding Dojo do ano no iMasters foi feito utilizando PHP e contou com a participação da comunidade PHP de São Paulo, o PHP-SP. Tivemos 3 bons tutores e o Dojo, com relação a linguagem, nada deixou a desejar. O problema escolhido também foi bem didático e ajudou bastante pelo fato de ser simples de entender e de implementar.
Um ponto em que pecamos foi o uso do editor Vim para codar (Xiitas não me matem). Eu, particularmente, gosto muito do Vim e acho bem bacana que as pessoas aprendam a utilizá-lo, mas como o PHP não era dominado por todos, idem para o Vim, foi muita novidade de uma só vez, e fez com que, várias vezes, o piloto emperrasse no uso do editor.
Uma coisa que vale muito destacar foi a desmistificação de que PHP não possui testes unitários e não se consegue fazer TDD e outros métodos ágeis usando a linguagem. Os tutores e membros da comunidade provaram que isto é um mito e que dá sim para se fazer boas coisas e usar boas práticas de programação, desenvolvimento ágil e TDD utilizando o PHP.
Este foi um dos Coding Dojos de maior participação do pessoal e teve uma conversão de quase 100% das pessoas que se inscreveram no encontro!