Archive

Archive for the ‘Palestras / Apresentações’ Category

QConSP 2011

September 13th, 2011 No comments

No final de semana passado aconteceu a segunda edição da QConSP e, novamente, tive a grande honra de ajudar na organização das Lightning talks (LT) no final do primeiro dia do evento como Host da track.

Mais um evento organizado pela Caelum, obviamente com seus altos e baixos, mas muito mais altos do que baixos.

Questões como espaço, horário e lanches foram praticamente perfeitos e grandes apresentações como as do Jim Webber, Rebecca Parsons e o muito simpático Khawaja Shams com seus robôs dançantes e seu knob (botão) que cria máquinas na Amazon foram momentos de destaque do evento. Infelizmente alguns palestrantes acabaram decepcionando um pouco, mas este é o tipo de problema que não temos como prever e sempre vão acontecer em qualquer evento do mundo.

Outra grande vantagem desse tipo de evento é poder rever alguns amigos e ex-colegas de trabalho e matar a saudade do pessoal, além de conhecer novas pessoas e em alguns casos conhecer fisicamente algum grande amigo de internet (Acreditem, isso acontece! E muito!).

Gostaria de agradecer todos que participaram da organização do evento, os hosts das tracks e o Luiz Bassi da Caelum, que foram as principais pessoas por trás deste grande evento. Além disso um agradecimento especial para todos que apresentaram LT comigo:
Christian Reichel, que apresentou “Por um Java mais funcional”, onde mostrou exemplos de funções como map e reduce em java usando o Guava;

Diego Chohfi, que agora também faz parte do time da Caelum, mostrou um pouco do dinamismo não muito comentado do Objective-C;

E 3 grandes colaboradores do VRaptor falando sobre algumas funcionalidades extras do framework:

Washington Botelho que mostrou como implementar um controle de permissões baseado em perfis;

Rodolfo Liviero, autor do Vraptor-scaffold, mostrou como criar e “deployar” uma aplicação VRaptor no heroku em menos de 5 min usando seu projeto;

Guilherme Silveira que comentou sobre os vários plugins já criados para o VRaptor e ainda deu um “puxão de orelha” no pessoal presente para que extraiam plugins e colaborem com o projeto.

A minha apresentação foi mais abstrata e basicamente questionei sobre a integração de sistemas usando frameworks MVC em vários pontos diferentes sobe o título “MVC além do MVC”. Slides:

Eventos do segundo semestre

November 3rd, 2010 No comments

QCon SP

Em setembro aconteceu um dos eventos mais importantes de TI que já passou no nosso país. Pela primeira vez no Brasil ocorreu uma QCon e tive a felicidade de estar presente. Dessa vez não fui oficialmente um palestrante, mas fui convidado para ser o host de uma das tracks das lightning talks que vou comentar no final do post.

O evento não foi importante apenas pelo nome QCon, mas sem dúvidas tivemos um evento verdadeiramente de alto nível, tanto os palestrantes brasileiros quanto os internacionais fizeram ótimas apresentações. Na MINHA opinião, entre as palestras que assisti, os destaque vão para o Nick Kallen, Charles Nutter e a palestra em dupla do Alexandre Porcelli e Gleicon Moraes.

Resumindo o evento em poucas palavras me parece que a preocupação geral dos arquitetos hoje é escalabilidade. Linguagens funcionais, filas, denormalização, nosql, cloud e outros meios/técnicas para melhorar a responsividade de nossas aplicações foram assuntos muito comentados por todas as tracks que passei.

Voltando as lightning talks, tivemos ótimas apresentações! Como já falei fui o host de uma das tracks e além da minha própria talk contei com as apresentações de: Alberto Leal, Lucas Pérez, Rafael Viveiros, Cecilia Fernandes, André Luiz R. Silva, Hugo Baraúna e um pequeno oi do pessoal do GURU-SP no final. Muito obrigado e parabéns para todos vocês.

Rails Rumble

No meio de outubro aconteceu a 3ª edição do Rails Rumble, esse ano não deixei passar e, pela primeira vez, participei da competição. Meu time acabou não chegando na final, numa breve retrospectiva levantamos alguns pontos bobos onde falhamos, como não ter pensado num lugar pra tomar banho… (Sim, eu fiquei mais de 48h sem banho). Quem sabe ano que vem não aparecemos na final?! Pelo menos nossa app nos fez conhecer novos frameworks e nos trouxe algumas ideias de negócio que jamais imaginaríamos.

RubyConf Brasil 2010

O antigo Rails Summit Latin America agora está sob a franquia Ruby Conf, pela primeira vez com o nome novo, conseguiram trazer palestrantes ainda mais impressionantes do que os do ano passado, com destaque para os commiters do Rails Jose Valim, Aaron Patterson e Yehuda Katz, além do Ola Bini e novamente o Charles Nutter. Mais um evento de altíssima qualidade levando o Brasil, cada vez mais, para um patamar de igualdade com outros países considerados polos tecnológicos.

Resumindo o evento em poucas palavras, acredito que as boas práticas são chave para o momento que a comunidade está passando, foram apresentadas várias melhorias no Rails e outros frameworks auxiliares e especialmente no ruby 1.9. Acredito que o interesse de todos agora é que toda a força de vontade que a comunidade tem, relembrada pelo Fabio Akita na abertura do evento, seja catalisada para gerar valor real.

Encontro Ágil 2010

Pra finalizar os eventos do post, um evento que ainda não aconteceu. No próximo sábado, dia 06/11 vai acontecer o Encontro Ágil 2010, num formato completamente inovador, com muitos jogos, dojos e nada de palestras tradicionais, como eles anunciaram, um evento da comunidade para a comunidade, onde terei o prazer de falar sobre dívida técnica e como evita-la numa lightning talk que em breve estará disponível no meu Slideshare

Finalmente aqui estão slides da minha lightning talk na QCon:

Ruby + Rails no Mundo Real 2010 – Eu fui

June 4th, 2010 No comments

Assim como no post do Rails Summit 2009 eu ia começar o post com uma resenha do evento, mas acho que os posts do Marcelo Castellani e do Rodrigo Ribeiro já atacaram todos os pontos e não tenho mais nada a acrescentar a não ser os meus parabéns e meus agradecimentos a todos os envolvidos.
Fotos do evento podem ser vistas no album do GURU-SP

Sobre a minha palestra com o Leonardo Bessa, infelizmente demos uma atrasadinha na primeira metade da palestra e não conseguimos falar de tudo o que queríamos, mas pelo feedback que tivemos acredito que os presentes gostaram e aprenderam. O que não deu tempo de falar no dia com certeza vai virar post aqui no futuro. Para os que não puderam ir, felizmente o pessoal da organização gravou o evento e o vídeo da nossa apresentação pode ser visto aqui:

Para aqueles que foram ou apenas viram o vídeo, aqui estão os slides da palestra:

E aqui o código gerado durante a apresentação:

class Picapau
  def voa
    "voando..."
  end
  def anda
    "andando..."
  end
end
woody = Picapau.new
amigo = Picapau.new
#
# woody.voa
# amigo.voa
# woody.anda
# amigo.anda
#
# def woody.hehehe
#   p "hehehe-hehehe-hehehehehe"
#
# end
#
# woody.hehehe
#
# # amigo.hehehe
#
#
# p woody.class
# p amigo.class
# p woody.class == amigo.class
class Object
    def singleton_class
      # p self
      class << self
        # p self
      self
      end
    end
end
# p woody.singleton_class
# p amigo.singleton_class
# p amigo.singleton_class == woody.singleton_class
#
# class Picapau
#   alias :metodo_voa :voa
#   def voa(param='')
#     result = metodo_voa(param)
#     p "Chamando metodo voa com #{param.inspect} retornou #{result.inspect}"
#     result
#   end
# end
#
# class Picapau
#   def self.log(metodo)
#     metodo_velho = self.instance_method(metodo)
#     define_method(metodo) do |*arg|
#       result =  metodo_velho.bind(self).call(arg)
#       p "Chamando metodo voa com #{arg.inspect} retornou #{result.inspect}"
#     end
#   end
#   log :voa
# end
#
# class Picapau
#   def self.log(*metodos)
#     metodos.each do |metodo|
#       metodo_velho = self.instance_method(metodo)
#       define_method(metodo) do |*arg|
#         result =  metodo_velho.bind(self).call(arg)
#         p "Chamando metodo voa com #{arg.inspect} retornou #{result.inspect}"
#       end
#     end
#   end
#   log :voa, :anda
# end
module Logger
  def log(*nome_do_metodos)
     nome_do_metodos.each do |nome_do_metodo|
       metodo_velho = self.instance_method(nome_do_metodo)
       define_method(nome_do_metodo) do
         result = metodo_velho.bind(self).call
         p "Chamando metodo #{nome_do_metodo} e retornou #{result}"
         result
       end
     end
   end
end
module Andador
  def anda2
    p "novo metodo que anda"
  end
end
class Picapau
  extend Logger
  include Andador
  log :voa, :anda
end
woody.voa
woody.anda
woody2 = Picapau.new
woody2.anda2
Categories: Palestras / Apresentações, Rails, Ruby Tags:

Metaprogramação em Ruby – Magia negra não existe

December 7th, 2009 No comments

Ontem, dia 06/12 ocorreu o nosso segundo techday da Caelum no qual eu e o Leonardo Bessa, que também é consultor e instrutor da Caelum, fizemos uma apresentação sobre metaprogramação em ruby sob o título “Voodoo é pra jacu” (Sim, foi por causa do picapau).
Como apenas os slides e o código gerado não transmitem tanto conhecimento estou aproveitando pra deixar alguns posts e vídeos sobre o assunto que serviram de base de estudo para a preparação da nossa apresentação.
Código gerado durante a aprensentação:

class Picapau
  def voa
    p 'estou voando'
  end
end
woody = Picapau.new
amigo = Picapau.new
woody.voa # => estou voando
amigo.voa # => estou voando
def woody.rir
  "hehehehe-hehehehe-hehehehehehe"
end
p woody.rir # => hehehehe-hehehehe-hehehehehehe
# p amigo.rir # => NoMethodError: undefined method ‘rir’ for ...
p woody.class # => Picapau
p amigo.class # => Picapau
p woody.class == amigo.class # => true
p woody.methods - amigo.methods # => ["rir"]
p woody.singleton_methods # => ["rir"]
p amigo.singleton_methods # => []
class Object
    def singleton_class
      class << self
	    self
	  end
    end
end
p woody.singleton_class # => Class:Picapau:0x...
p amigo.singleton_class # => Class:Picapau:0x...(diferente)
p woody.singleton_class == amigo.singleton_class # => false
class ARBase
  def self.belongs_to
    def leo
      p 'leo'
    end
  end
end
class B < ARBase
  belongs_to
end
B.new.leo # => leo

slides:

links sobre o assunto:
Uma apresentação do Dave Thomas (em inglês)

Post do Katz sobre self (inglês)tradução

Contextos implicitos (resposta ao post do Katz)tradução

O que é metaclass por Jim Weirich com direito a comentário do Ola Bini (apenas em inglês)

Umas dicas do Sidu Ponnappa pra entender melhor o funcionamento interno do ruby (apenas em inglês)