22.08.08
Posted in DojoSabado, Erlang
at 12:30 pm
by marivb
Relato escrito pela Jac – finalmente vamos saber um pouco do que aconteceu nas férias! Valeu, Jac!
Escolhemos repetir o mesmo problema da reunião anterior, devido ao desafio e as dificuldades enfrentadas com os cálculos matemáticos (regras de 3 avançadas!).
Tiramos a carta “Change Its Name” que alertava sobre a escolha das palavras para o encaminhamento da solução. Não sei se a carta teve muita relevância para chegar na solução mas com certeza a mudança do approach foi muito importante para conseguirmos terminar o problema.
Antes de iniciarmos, discutimos mais detalhadamente o problema, fizemos alguns desenhos na lousa para esclarecer e rever os pontos de dificuldade e uma pessoa ficou responsável pelos cálculos matemáticos, que foi realmente importante para que o grupos pudesse prestar mais atenção ao código que estava sendo escrito.
No final do problema fizemos um teste de aceitação com os valores que estavam no site mas não conseguimos a correspondência de resultados pois o problema não seguia estritamente o enunciado no qual as montanhas eram iluminadas à leste pelo sol enquanto no nosso problema as montanhas eram iluminadas à oeste, o que alterava a soma das áreas iluminadas das montanhas.
Apesar disso, as pessoas ficaram bastante satisfeitas por terminar o problema.
Retrospectiva
Coisas Legais:
- A discussão do approach antes de começar o problema foi importante para chegar na solução
- O stick to it do tempo foi importante para que todos pudessem codar
- As pessoas estão progredindo no aprendizado de Erlang
- Todos gostaram de terminar um problema
- Tivemos mais pessoas presentes
- As pessoas estão compreendendo melhor os baby steps
Curiosidades de sintaxes – IF:
if
Guard1 ->
Sequence1 ;
Guard2 ->
Sequence2 ;
...
end
Coisas não legais:
- Faltou guru para erlang
- Problema ao seguir regras do enunciado
- Não conseguimos rodar o teste de aceitação
- Característica de paralelismo da linguagem foi pouco explorada
- Faltaram problemas distribuídos
- O problema foi resolvido mas não de acordo com o enunciado, não sendo possível rodar o teste de aceitação do site.
Parking Lot:
- Horário de término do dojo => Estamos terminando muito tarde!
Permalink
02.07.08
Posted in DojoSabado, Erlang
at 5:14 am
by marivb
Post escrito pela Jac, contribuindo como escriba pela primeira vez!
- Data: 21/06/2008
- Participantes: Hugo, Jac, Fabs, Lucas
- Randori: Produto escalar entre 2 vetores, em Erlang com Eunit
- Código fonte: http://dojo_sp.googlegroups.com/web/03SAB-ProdutoEscalarTree.tar.gz
- Fotos: http://picasaweb.google.com/fabriciosn/DojoSabado2106
Como era a primeira participação da Jac no Dojo de sábado o Fabs fez uma introdução sobre Erlang, a linguagem que esta sendo utilizada no Dojo. Depois sorteamos a carta de criatividade “Conform”, discutiusse que a idéia não era ficar conformado, mas agir de acordo, conforme o combinado.
Os problemas propostos foram multiplicação de matrizes e produto escalar.
A idéia inicial era tentar implementar a multiplicação de matrizes, mas como a linguagem não era muito conhecida pelos participantes, o problema de produto escalar foi votado para ser resolvido novamente.
Foi implementada a ideia discutida no último dojo, criar uma árvore binária em que as folhas realizassem a multiplicação de 2 elementos dos vetores de entrada e a cada raiz de uma subarvore soma-se suas folhas e a raiz da árvore somasse os seus filhos.
Retrospectiva
Coisas Legais:
- As pessoas gostaram de resolver o problema utilizando a característica de paralelismo da linguagem
- Há interessados em entender e explorar um pouco mais a característica de paralelismo da linguagem
- Descobrimos que a biblioteca já possuia uma implementação de lista e utilizamos o
split da biblioteca
- As pessoas gostaram de utilizar inlined receives
- O problema foi resolvido com folga de horário
Curiosidades de sintaxes:
- lists: -> importar lib de lista
- round -> arredondamento
- split -> importar lib de lista
Coisas não legais:
If apresenta uma sintaxe estranha
- Não soubemos fazer divisão inteira e tivemos que utilizar o round
- Tivemos pouca gente
- Como acabamos cedo podiamos ter feio mais coisas, mas paramos de codar
- O dojo começou atrasado
- Alguns acham que o poderiamos começar um pouco mais tarde
- Não se sabe onde vão parar os erros do spawn
Parking Lot:
- Como rodar o programa em várias máquinas?
- Como realizar uma divisão inteira?
- Porque aparece um erro de crash dump e o programa roda?
- Os testes são escritos por macros. Como resolver este problema para utilizarmos variáveis?
?_assert: Porque o teste inicia com ?
- Discutiu-se a diferença entre [A,B] e {A,B}
- Verificar a ordem de chegada das mensagens, com o disparo de processos que demandem tempos aleatórios
- Idéias de problemas: WebServer e Celular
Permalink
22.06.08
Posted in Dojo, DojoSabado, Erlang
at 11:37 pm
by adolfo
Como tínhamos uma nova participante, a sessão começou com a apresentação do Dojo. Logo depois, o Fabs deu uma introdução sobre Erlang, a linguagem com a qual estamos realizando os Dojos de sábado. Em seguida, sorteamos a carta da criatividade e deu “Put a lion in your heart”. Passadas as formalidades iniciais, escolhemos um problema: calcular o produto escalar entre 2 vetores. É um problema simples, porém foi muito bom para praticarmos a linguagem ainda nova para nós, TDD, passos de bebê e outras coisas legais que fazemos no Dojo.
Vamos ao problema: dados dois vetores (V1 e V2), deveríamos calcular o produto escalar entre eles, ou seja:
V1 = (a, b, c)
V2 = (a´, b´, c´)
V1 . V2 = a . a´ + b . b´ + c . c´
Discutimos um pouco e fomos logo à prática. Durante a sessão, as interrupções no vermelho foram freqüentes e bem-vindas. Precisamos disso para que o Fabs, quando estivesse na platéia, pudesse tirar as nossas dúvidas a respeito da linguagem. A sessão fluiu muito bem assim, até que chegamos a um código que resolvia o nosso problema. Ficamos tão empolgados que passamos a brincar de escrever testes com vetores diferentes só pra ver passar.
Com uns 30 minutos para a chegada da retrospectiva, resolvemos mudar a implementação para fazer os cálculos de forma distribuída. A nossa intenção era criar uma árvore binária, de modo que as folhas realizassem a multiplicação de 2 elementos dos vetores de entrada, a raiz de cada subárvore fizesse a soma das suas folhas e a raiz da árvore somasse os seus filhos. Acho que uma imagem pode ajudar:



Desta forma, as multiplicações das folhas da árvore poderiam ser feitas por processos diferentes e, enfim, testaríamos o processamento distribuído, característico de Erlang. Começamos o trabalho mas não fomos muito longe pois era hora da retrospectiva.
Retrospectiva
Coisas Legais:
- Atingimos mais do que o esperado. O nosso código “ProdutoEscalarChain” resolveu o problema
- Codamos bastante (estávamos em 3 pessoas somente)
- O problema simples permitiu que aprendessemos bastantes coisas de Erlang
- Gente nova no Dojo
- O bloco “receive … end” do Erlang
- A analogia que o Fabs fez entre Classes e Mensagens
- O Fabs explica bem

Coisas não legais:
- Pouca gente nesta sessão
- Erlang tem uma sintaxe estranha
- Ter que fazer vários “receive … end” para receber o retorno de mais de 1 spawn (pode ser que a linguagem permita manipular o retorno de mais de 1 spawn em um único “receive … end”. Precisamos estudar mais a linguagem para utilizar melhor os seus recursos)
- A letra do Fabs é feia (ele mesmo quem escreveu isso)
Ainda deu tempo de discutirmos um pouco do porquê do Dojo ter fluido tão bem neste sábado. Com certeza, o número reduzido de pessoas ajudou. É um desafio nosso encontrar uma maneira de manter a fluidez e produtividade em sessões com mais gente.
Por fim, o Fabs ficou de disponibilizar o PDF da primeira parte do livro de Erlang, o que ele já fez. O arquivo pode ser baixado do grupo ou diretamente de http://www.erlang.org/download/erlang-book-part1.pdf
Permalink
18.06.08
Posted in DojoSabado, Erlang
at 5:54 pm
by marivb
- Data: 07/Junho/2008
- Participantes: Bruno, Fabricio, Helio, Lucas, Cecilia, Mariana e Hugo
- Kata/Randori: Números de Fibonacci e Produto escalar, em Erlang com EUnit
- Código Fonte: http://dojo_sp.googlegroups.com/web/01SAB-introErlang.tar.gz
- Fotos: http://picasaweb.google.com/fabriciosn/DojoSBado07062008
Na primeira edição do Dojo de sábado, apenas o Fabrício tinha explorado uma linguagem desconhecida, o Erlang. Ele não tinha um Kata pronto, mas propôs apresentar o que sabia sobre a linguagem. Começamos bem simples, resolvendo o problema de calcular números de Fibonacci. Vimos um pouco de sintaxe, o básico da biblioteca de testes, como rodar os programas, como definir funções, entre outras coisas.
A seguir, pedimos por um exemplo mais complexo – que usasse algo listas, algum condicional ou até troca de mensagens. Então Fabricio apresentou uma versão bem simples do produto escalar entre vetores, usando listas e troca de mensagens entre processos. A implementação foi linear, e o grupo queria tentar uma abordagem pelo menos um pouco mais concorrente.
Discutimos um pouco as alternativas, e esboçamos a “árvore de execução” que a gente queria atingir. Na parte final do Dojo, mudamos para o formato Randori para tentar implementar uma solução na abordagem sugerida. Mas antes de terminarmos o problema, terminou o tempo, e partimos pra retrospectiva.
Retrospectiva
O que foi bom:
- Alguém estudou uma linguagem nova, e apesar de não ser um Kata completo. Talvez por isso, notamos que Dojo com Erlang fluiu melhor que com Lua
- O paradigma de Erlang é muito diferente de tudo que já usamos no Dojo anteriormente. É mais funcional e mais orientado a programas paralelos. Aprendemos um pouco sobre ambos os conceitos ao experimentar a linguagem.
- O formato Kata + Randori funcionou bem para uma primeira exploração da linguagem.
- Tinha um bom número de pessoas (Dojo de sábado não foi um fracasso
)
Além disso, aprendemos:
O que atrapalhou:
- Várias pessoas estavam com sono (sábado de manhã é difícil…
)
- Pouco conhecimento da linguagem atrapalha um pouco – não entendemos os motivos de erros, e não entendemos por que falhou o último teste
- Formato de exploração é estranho – em alguns momentos não sabíamos o que fazer a seguir
- Erlang nos parece estranha
Parking lot:
São dúvidas que ficaram em aberto, sugestões para reuniões futuras, etc:
- Como rodar os programas de maneira concorrente? Como preparar um ambiente de execução?
- Encontrar problemas para resolver com concorrência / problemas paralelizáveis
- Idéia de problema: chat em Erlang
- Dá pra receber mensagens em qualquer ordem?
Permalink