Posts de ‘Bruno Mentges de Carvalho’

[Bruno Mentges de Carvalho] Semana 1 Dia 1 (W1D1) – Couch to 5k

Monday, September 21st, 2009

Hoje comecei o programa couch to 5k (do sofá para 5 kilometros). Este programa visa capacitar uma pessoa completamente sedentária a correr 5km sem parar, tudo isso em apenas 9 semanas. Cada semana contém 3 treinos com um dia pelo menos de espaço entre cada treino, e cada treino é específico.

Se quiser ver os detalhes dos treinos pode ver aqui: http://www.cairnscommunications.com/fitness/couch-to-5k.htm

Daqui pra frente vou apenas relatar como foi e fazer o running log desse dia. É bem pessoal ! :)

Acordei hoje as 7:00 da manhã e meu cérebro começou a trabalhar contra, como de costume: “Dorme mais 10 minutinhos” “Ta frio, fica ae, dorme mais” eram pensamentos comuns. Mesmo com essa dificuldade, segui um conselho que ouvi de um camarada, Claudio Luz, que dizia “Vira pro lado e levanta!”.

Ao levantar fui ao banheiro e minha mulher continuou dormindo. A movimentação comum nessa hora lá em casa não rolou porque minha enteada (de 7 anos) conseguiu matar aula hoje reclamando que tinha ido dormir tarde e fazendo minha mulher se sentir culpada, haha criança é fogo. Tomei um copo de Ades e comecei a me arrumar. É, to substituindo o café com leite integral por Ades. Devo começar uma dieta em breve.

Minha mulher levantou e se arrumou para ir comigo me dar força! Muito legal. Saímos para começar o programa, e o controlador era uma aplicação que comprei pro Iphone: Couch to 5k da Felt Tip Inc. Nessa aplicação, ela marca o tempo que tenho de aquecimento (5 minutos de caminhada) e depois me avisa quando devo alternar entre correr e caminhar. Nessa primeira semana, devo correr 1 minuto e andar 1 minuto e meio durante 20 minutos.

Começamos a caminhar e iniciei o programa no telefone. Quando o programa mandava, corríamos, e quando mandava denovo, andávamos. Ao final da 3a corrida minha mulher preferiu só andar e eu continuei. Corria quando mandava e voltava andando quando era pra andar pra reencontrá-la. No final, consegui completar o dia inteiro e a sensação foi muito boa de dever cumprido. Minha mulher também ficou super feliz e vai se empenhar pra seguir o programa.

Voltamos, passamos na padaria, compramos pão e fomos pra casa. Ao chegar em casa entrei no banho, frio claro, e alonguei. Depois comi um pedaço de pao com manteiga e mais um copo de Ades e vim trabalhar.

Foi muito boa a experiência. O corpo ficou um pouco dolorido, principalmente as pernas, mas estava muito feliz de ter conseguido. Devo continuar o programa daqui a dois dias :) .

É isso aí !

[Bruno Mentges de Carvalho] Semana 1 Dia 1 (W1D1) – Couch to 5k

Monday, September 21st, 2009

Hoje comecei o programa couch to 5k (do sofá para 5 kilometros). Este programa visa capacitar uma pessoa completamente sedentária a correr 5km sem parar, tudo isso em apenas 9 semanas. Cada semana contém 3 treinos com um dia pelo menos de espaço entre cada treino, e cada treino é específico.

Se quiser ver os detalhes dos treinos pode ver aqui: http://www.cairnscommunications.com/fitness/couch-to-5k.htm

Daqui pra frente vou apenas relatar como foi e fazer o running log desse dia. É bem pessoal ! :)

Acordei hoje as 7:00 da manhã e meu cérebro começou a trabalhar contra, como de costume: “Dorme mais 10 minutinhos” “Ta frio, fica ae, dorme mais” eram pensamentos comuns. Mesmo com essa dificuldade, segui um conselho que ouvi de um camarada, Claudio Luz, que dizia “Vira pro lado e levanta!”.

Ao levantar fui ao banheiro e minha mulher continuou dormindo. A movimentação comum nessa hora lá em casa não rolou porque minha enteada (de 7 anos) conseguiu matar aula hoje reclamando que tinha ido dormir tarde e fazendo minha mulher se sentir culpada, haha criança é fogo. Tomei um copo de Ades e comecei a me arrumar. É, to substituindo o café com leite integral por Ades. Devo começar uma dieta em breve.

Minha mulher levantou e se arrumou para ir comigo me dar força! Muito legal. Saímos para começar o programa, e o controlador era uma aplicação que comprei pro Iphone: Couch to 5k da Felt Tip Inc. Nessa aplicação, ela marca o tempo que tenho de aquecimento (5 minutos de caminhada) e depois me avisa quando devo alternar entre correr e caminhar. Nessa primeira semana, devo correr 1 minuto e andar 1 minuto e meio durante 20 minutos.

Começamos a caminhar e iniciei o programa no telefone. Quando o programa mandava, corríamos, e quando mandava denovo, andávamos. Ao final da 3a corrida minha mulher preferiu só andar e eu continuei. Corria quando mandava e voltava andando quando era pra andar pra reencontrá-la. No final, consegui completar o dia inteiro e a sensação foi muito boa de dever cumprido. Minha mulher também ficou super feliz e vai se empenhar pra seguir o programa.

Voltamos, passamos na padaria, compramos pão e fomos pra casa. Ao chegar em casa entrei no banho, frio claro, e alonguei. Depois comi um pedaço de pao com manteiga e mais um copo de Ades e vim trabalhar.

Foi muito boa a experiência. O corpo ficou um pouco dolorido, principalmente as pernas, mas estava muito feliz de ter conseguido. Devo continuar o programa daqui a dois dias :) .

É isso aí !

[Bruno Mentges de Carvalho] Mantendo contexto usando ajax

Friday, May 8th, 2009

Digamos que você tenha uma página com um vídeo e um box ao lado com vídeos relacionados. Neste box de vídeos relacionados há uma paginação e você não quer que o usuário clique ali e o site faça o reload, fazendo seu usuário recarregar o vídeo todo denovo.

A maioria dos sites implementa chamadas AJAX usando o atributo onClick da tag html a. Ex:

  
    Próxima Página
  

Até aí tudo bem. Funciona que é uma beleza, o youtube usa isso, etc. O href=’#’ é usado para não gerar um request pro servidor, usando um recurso simples do html, a âncora.

Se você paginou até a 7a página e quer passar o vídeo para um amigo, com a 7a página selecionada para mostrar alguns vídeos que lá estão, de repente um seu que está ali por exemplo, só com o recurso onClick não seria possível. Teria que pedir para ele paginar e olhar. Mas há uma maneira de fazer isso, e um amigo lá do trabalho, Tiago Motta, fez uma classe javascript que possibilita passar o contexto de todos os boxes da sua página que funcionam com ajax no link para seus amigos.

É o projeto TralhaController: http://github.com/timotta/TralhaController/tree/master

Mas Bruno, comofas/

Esta classe javascript, após você adicionar um observador, ela começa a monitorar a URL do usuário por mudanças na âncora (#). Vamos aos exemplos:


var paginacao_box_videos_relacionados = {
      update: function(url) {
          // faz o parsing da URL
          // faz um request ajax e atualiza o box de videos relacionados
      }
  }
TralhaController.addObserver( paginacao_box_videos_relacionados );

A partir daí o TralhaController passa a monitorar a URL do usuário. Vejamos como montar o link que muda de página no box:

  
    Próxima Página
  

Dessa forma, quando a URL mudar, o observador que programou e adicionou ao TralhaController será notificado e o método update será chamado com a url “http://seu-site-aqui/#pagina_box_videos_relacionados=2″, sem mudar de página, possibilitando que seu observador faça uma chamada ajax atualizando o box.

Até aqui o onClick também faria. A novidade é que se você copiar este link e passar para um amigo, ele conseguirá ver o vídeo/página/qualquer coisa que estava vendo e o box estaria paginado na segunda página, ou seja, o mesmo contexto que você via, o seu amigo também verá pois ao acessar a página seu observador será notificado e atualizará o box com a página certa.

Espero que este projeto os ajude. Ele implementa um padrão de projeto conhecido: O Observer.

[Bruno Mentges de Carvalho] Mantendo contexto usando ajax

Friday, May 8th, 2009

Digamos que você tenha uma página com um vídeo e um box ao lado com vídeos relacionados. Neste box de vídeos relacionados há uma paginação e você não quer que o usuário clique ali e o site faça o reload, fazendo seu usuário recarregar o vídeo todo denovo.

A maioria dos sites implementa chamadas AJAX usando o atributo onClick da tag html a. Ex:

  
    Próxima Página
  

Até aí tudo bem. Funciona que é uma beleza, o youtube usa isso, etc. O href=’#’ é usado para não gerar um request pro servidor, usando um recurso simples do html, a âncora.

Se você paginou até a 7a página e quer passar o vídeo para um amigo, com a 7a página selecionada para mostrar alguns vídeos que lá estão, de repente um seu que está ali por exemplo, só com o recurso onClick não seria possível. Teria que pedir para ele paginar e olhar. Mas há uma maneira de fazer isso, e um amigo lá do trabalho, Tiago Motta, fez uma classe javascript que possibilita passar o contexto de todos os boxes da sua página que funcionam com ajax no link para seus amigos.

É o projeto TralhaController: http://github.com/timotta/TralhaController/tree/master

Mas Bruno, comofas/

Esta classe javascript, após você adicionar um observador, ela começa a monitorar a URL do usuário por mudanças na âncora (#). Vamos aos exemplos:


var paginacao_box_videos_relacionados = {
      update: function(url) {
          // faz o parsing da URL
          // faz um request ajax e atualiza o box de videos relacionados
      }
  }
TralhaController.addObserver( paginacao_box_videos_relacionados );

A partir daí o TralhaController passa a monitorar a URL do usuário. Vejamos como montar o link que muda de página no box:

  
    Próxima Página
  

Dessa forma, quando a URL mudar, o observador que programou e adicionou ao TralhaController será notificado e o método update será chamado com a url “http://seu-site-aqui/#pagina_box_videos_relacionados=2″, sem mudar de página, possibilitando que seu observador faça uma chamada ajax atualizando o box.

Até aqui o onClick também faria. A novidade é que se você copiar este link e passar para um amigo, ele conseguirá ver o vídeo/página/qualquer coisa que estava vendo e o box estaria paginado na segunda página, ou seja, o mesmo contexto que você via, o seu amigo também verá pois ao acessar a página seu observador será notificado e atualizará o box com a página certa.

Espero que este projeto os ajude. Ele implementa um padrão de projeto conhecido: O Observer.

[Bruno Mentges de Carvalho] Rails e Rspec sem ActiveRecord

Monday, April 6th, 2009

Caso seus models não tenham representação no banco ou não seja ActiveResource, você precisará mudar umas coisinhas para fazer o rspec e rspec-rails funcionar. Este post se refere a: rails 2.3.2, rspec 1.2.2, rspec-rails 1.2.2, mas deve funcionar com algumas versões anteriores.

O primeiro passo é desabilitar o framework ActiveRecord no arquivo config/environment.rb

# config/environment.rb
Rails::Initializer.run do |config|
  config.frameworks -= [:active_record, :active_resource]
  # outras configuracoes aqui
end

Agora voce deve deletar o arquivo config/database.yml e comentar as seguintes linhas do arquivo spec/spec_helper.rb

# spec/spec_helper.rb
Spec::Runner.configure do |config|
  # config.use_transactional_fixtures = true
  # config.use_instantiated_fixtures  = false
  # config.fixture_path = RAILS_ROOT + '/spec/fixtures/'
  # nao comente outras configuracoes
end

Agora o rspec funcionará numa boa. Você também notará que não conseguirá usar o logger do rails como usava em seus models do ActiveRecord. Para utiliza-lo, basta usar a constante RAILS_DEFAULT_LOGGER. Exemplo:

# app/models/aluno.rb
class Aluno
  def ola
    RAILS_DEFAULT_LOGGER.info "falando ola mundo"
    #PPDD - Passei por aqui driven development
    RAILS_DEFAULT_LOGGER.debug "passei por aqui"
    "Ola mundo"
  end
end

Fica aqui a dica :)

[Bruno Mentges de Carvalho] Rails e Rspec sem ActiveRecord

Monday, April 6th, 2009

Caso seus models não tenham representação no banco ou não seja ActiveResource, você precisará mudar umas coisinhas para fazer o rspec e rspec-rails funcionar. Este post se refere a: rails 2.3.2, rspec 1.2.2, rspec-rails 1.2.2, mas deve funcionar com algumas versões anteriores.

O primeiro passo é desabilitar o framework ActiveRecord no arquivo config/environment.rb

# config/environment.rb
Rails::Initializer.run do |config|
  config.frameworks -= [:active_record, :active_resource]
  # outras configuracoes aqui
end

Agora voce deve deletar o arquivo config/database.yml e comentar as seguintes linhas do arquivo spec/spec_helper.rb

# spec/spec_helper.rb
Spec::Runner.configure do |config|
  # config.use_transactional_fixtures = true
  # config.use_instantiated_fixtures  = false
  # config.fixture_path = RAILS_ROOT + '/spec/fixtures/'
  # nao comente outras configuracoes
end

Agora o rspec funcionará numa boa. Você também notará que não conseguirá usar o logger do rails como usava em seus models do ActiveRecord. Para utiliza-lo, basta usar a constante RAILS_DEFAULT_LOGGER. Exemplo:

# app/models/aluno.rb
class Aluno
  def ola
    RAILS_DEFAULT_LOGGER.info "falando ola mundo"
    #PPDD - Passei por aqui driven development
    RAILS_DEFAULT_LOGGER.debug "passei por aqui"
    "Ola mundo"
  end
end

Fica aqui a dica :)

[Bruno Mentges de Carvalho] Buscando ser mais produtivo

Sunday, April 5th, 2009

Onde trabalho, temos uma política de feedback contínuo e pensando neles (os feedbacks que recebi) percebi que precisava melhorar minha produtividade e lutar mais contra uma característica que tenho: a procrastinação. Essa característica é um dos motivos que meu blog tem estado as traças, sem atualização.

Identificado o problema, comecei a pensar sobre tudo o que eu fazia durante o dia, sobre o que precisava ser melhorado para que eu pudesse ter mais performance, mais produtividade e gerar mais valor em menos tempo. A primeira coisa que reparei foi que as ferramentas que eu usava estavam me atrapalhando. Olhei em volta e percebi que um dos meus amigos (Vitor Pellegrino) no trabalho usa um editor de texto não usual como IDE e que com aquele editor ele se mantinha mais focado.

Este editor é o emacs. Vitor Pellegrino, como de costume, ficou empolgado em saber que eu queria aprender sobre o emacs, me enviou um monte de material sobre o emacs e se prontificou a me ajudar no que fosse preciso para que aprendesse mais rápido. Inclusive, faço propaganda aqui de um screencast do peepcode sobre o emacs que é muito bom: Emacs Peepcode.

Depois disso, veio a organização do desktop do Ubuntu. A primeira dica foi o projeto dotfiles do Ryan McGeary no github. Nele, há todos os arquivos que começam com ponto (.), ou dotfiles, do seu home guardados no github com um install.rb para instalar no seu terminal linux. Isso facilita muito ao formatar/trocar de micro pois todas as suas configurações ficam lá. Inclusive todas do emacs também. O meu dotfiles no github fica aqui.

Continuando no desktop, configurei meus desktops virtuais para uma matriz 2×3. No primeiro desktop fica o emacs e um terminal. No segundo, tudo de comunicação: email e gtalk/y!, no terceiro fica tudo que me faz procrastinar: basicamente o google reader, no 4o fica o browser onde testo a aplicação que ta sendo desenvolvida no primeiro desktop, no 5o e 6o alguns terminais rodando os servidores/logs/e qualquer lixo que eu resolva abrir. Denovo, dando o mérito a quem é de direito, isso também foi dica do Vitor Pellegrino.

O próximo passo era gerenciar meu tempo melhor. Ainda não tinha achado nada eficiente para resolver esse problema. É engraçado, quando você fica genuinamente querendo resolver um problema para melhorar sua vida e só aí passa a enxergar as soluções a sua volta. Coincidentemente, o @unclebobmartin twittou outro dia sobre a técnica do tomate (Pomodoro Technique). Por mais engraçado e simples que esta técnica possa parecer, resolvi testar, até porque o Uncle Bob e o Jim Weirich, duas pessoas que admiro, a utilizam. Venho tendo muito sucesso, meus amigos até me perguntam se eu estou dentro de um “pomodoro” quando querem falar comigo.

A técnica do pomodoro consiste basicamente em ter um timer (aqueles de cozinha) setado para 25 minutos, o que ele chama de um Pomodoro, e trabalhar em uma tarefa do seu to-do list. Ao acabar o pomodoro, devo descansar 5 minutos antes de iniciar o próximo. A cada 4 pomodoros, descanso 15 minutos. Entre cada pomodoro é a única hora que posso ir para meu desktop da procrastinação (o terceiro desktop), fazer pausa para ir ao banheiro, encher a garrafa de água, enfim, qualquer coisa não relacionada ao trabalho. Existem mais detalhes sobre a técnica, como por exemplo como registrar os pomodoros (to-do list), etc. Recomendo a leitura do livro no site (é gratuito) a quem interessar.

É claro que todas essas escolhas funcionaram para mim, mas podem não funcionar para todos. Não existe uma única maneira eficiente de melhorar sua produtividade, acredito que cada um deve buscar a sua. O mais importante é tentar melhorar continuamente e ser honesto consigo mesmo, identificando o que realmente pode estar atrapalhando tudo (dica: Geralmente é algo que você gosta muito).

Gostaria aqui de agradecer ao pessoal do meu time por todo o apoio, feedback e toda a ajuda para que eu pudesse identificar e implementar tudo isso, em especial agradeço a: Vitor Pellegrino, Guilherme Cirne, Anselmo Alves e Tiago Motta. Sou fã de todos vocês individualmente !

[Bruno Mentges de Carvalho] Buscando ser mais produtivo

Sunday, April 5th, 2009

Onde trabalho, temos uma política de feedback contínuo e pensando neles (os feedbacks que recebi) percebi que precisava melhorar minha produtividade e lutar mais contra uma característica que tenho: a procrastinação. Essa característica é um dos motivos que meu blog tem estado as traças, sem atualização.

Identificado o problema, comecei a pensar sobre tudo o que eu fazia durante o dia, sobre o que precisava ser melhorado para que eu pudesse ter mais performance, mais produtividade e gerar mais valor em menos tempo. A primeira coisa que reparei foi que as ferramentas que eu usava estavam me atrapalhando. Olhei em volta e percebi que um dos meus amigos (Vitor Pellegrino) no trabalho usa um editor de texto não usual como IDE e que com aquele editor ele se mantinha mais focado.

Este editor é o emacs. Vitor Pellegrino, como de costume, ficou empolgado em saber que eu queria aprender sobre o emacs, me enviou um monte de material sobre o emacs e se prontificou a me ajudar no que fosse preciso para que aprendesse mais rápido. Inclusive, faço propaganda aqui de um screencast do peepcode sobre o emacs que é muito bom: Emacs Peepcode.

Depois disso, veio a organização do desktop do Ubuntu. A primeira dica foi o projeto dotfiles do Ryan McGeary no github. Nele, há todos os arquivos que começam com ponto (.), ou dotfiles, do seu home guardados no github com um install.rb para instalar no seu terminal linux. Isso facilita muito ao formatar/trocar de micro pois todas as suas configurações ficam lá. Inclusive todas do emacs também. O meu dotfiles no github fica aqui.

Continuando no desktop, configurei meus desktops virtuais para uma matriz 2×3. No primeiro desktop fica o emacs e um terminal. No segundo, tudo de comunicação: email e gtalk/y!, no terceiro fica tudo que me faz procrastinar: basicamente o google reader, no 4o fica o browser onde testo a aplicação que ta sendo desenvolvida no primeiro desktop, no 5o e 6o alguns terminais rodando os servidores/logs/e qualquer lixo que eu resolva abrir. Denovo, dando o mérito a quem é de direito, isso também foi dica do Vitor Pellegrino.

O próximo passo era gerenciar meu tempo melhor. Ainda não tinha achado nada eficiente para resolver esse problema. É engraçado, quando você fica genuinamente querendo resolver um problema para melhorar sua vida e só aí passa a enxergar as soluções a sua volta. Coincidentemente, o @unclebobmartin twittou outro dia sobre a técnica do tomate (Pomodoro Technique). Por mais engraçado e simples que esta técnica possa parecer, resolvi testar, até porque o Uncle Bob e o Jim Weirich, duas pessoas que admiro, a utilizam. Venho tendo muito sucesso, meus amigos até me perguntam se eu estou dentro de um “pomodoro” quando querem falar comigo.

A técnica do pomodoro consiste basicamente em ter um timer (aqueles de cozinha) setado para 25 minutos, o que ele chama de um Pomodoro, e trabalhar em uma tarefa do seu to-do list. Ao acabar o pomodoro, devo descansar 5 minutos antes de iniciar o próximo. A cada 4 pomodoros, descanso 15 minutos. Entre cada pomodoro é a única hora que posso ir para meu desktop da procrastinação (o terceiro desktop), fazer pausa para ir ao banheiro, encher a garrafa de água, enfim, qualquer coisa não relacionada ao trabalho. Existem mais detalhes sobre a técnica, como por exemplo como registrar os pomodoros (to-do list), etc. Recomendo a leitura do livro no site (é gratuito) a quem interessar.

É claro que todas essas escolhas funcionaram para mim, mas podem não funcionar para todos. Não existe uma única maneira eficiente de melhorar sua produtividade, acredito que cada um deve buscar a sua. O mais importante é tentar melhorar continuamente e ser honesto consigo mesmo, identificando o que realmente pode estar atrapalhando tudo (dica: Geralmente é algo que você gosta muito).

Gostaria aqui de agradecer ao pessoal do meu time por todo o apoio, feedback e toda a ajuda para que eu pudesse identificar e implementar tudo isso, em especial agradeço a: Vitor Pellegrino, Guilherme Cirne, Anselmo Alves e Tiago Motta. Sou fã de todos vocês individualmente !

[Bruno Mentges de Carvalho] Rails Summit, eu vou

Friday, September 26th, 2008

Dias 15 e 16 de outubro estarei em São Paulo para prestigiar o evento Rails Summit. Vou com o Guilherme Chapiewski e espero encontrar todo mundo lá. O evento vai contar com palestras de desenvolvedores importantes como David Chelimsky, Chad Fowler, Jay Fields, Carlos Vilella, Os koreanos da Phusion (<3 passenger), Charles Nutter, Danilo Sato, Fabio Kung e Obie Fernandez.

Nos vemos lá.

[Bruno Mentges de Carvalho] Rails Summit, eu vou

Friday, September 26th, 2008

Dias 15 e 16 de outubro estarei em São Paulo para prestigiar o evento Rails Summit. Vou com o Guilherme Chapiewski e espero encontrar todo mundo lá. O evento vai contar com palestras de desenvolvedores importantes como David Chelimsky, Chad Fowler, Jay Fields, Carlos Vilella, Os koreanos da Phusion (<3 passenger), Charles Nutter, Danilo Sato, Fabio Kung e Obie Fernandez.

Nos vemos lá.