22.08.08

Dojo Férias 2 – Sunny Mountains

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!

02.07.08

Dojo Sábado 03 – Produto escalar de vetores

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:

  1. As pessoas gostaram de resolver o problema utilizando a característica de paralelismo da linguagem
  2. Há interessados em entender e explorar um pouco mais a característica de paralelismo da linguagem
  3. Descobrimos que a biblioteca já possuia uma implementação de lista e utilizamos o split da biblioteca
  4. As pessoas gostaram de utilizar inlined receives
  5. 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:

  1. If apresenta uma sintaxe estranha
  2. Não soubemos fazer divisão inteira e tivemos que utilizar o round
  3. Tivemos pouca gente
  4. Como acabamos cedo podiamos ter feio mais coisas, mas paramos de codar
  5. O dojo começou atrasado
  6. Alguns acham que o poderiamos começar um pouco mais tarde
  7. 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

22.06.08

Dojo Sábado 02 – Produto Escalar de Vetores

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:

Árvore binária

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:

  1. Atingimos mais do que o esperado. O nosso código “ProdutoEscalarChain” resolveu o problema
  2. Codamos bastante (estávamos em 3 pessoas somente)
  3. O problema simples permitiu que aprendessemos bastantes coisas de Erlang
  4. Gente nova no Dojo
  5. O bloco “receive … end” do Erlang
  6. A analogia que o Fabs fez entre Classes e Mensagens
  7. O Fabs explica bem :D

Coisas não legais:

  1. Pouca gente nesta sessão
  2. Erlang tem uma sintaxe estranha
  3. 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)
  4. 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

18.06.08

Dojo Sábado 01 – Explorando Erlang

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 :-D )

Além disso, aprendemos:

O que atrapalhou:

  • Várias pessoas estavam com sono (sábado de manhã é difícil… :-P )
  • 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?