terça-feira, 10 de maio de 2011

Relato do Dojo@SERPRO Gaelyk: Desenvolvimento Ágil em Groovy nas Nuvens da Google

O que?
DOJO Gaelyk: desenvolvimento ágil em Groovy nas nuvens da Google

Por que?
Aprender um pouco sobre a divertida e dinâmica linguagem Groovy. Além disto, ver como colocar facilmente uma aplicação ou serviços REST na nuvem Google App Engine usando o framework Gaelyk

Quando?
06/05/2011, das 10h as 12h

Onde?
 
SERPRO - Av. Luis Viana Filho, Salvador-BA

Como foi a agenda?
  • 10'  - Visão geral de GAE e Gaelyk
  • 5' - Apresentação do Desafio
  • 1h15' - mão na massa
  • 20' - Retrospectiva

Quem participou? 

  • Serge Rehem
  • Rafael Miranda
  • Mauricio Vieira
  • Marlon Carvalho
  • Mario Jorge Pereira
  • Victor Franco Costa
  • João Paulo Canário
  • Leandro Nunes dos Santos
  • Cleverson Sacramento
  • Vagner Oliveira Pimentel Pereira
  • Luciano Santos Borges
  • Wilson Guimarães

Qual foi o desafio?

Implementar uma aplicação de sorteio e disponibilizá-la no Google App Engine.


O que aprendemos?


Pontos positivos :-)
  • Conhecer uma nova tecnologia
  • O novo conhecimento adquirido aqui
  • Fácil. Rápido de colocar no ar . Prazer em fazer. Aplicação completa \o/
  • O assunto escolhido foi ótimo. O ambiente foi descontraído.
  • Tema interessante. Participantes interessados. Linguagem interessante. Deveria ter toda semana.
  • Desafio interessante que usou diferentes recursos. Chance de ganhar prêmios!!
  • Iniciar o dojo com a aplicação rodando. Ter uma aplicação bem definida. Finalizar o problema proposto.
Pontos de melhoria :-(
  • Não houve TDD? Não pude participar. Baixa participação dos colegas do SERPRO.
  • Monitor do computador com qualidade ruim
  • Poucos prêmios
  • Projetor trepidando.
  • Horário.
Teve slides?
Não.

E fotos?













Cadê o código? O código está no Google Code

Então, mostre-me a aplicação!  http://zorteio.appspot.com/ 

sexta-feira, 1 de abril de 2011

Relato do Dojo@SERPRO: Python GAE + web.py - 01/04/2011

O que?
Coding Dojo de python: Google App Engine + web.py


Por que?
Passos iniciais nas tecnologias web.py e Google App Engine

Quando?

01/04/2011, das 10h as 12h

Onde?
 
SERPRO - Av. Luis Viana Filho, Salvador-BA

Como foi a agenda?
40' - Apresentação da linguagem Python
20' - Apresentação do web.py e Google App Engine para Python
2' - Invenção do problema
45' - Dojo
5' - Retrospectiva

Quem participou? 

 Luiz Carlos (grupy-ba), Maurício, Marlon, Serge, Alexsandro, Luciano, Gustavo, Torres

Qual foi o desafio?

Criar uma brincadeira de 1º de Abril. Cadastro de frases tidas como verdadeiras ou falsas, e posterior pergunta para o usuário final, se aquela frase lhe parece verdadeira ou falsa. Por fim, a aplicação deve mostrar uma estatística do que as pessoas acharam de cada frase.

O que aprendemos?


Pontos positivos :-)
  • Indentação (obrigatória) da linguagem
  • Oportunidade de aprender
  • Uso de aplicação funcionando como exemplo
  • Exemplo legal
  • Bom nível dos presentes
  • Brinde do Comitê de Software Livre do SERPRO (camisetas do Campus Party)
Pontos de melhoria :-(
  • Pouco tempo (3x)
  • "Perdeu" tempo com explicações de Python e GAE
  • Faltou planejamento
  • Não usou TDD nem slides
Teve slides?
Não.

E fotos?



Então, mostre-me o código! O código está no Google Code: http://code.google.com/p/dojo-bahia/source/browse/#svn%2Ftrunk%2Fprimabril

terça-feira, 29 de março de 2011

DOJO na Faculdade Hélio Rocha - Relato de Experiência

Venho relatar minha experiência com os DOJOs que tenho realizando junto com os alunos da disciplina Desenvolvimento Web com Banco de Dados do curso de SI da Faculdade Hélio Rocha.

Já leciono essa disciplina pelo menos 5 anos, e o objetivo dela é passar para os alunos alguma tecnologia web. Iniciei com ASP, PHP e JSP. O primeiro semestre que ensinei, vi que deveria formatar a disciplina de alguma forma mais dinâmica e que, por mais simples que fosse, era bom reservar algumas aulas para passar as linguagens HTML, CSS e JavaScript, o que eu fiz a partir do segundo semestre que passei a lecionar.

Depois de alguns semestres tentando achar uma fórmula interessantes de ensino e após ler o livro Professores e Professauros, vi que a busca por tornar essa aula mais dinâmica era louvável, e, após ter os primeiros contatos com DOJO no Serpro e trocar experiências com alguns colegas que partilhavam dessa mesma visão, vi que para esse tipo de disciplina, não existe forma melhor de passar conteúdo e despertar o interesse dos alunos pela aula.

Minhas primeiras experiências com DOJO aconteceram esse ano assim que entrei no Serpro e talvez por minha falta de prática em TDD, ainda não estou adotando essa técnica da forma que preconiza a prática do DOJO.

O mais difícil na minha opinião é falta de contato dos alunos com programação, apesar de ser uma disciplina de final do curso.

Estou usando uma mistura entre o PreparedKata com o RandoriKata. Abaixo, segue o relato das primeiras aulas do semestre:

Na aula de HTML, sem muita novidade, fizemos uma tela usando div, table e forms.
Na aula de CSS, vimos as formas de usar folhas de estilo e como usar um framework CSS (Formee).
Na 1ª aula de JS, vimos as formas de colocar um script na página e o básico de DOM, fazendo algumas validações de formulário.
Na 2ª aula de JS, vimos os conceitos de JS OO e desenvolvemos uma pequena aplicação usando o GoogleMaps API.
Na 1ª aula de Ruby, não usei DOJO, pois, como a turma não tem experiência em desenvolvimento, fiz uma revisão de OO com Ruby.

Dia 25/03 foi a 2ª aula de Ruby, e a proposta foi fazer um Twitter4Dos (criar um cliente para o twitter que rode na linha de comando), usamos a gem "Twitter" (http://twitter.rubyforge.org/) e fizemos a aplicação abaixo, gostaria da ajuda de vocês para refatorar o código e quem puder ajudar com os testes, ficaria grato.

Propus aos alunos desenvolverem esse sistema usando o FxRuby para a próxima aula 01/04 e devo iniciar com Rails.

Segue código (obs: os atributos de config você pega cadastrando uma aplicação no twitter, solicitei ao twitter uma forma de fazer a aplicação usando usuário e senha, mas eles não deixaram):

require "rubygems"
require "twitter"

class TwitterDos

def initialize
Twitter.configure do |config|
config.consumer_key = "nonononononono"
config.consumer_secret = "nononononononno"
config.oauth_token = "nononononon"
config.oauth_token_secret ="nonononononnooono"
end
@client = Twitter::Client.new
end

def menu
puts "Twitter for dos"
puts "1- Postar mensagens"
puts "2- Ler mensagens"
puts "3- Mostrar seguidores "
puts "4- Sair"
puts "Escolha uma opcao"
escolha = gets().to_i
end

def mostrarseguidores
a = @client.friend_ids.ids.sort.each {|f|
puts Twitter.user(f).name
}
end

def postarMsg
puts "Digite msg: "
msg = gets()
@client.update(msg)
end

def listarTimeLine
a = @client.home_timeline
a.each { |t|
puts t.text
}
end

end

# PROGRAMA PRINCIPAL

t = TwitterDos.new
begin
opt = t.menu
case opt
when 1
t.postarMsg
when 2
t.listarTimeLine
when 3
t.mostrarseguidores
end
end while opt < 4


Sds,
Luciano (@lusabo)

Dojo na FIB: JavaBahia nas Universidades

No II JavaBahia nas Universidades, que ocorreu na FIB em 26/03/2011, fizemos um Dojo usando a linguagem Groovy. Veja no blog do JavaBahia o relato de como foi.

O desafio foi o jogo de Zero A Cem. Tinha bastante gente na sala, portanto infelizmente a maioria não teve oportunidade de programar. Ainda assim foi uma sessão bastante rica. Passei uns 15 minutos explicando sobre Dojo e falamos de como seria o desafio.

Aqui o resumo da retrospectiva:

:D
- Iteração, dinâmica em grupo
- Gostei de tudo
- Gostei da dinâmica da aula, do que foi discutido e apresentado e desenvolvido. Por Mauricio Vitorio Cerqueira
- Idea muito produtiva, evita vícios
- Programação orientada a teste, garante qualidade
- Constante refatoração resulta em melhores códigos
- Encoraja a atitude por parte dos programadores, independente da experiência. Encoraja a refatoração em tempo de codificação
- Conhecer o groovy. Iteração entre pessoas
- Duas cabeças pensam melhor que uma
- Oportunidade de ampliar conhecimento nesse imenso universo da programação
- Boa iniciativa. Parabéns
- Gostei de tudo, pois adquiri conhecimento, e estou no começo do meu curso. E ainda sou leigo em determinados assuntos
- Gostei pelo fato de ter sido muito participativo. A participação do publico melhorou no entendimento
- A pratica mostrou que o treino é muito importante na vida do desenvolvedor
- Bom exemplo de como utilizar o XP na pratica
- Bom, muito bom o nível de conhecimento passado e a interatividade com o pessoal
- Auxiliar na formulação de jogos voltado para a programação
- Pode-se ver novas formas de programar
- Novas modalidades
- Produtividade no aprendizado
- Bom, uma boa didática, pois troca conhecimento entre todos, facilitando o aprendizado
- Dojo bastante dinâmico
- A dinâmica, gera uma bom aprendizado
- Interessante seria usar técnicas de Dojo junto a internet, o qual em uma sala em grupo definiriam a tarefa, e o vencedor seria o quem obtivesse melhor resultado
- Não tem nada que não gostei

:(
- Embolou um pouco o código
- Pratica interessante, porem o tempo curto acaba comprometendo o entendimento
- Alto custo de aprendizado
- Funciona melhor em escopo menores
- Necessita mudança de pensamento na forma de desenvolver
- Falta de padrão
- Poderia ser melhor, ter um exemplo de um problema resolvido pelo palestrante e outro para o grupo
- Precisar –se: Mais vezes, mais dojo, mais informação, mais interação
- Inicialmente parece não sair do lugar
- Dinâmica repetitiva no Dojo
- Necessário regras mais específicas
- Pouco tempo para a explicação do Groovy
- O tempo foi escasso para tanta informação
- Pouco tempo para uma oficina que foi produtiva.
- Intevalo de tempo curto (3x)
- Pouco proveitoso para um publico muito grande
- Mudança de foco constante
- Curto período para desenvolver e concluir o aprendizado

O código produzido na sessão pode ser encontrado no Google Code do Dojo-Bahia.

Abaixo coloco um código que eu já havia criado antes.

class ZeroACemTest extends GroovyTestCase {

def verificaNumero

void testAcertou () {
verificaNumero = new ZeroACem(5)
assertTrue verificaNumero.palpite(5)
}

void testMaior(){
verificaNumero = new ZeroACem(5)
assertEquals 'maior', verificaNumero.palpite(7)
}

void testMenor(){
verificaNumero = new ZeroACem(5)
assertEquals 'menor', verificaNumero.palpite(2)
}

void testApertadinho(){
verificaNumero = new ZeroACem(5)
verificaNumero.palpite(4)
assertEquals 'bebi', verificaNumero.palpite(6)
}
}



class ZeroACem {
def segredo

def sup = 100
def inf = 0

def palpite(numero){
if (segredo == numero)
return true

if (numero > segredo) {
sup = numero
return 'maior'
else
return 'menor'
}

ZeroACem(segredo){
this.segredo = segredo
}
}


Ah, no blog do JavaBahia tem o vídeo da parte introdutória sobre Dojo e também os Slides que utilizei: http://javabahia.blogspot.com/2011/03/ii-javabahia-nas-univerisadades-2011.html

Coding-Dojo na UFBA

Pessoal, venho aqui resumir a experiencia do Dojo realizado em 23/03, na UFBA, à convite do Prof. Manoel Mendonça. A idéia dele para a disciplina Paradigmas e Linguagens de Programação é fantástica! Realizar vários Coding Dojos, com desafios e linguagens diferentes, de forma a explorar as características de cada linguagem. Se eu fosse um dos seus alunos, estaria altamente motivado a participar de uma aula assim. Quem me dera ter tido essa oportunidade no meu curso de gradução em Informática, na UCSal, de 1992 a 1996.

Tive a satisfação de ajudar a conduzir essa primeira sessão. A linguagem escolhida foi Java, utilizamos Eclipse e JUnit. Comecei dando uma rápida explicação sobre o Coding-Dojo (ver slidecast) e depois apresentei o desafio, o mesmo realizado na 1a sessão que fizemos no Serpro, o jogo SuperSenha. Na retrospectiva estávamos sem post-it, então foi no caderno mesmo. Apresentei a técnica Speed Boat (que tinha acabado de ler na revista MundoJ), uma forma divertida de organizar os pontos de melhoria (post-its colados nas âncoras do barco) e os pontos positivos (colados junto à vela, junto com o vento).

:D
- Contato com Java/Junit
- Construção do conhecimento em conjunto
- Prática de TDD
- Programação em Dupla/Grupo
- Dojo no horário da aula
- Participação de pessoa de fora da UFBA, foi uma grande ajuda
- Motivação em relação a práticas de XP
- MOtivação à prática de programação fora do ambneite de trabalho

:(
- Muito tempo ser usar Java
- Falta de prática na linguagem de programaçao usada
- Demora da "apresentação" do piloto/co-piloto
- Cumunicação entre piloto e co-piloto muito baixa
- Demora do entendimento do desafio pela turma
- Interpretação do problema
- Timidez
- Interação da platéia
- Sintaxe Java (muito esqueceram)
- Tempo curto (2x)

Parabéns ao prof. Manoel e aos seus alunos! Para o que precisarem, podem contar comigo e todo o Grupo LinguÁgil. Ah, nos vemos no Maré de Agilidade, em abril na UNEB. Vocês não vão perder né?!

sexta-feira, 25 de fevereiro de 2011

Dojo: BeerKeeper (Android)

O que?
Coding Dojo de Android realizado no Serpro

Por que?
- Passos iniciais na tecnologia Android

Quando?
25/02/2011, das 10h as 12h

Onde?
Serpro - Paralela

Como foi a agenda?
20' - Apresentação do Ambiente de Desenvolvimento para o Android
10' - Apresentação do Problema
100' - Dojo
10' - Retrospectiva

Quem participou?
Marlon, Serge, Cleverson, Thiago, Marcio Albuquerque, Wilson, Luciano, Alexandro, Marcos, Evandro, Daniel

Qual foi o desafio?

Criar uma interface BeerKeeper para registrar a quantidade de cervejas que uma pessoa bebeu.

Em qual linguagem?
Android/Java

O que aprendemos?

Pontos positivos :-)
- Felicidade por não dar bugs misteriosos (igual ao JBoss)
- Ambiente descontraído
- Uso do Android
- Exemplo legal
- Me motivei a estudar iOS
- Java + Eclipse
- Tema muito atrativo
- Problema de fácil entendimento
- Boa explicação do ambiente
- Desenvolvimento de aplicação extremamente úteis
- Aprendizado de nova tecnologia
- O dojo foi bem organizado
- Possibilidade de conhecer nova plataforma

Pontos de melhoria :-(
- Tempo, como sempre!
- Horário meio complicado
- Autocomplete tava lento
- Tentar fazer o próximo pela tarde
- Nem todos participaram
- O atraso da galera
- Preocupação demais com frescura de desenho

Teve slides?
Não.

E fotos?



Então, mostre-me o código!
O código está no Google Code no endereço http://code.google.com/p/dojo-bahia/source/browse/#svn%2Ftrunk%2FAndroid-BeerKeeper

segunda-feira, 21 de fevereiro de 2011

Scmba Dojo #2: SuperSenha (Java)

O que?
Coding-Dojo #2

Quando?
18/02/2011, das 16:00 as 18:00h


Onde?
Local: Sala de Treinamento 2 (Amb.Silva Lima)

Como foi a agenda?
20' -Breve Apresentação do desafio
80' - Programação em pares, rodízio a cada 5 minutos
20' - Retrospectiva


Quem participou?
Danilo Souza, Fabiano Almeida, José Pina, Sergio Weber, Rodrigo Coelho, Marcus Vinicius Oliveira, Heronildes Silva, Luis Ricardo, Diego Trindade, Thiago Rodolfo,Cynthia Kenia,
Jefferson Cardoso, Alex Paranagua, Alexandre Sampaio
Qual foi o desafio?
O Jogo da SuperSenha.

Para o pessoal entender melhor, jogamos um pouco on-line.

Em qual linguagem?

Java, com JUnit e Eclipse.

Retrospectiva

Pontos positivos :-)
-Trabalho em equipe
-1º dojo independente
-Compartilhamento de código
-Integração dos colegas de trabalho
-Fundamental para compartilhamento de código
-Pensamento em conjunto
-Pessoal se expôs mais
-Programação em par
-Dinamismo
-Pessoal começou entender o tdd , como funciona

Pontos de melhoria :-(

-Faltou o baby steps
-Precisava de uma nova apresentação para quem ainda não tinha vindo

-Acompanhar uma logica diferente da que pensava
- Baby steps não foi respetado
-Perdeu o foco no começo da resolução do problema
-Não acompanhamento do raciocínio do piloto anterior
-Falta práticas de algumas como os testes (Junit)

E fotos?




Então, mostre-me o código!

Em breve por motivos de restrição da rede a que da empresa não foi possivel .