DojoRio@UFF – 29/06/2010

quarta-feira, 30 junho 2010

Fala pessoal,

Rolou hoje, como era esperado, mais um DojoRio@UFF. O problema que escolhemos foi o do Jogo da Velha. Dado um jogo terminado, deveríamos dizer se o X ou o O ganhou ou então se deu velha como resultado.

A linguagem escolhida foi Python e nós conseguimos andar bastante com o problema. Faltou somente a avaliação das diagonais para fecharmos. Entretanto, todos já tinham uma visão de como seria feito no final.

Haviam presentes 9 pessoas:

Os pontos positivos levantados foram:

  • Todos programaram mais de uma vez +++++++
  • Problema bem legal +++
  • Ter sido Python ++++
  • Bernardo falou menos
  • Pessoal mais seguro programando em Python
  • Brasil nas quartas
  • Quase resolver o problema +
  • Comparação ternária em Python
  • Uso de tuplas
  • Uso do Dojotools com commit automático ++
  • Ótimas refatorações +

Os pontos a serem melhorados:

  • Faltou o mouse ++++
  • Acabou no finalzinho do problema
  • Poucas refatorações
  • Código “pouco” refatorável
  • Pessoal que faltou
  • Cálculo tá foda
  • Uso abusivo de iterações
  • Horário
  • Vir sem ressaca

Deixaram de sugestão:

  • Fazer um próximo Ruby ou C ou PHP
  • Fazer em alguma linguagem que ainda não fizemos

Até a próxima,

Bernardo Fontes

Anúncios

dojoPetrópolis 19/06

terça-feira, 22 junho 2010

Depois de um tempo sem rolar Dojo em Petrópolis, devido ao feriado (3) e dia dos namorados (12), nós voltamos a nos reunir no sábado (19/06).

O problema resolvido foi o que deixamos pela metade no Dojo anterior, a contagem regressiva da Nasa, depois dele como de costume deixamos um problema pela metade :), que foi o problema dos números romanos.

Tivemos um tempo para verificar qual método é mais rápido para se gerar uma lista regressiva, usando o append e no final utilizando o reverse ou usando o insert no índice 0. Chegamos a conclusão que com o reverse no final é consideravelmente mais rápido. Vamos aos números (from time import time):

Com o reverse no final:

  • 0.000529050827026
  • 0.000532150268555
  • 0.000314950942993

Com o insert no índice 0:

  • 0.00117588043213
  • 0.00115299224854
  • 0.00116109848022

O que foi bom:

  • Tempo para 2 problemas diferentes.
  • Uma pequena criança de 12 anos programando com a gente (Miguel)
  • Chokete (chocolate)

O que pode melhorar:

  • Mouse
  • Novamente o teclado
  • Programadores apressadinhos

Participantes:


DojoUFF – Turma de Prog. 2!

terça-feira, 22 junho 2010

Hoje tivemos Dojo em Niterói. Mas não foi como estamos acostumados. Tivemos uma Aula-Dojo, na turma de Programação de Computadores II, do segundo período do curso de Ciência da Computação da UFF. Foi uma iniciativa do Prof. Dante Corbucci que, junto com o Daniel Castellani, levou o Dojo para turma. Como eu também sou aluno dessa turma, aproveitei para participar e incentivar o pessoal a entrar no jogo.

A maioria não conhecia testes automatizados, nunca tinha ouvido falar sobre TDD e muito menos BabySteps. Assim foi necessário um problema que não causasse preocupação inicial e possibilitasse que todos se ligassem mais no entendimento do jogo. Então escolhemos começar com o clássico problema de primeiro Dojo, o FizzBuzz, para depois avançarmos para um problema mais no nível da turma.

Tivemos 2 horas de aula de puro Dojo! A implementação foi em Java, que é a linguagem utilizada no curso, com JUnit para os testes. Tudo funcionando com o NetBeans, que também é utilizado no curso e todos estavam acostumados.

Após explicações iniciais tudo fluiu muito bem. O pessoal entendeu sobre a necessidade de não falar enquanto os testes estavam quebrando, participou depois dos testes passarem e as duplas foram muito bem na implementação. O professor também fez suas sugestões e deixou a turma conduzir a implementação.

Foram várias sugestões de refatoração. Algumas para deixar o código mais legível e reduzir a quantidade de if-else, por exemplo. Outras para usar melhor os recursos da linguagem, como substituir o uso de String por StringBuffer devido às várias concatenações.

Após resolvido o FizzBuzz, foi escolhido outro problema. Nesse era necessário partir de dois arquivos textos, onde em cada um deles teria um número inteiro por linha, e construir um terceiro arquivo texto, com o conteúdo dos dois anteriores mas sem repetição de números. Porém a aula já estava acabando e não foi possível evoluir muito.

A turma tem aproximadamente 25 alunos e a maioria estava presente. Quase todos programaram. Talvez reduzir o tempo de 5 para 4 minutos seja melhor para dar oportunidade a todos. Não lembrei de pegar o nome de todos os presentes e não houve retrospectiva também, pois a idéia de fazer esse post surgiu de repente. Nos próximos, já temos isso pra melhorar. O Daniel tirou fotos. Assim que ele me mandar eu coloco aqui no post junto com o código.

No final, ouvir a galera animada e dizendo: “queria ter tido isso desde que entrei na faculdade”, foi sensacional. Espero poder relatar aqui muitas outras aulas como essa.

Rafael Carvalho


DojoRio@Niterói – 17/06/2010

sábado, 19 junho 2010

Pessoal,

Rolou nessa última quinta-feira mais um DojoRio@Niterói! O Dojo, para variar, foi bastante proveitoso, mesmo contando com um menor número de pessoas do que as últimas três edições. Mas, ainda assim, várias pessoas compareceram. O problema foi o problema matemático dos Happy Numbers. Era bem simples, dado um inteiro, ele deveria dizer “I’m happy” no caso de ele ser feliz ou “I’m sad” no caso contrário.

A linguagem escolhida na hora foi Javascript. A escolha da linguagem foi bastante proveitosa em função das explicações sobre algumas peculiaridades dela e também do funcionamento do Jsspec (ferramenta que utilizamos para viabilizar o TDD). Fizemos uso do DojoTools com o commit automático e toda a evolução do código vocês podem ver aqui. Além isso, rolou uma discussão sobre desacoplamento de código e como desenvolver o código de maneira que no futuro ele se torne sustentável.

Bem, estavam presentes 12 pessoas:

Os pontos positivos que o  pessoal levantou foram:

  • Problema +++++++
  • Rolou a apresentação da galera antes do Dojo
  • Usar um problema matemático +
  • Todos programaram +++
  • Cleiver participou
  • Comida ++++
  • Paçoquinha
  • Javascript ++++
  • Aprender que Java não tem nada a ver com javascript
  • Conhecer o jsspec
  • Programar pela primeira vez no Dojo
  • Começou no horário
  • O pessoal que chegou cedo e arrumou a sala antes
  • Terminamos o problema ++
  • Refatoração com baby steps
  • Código desacoplado +++
  • Usar mais de uma suíte de testes
  • Discussões +++
  • Discussão na lista do DojoRio
  • Ar condicionado
  • Menos falação na plateia

Os pontos a serem melhorados foram:

  • Número menor de participantes +
  • Operador ^ do javascript
  • Final apressado +
  • Variáveis com nomes confusos no final +
  • Chegar atrasado +
  • As discussões da lista assustaram a galera? ++++
  • Ter que sair mais cedo +
  • Sintaxe do javascript
  • Convenções de javascript
  • Ver o problema antes
  • Plateia dando opinião sobre o código quando no vermelho

Como sugestões ficaram:

  • Fazer algum Dojo em Python ++
  • Fazer algum Dojo em Ruby
  • Fazer algum Dojo em C
  • Fazer algum Dojo em PHP
  • Ser em javascript de novo
  • Afastar o piloto e o copiloto do projetor

Depois rolou um pós-dojo na Cantareira com direito a cervejinha no Tio Cotó, chopp de graça depois, choppada de Educação Física e sambalanço no São Dom Dom. Provavelmente na próxima semana não teremos o Dojo porque vai ser feriado em Niterói. Mas, já estamos pensando em fazer alguma coisa no lugar. Arduino Hack ‘n’ Beer Day ou algum Sprint? Enfim, fica a ideia.

Até a próxima,

Bernardo Fontes


DojoRio@Lapa – 16/06/10

quinta-feira, 17 junho 2010

Ontem foi mais um dia de Dojo na Lapa.

A galera tem comparecido em massa, se não fosse pela sala nova estaríamos espremidos na sala debaixo.

Bem, vamos ao que interessa:

O problema foi o tesoura-papel-pedra. Dada duas jogadas, o retorno seria o vencedor.

ex: papel e tesoura, a saída é tesoura.

A linguagem utilizada foi Ruby, juntamente com o framework de teste RSpec. O BDD foi muito bem aceito pelo pessoal e foi sugerido utilizar o Cucumber da próxima vez.

O ponto alto do dia foi a sugestão da refatoração, onde conseguimos reduzir drasticamente o código que estava escrito. Associado a isso implementamos a refatoração utilizando integração contínua, que fez com que não quebrássemos o código.

A demora na escolha do problema nos levou a repensar como estamos realizando o Dojo e propomos levar sugestões de problemas para debater 10min antes de começar a sessão, com o intuito de ganhar mais tempo para mais pessoas programarem e/ou programarem mais vezes.

Um ponto interessante foi o site que uma das participantes abriu para sugerir problemas, o ProjectEuler, site só com problemas de matemática.

O que foi bom 🙂

  • Ruby+++++
  • RSpec+++
  • Problema
  • Sala nova
  • Aprender a programar com Ruby
  • Comida farta
  • Integração Contínua
  • Wireless
  • BDD
  • Pessoal novo
  • Refatoração
  • Casa cheia+++++
  • Interatividade
  • Posição ótima do Projetor
  • Recorde de mulheres
  • Discussão sobre DSL
  • Mexer em um Milestone
  • Liberdade para participar da forma que se sente bem

O que pode melhorar 😦

  • Demora na definição do problema+++++
  • Faltou Queijo
  • Local onde o quadro com a definição do problema está
  • Não utilizou Cucumber
  • Muito if no código
  • Quebrar o vermelho
  • Não prestar atenção na implementação
  • Atalhos do gedit
  • Não tenho carinha triste

Participaram:

E mais uma penca de pessoas que eu não sei o nome e/ou não se identificaram no papel. Estiveram presentes cerca de 24 pessoas.

é isso. Abs.

Fact:

  • Programo em .Net mas não sou bobo não.

Dojo IFF [8] [9] e [10]

quinta-feira, 17 junho 2010

Eu voltei, agora pra ficar. Porque aqui, aqui é o meu lugar…”

Dojo sobre IFF

O Coding Dojo Campos O Dojo IFF (já que desde 10-04-2010 não somos mais o único grupo de Dojo de Campos, tendo também a galera da UENF que tá mandando ver nos Dojos :D)  está de volta \o//

Nós nos reuniamos as quarta-feiras e voltamos na quarta passada (09-06-2010) a fazer isso.

Porém, antes de falar da quarta passada ou de ontem, como o último relato que publicamos aqui foi o do dia 24-03-2010, mas nós na verdade tivemos Dojo até o dia 14-04-2010, resumirei aqui, num mini flashback gigante os relatos de Dojos que ainda não foram postados e em breve posto sobre o Dojo do dia 09 e o de ontem!

.

Dia 31-03-2010

Problema: Converter Inteiros Para Romanos em Java -> Código e relato

Foi o primeiro Dojo Campos em Java e contamos com o Rodrigo Manhães para guiar-nos com a linguagem. Usamos JUnit4, Hamcrest e o Eclipse IDE. Decidimos pegar um problema simples, por ter pouca fluência na linguagem. O problema foi o de conveter números inteiros para números romanos. Contamos com a presença de um ex-colega de trabalho, Vanderson Mota (Argentino), que estava de passagem. Não terminamos o problema, mas chegamos num ponto razoável. Todo mundo ficou procurando uma lógica matemática pra fazer a conversão, mas ninguém encontrou e acabamos mapeando alguns números.

Participantes:

.

Dia 07-04-2010

Problema: Produto Escalar de Vetores em Python -> Código/relato/fotos

Tivemos um dojo muito animado e produtivo e bem didático nessa quarta! Tivemos problemas em configurar o Eclipse para usar Hamcrest e JUnit4, que foram as ferramentas de teste que usamos no dojo anterior… Então, acabamos desistindo do Java e optando por fazer em Python (sem muita resistência, diga-se de passagem!)

Levamos 3 problemas para escolher: Produto Escalar de Vetores, Amigo Secreto e Dama. A maioria queria o do Amigo Secreto, mas logo percebemos que teríamos de controlar uma coisa aleatória e isso ia dar uma complicada nas coisas. Complicada essa que seria bem válida, aprender um pouco sobre mocks, stubs e tal… Mas como tínhamos pessoas novas no dojo, optamos pelo mais simples, que no caso foi Produto Escalar de Vetores, que permitiria mostrar umas coisas próprias da linguagem e avançar mais no problema. E deixamos a questão de testar usando mocks e stubs para o futuro.

Como imaginávamos, terminamos o problema bem rápido por ser simples, o que foi bom, pois pudemos adicionar tratamento de erros e fazer um refactoring legal do código. Um valeuzão ao Hugo que mandou muito bem na didática da parada e deu um belo gás a galera =)

Ficamos por 1:30h mais ou menos e todo mundo programou \o/

Participantes:

Retrospectiva:

Cool:

  • Todo mundo programou
  • Teve gente nova \o/
  • Quase todos preferiram Python
  • #horaextra no Arpex (relato abaixo!)

Oh, shit:

  • Atrasou mesmo marcando pra mais tarde que o anterior
  • Trocamos de linguagem porque não configuramos o ambiente
  • Cabos de energia no meio do caminho

P.S.: Não podíamos dessa vez deixar de fazer também um pequeno relato da #horaextra! Fomos no forró do Arpex e a galera do #DojoCampos mostrou que tem gingado! Agora, além de ajudar na organização dos dojos, o nosso amigo Mario Jorge ficou encarregado de fazer um tutorial “Abc Do Forró” e disponibilizar para a galera!!!

É isso aê! Programação, aprendizado, diversão e amizade! 😉

.

Dia 14-04-2010

Problema: Brothers em  Java -> Código/relato

Mais uma vez tivemos problemas com sala e projetor. Havia a nossa sala, mas todos os projetores da coordenação de informática estavam em uso. Conseguimos uma sala na multimídia e fomos para lá. Apareceu muita gente nova, na verdade a maioria era novato no dojo. Usamos Java, como o combinado, e o Eclipe como IDE. O Hugo, levou um problema: CodeBreaker e Diego Manhães levou um outro: Brothers. A maioria preferiu tentar fazer o Brothers. Rodrigo começou o Dojo por ser a pessoa mais indicada a montar a estrutura do pacote Java, com Hamcrest e JUnit 4. Um ponto interessante foi que Rodrigo introduziu alguns javismos que muitos não conheciam. O dojo até que estava andando bem, os novatos programando, até que alguém chegou e disse que tinha reservado a sala naquele horário. Fizemos uma retrospectiva, trocamos algumas idéias e finalizamos o Dojo.

Participantes:

Então é isso… Fim do flashback e até o futuro!


DojoRio@UFF – 15/06/2010 Em ritmo de Copa

quarta-feira, 16 junho 2010

Galera,

Rolou ontem mais um DojoRio@UFF. Só para lembrar, esse Dojo é regido pelos calouros do Curso de Ciência da Computação com o intuito de eles aprenderem entre si, já que a discrepância entre as diversas turmas das disciplinas Programação I e II do curso é bem grande.

Para manter o clima de Copa do Mundo, o problema foi fazer um avaliador de bolão. De entrada era esperada duas ou mais apostadores, suas respectivas listas de apostas e uma lista com os resultados finais das partidas. A saída deveria ser o nome do apostador que foi vencedor e a pontuação que ele obteve. Diferentemente da Copa e felizmente, nós não tivemos vuvuzelas presentes na sessão.

O código resultante está nesse repositório no Github. Como nós usamos o parâmetro para ativar o commit para o repositório git a cada salvamento de arquivo do Dojotools, vocês poderão pelo no histórico de commits como foi a evolução do código e nossos erros.

A abordagem para o problema foi bem discutida e a modelagem que nós adotamos nos ajudou muito a manter o código sustentável. Além disso, o fato de testarmos primeiro os casos de comparação entre dois resultados para depois atacarmos a solução final foi essencial para o entendimento e o desenvolvimento de maneira organizada do código.

Estavam em campos 10 jogadores:

Os pontos positivos foram:

  • O problema +++
  • Biscoitos +++
  • Época de Copa do Mundo
  • Jogo do Brasil no DCE +
  • Explicação do and e or simulados por if’s e o caso ter acontecido depois
  • Começar a realmente entender Ruby
  • Ruby é sexy ++
  • Todos programaram +
  • Dojotools com o git ++
  • Orientação à objetos ++
  • Discussões boas ++++
  • Veio uma galera boa +
  • Ambiente
  • Linguagem nova ++
  • Iniciativa dos calouros propondo modificações no Dojo
  • Modelagem é tudo e resulta em avanço
  • Mouse
  • Quadro impedindo o reflexo do sol
  • Avanço no código da maneira sustentável +
  • O horário

Os pontos a serem melhorados foram:

  • Faltou a apresentação das pessoas
  • Demorou para começar ++++
  • Professor que passa exercício pra nota faltando 5 minutos pro Dojo ++++
  • Faltou tempo
  • Bug do Dojotools
  • Uso radical dos baby steps
  • Ausência de um pessoal ++
  • Comida desnecessária no horário
  • Não poder ver o código ser desenvolvido por inteiro +
  • Mosca imortal enchendo o saco
  • Não entendimento sobre discussões importantes

Como sugestões ficaram:

  • Fazer algum em PHP
  • Fazer algum em C
  • Melhorar a posição do piloto e copiloto

O Dojo foi bastante proveitoso, principalmente em função de duas discussões. A primeira foi fruto da ideai do Lucas de fazer a maioria dos Dojos nesse horário em Java pelo fato de a maioria dos que frequentam o Dojo nesse horário estarem aprendendo Java. Alguns participantes aprovaram e outros não. Enfim, como o Dojo é deles e para eles, eles ficaram de conversarem entre si e decidirem o que vão fazer. Esse fato por si só já é interessantíssimo.

Para não ser injusto com ninguém e nem tendencioso (afinal eu estava dentro da discussão com as minha opiniões) prefiro dizer somente qual foi o assunto da segunda discussão. Bem, a segunda discussão foi tocada em função do conceito de Baby Steps e de como ele funciona em conjunto com o TDD. O importante é que no final todos continuaram com a opinião de que de fato desenvolver software usando TDD e baby steps é altamente produtivo.

Até a próxima,

Bernardo Fontes