por Diego Carrion - July 15th, 2009 · 6 comentários
Acabei de receber trés convites para se cadastrar no Rails Rumble e a Gonow vai utilizar eles para patrocinar trés equipes que não tenham conseguido se cadastrar no evento.
O patrocínio ainda não esta definido, mas nos planos estão dar comida e um local bacana para as equipes se juntarem, possivelmente num hotel aqui em São Paulo.
O ano passado eu vi um vídeo que uma equipe fez durante o evento. Achei muito legal e uma idéia é realizar algo similar com as equipes que forem participar. Estamos procurando mais idéias legais para aplicar, quais vocês tem?
Durante esses dias a Gonow irá disponibilizar uma página onde as equipes poderão declarar seu interesse no patrocínio e a idéia de aplicação que elas tem. Caso existam mais de trés equipes interessadas, a Gonow inteira ira votar pelas melhores ideais e essas equipes são as que irão participar.
Estarei dando mais noticias aqui e no Twitter e para variar, considerem me recomendar no WWR.
Tags: comunidade · gonow · rails · rails rumble
por Diego Carrion - July 14th, 2009 · 11 comentários
A Gonow estava MUITO interessada em patrocinar umas cinco equipes brasileiras no Rails Rumble 09. Segunda feira saí de uma reunião onde tínhamos conversado de muitas coisas bem legais sobre esse patrocínio, twittei ao respeito e quando entrei novamente no site da competição, percebi que as inscrições já tinham fechado.
Fiquei torcendo o dia inteiro para alguma equipe me contatar dizendo que tinha conseguido se cadastrar, mas nada. O bom foi que algumas pessoas me comentaram que estavam interessadas mas tinham perdido a data que nem eu, que também queria participar.
Esse interesse fez que a Gonow se propusesse organizar uma versão local do Rails Rumble, com a ajuda de todos vocês, para que todos podamos participar e se divertir. Para isso ela iria correr atrás do necessário para a realização do evento e se comunicar com alguns possíveis patrocinadores, consultorias amigas e grupos de usuários para tudo mundo apoiar. Como dizem no mundo rap: for us by us!
A Gonow não tem agora uma idéia clara de quantas pessoas iriam participar do evento, pelo que se você tem uma equipe e esta interessada, por favor me envia um email a dc.rec1@GMail com os dados dos participantes.
Dependendo do número de participantes a competição poderia tomar um formato diferente mas basicamente a idéia é ser igual ao Rails Rumble gringo.
Queria aproveitar para agradecer a todos que vem me apoiando a mim e a Gonow com comentários, twitts e retwitts, mensagens, etc. porque essas atitudes estão ajudando muito para que a empresa decida se relacionar cada vez mais forte com nos a comunidade.
E como sempre, não deixem de me recomendar no WWR se acham que esse trabalho que vem sendo realizado é relevante.
Tags: comunidade · evento · gonow · rails · rails rumble
por Diego Carrion - July 6th, 2009 · 11 comentários
Queria esperar ate a nova página da Gonow ficar pronta mas a empresa esta louca para executar suas estratégias, então não da para segurar mais. A atual versão do site esta refletindo o que a Gonow era ate um tempo atrás, pelo que por favor não dêem muita atenção à ele.
Mas enfim, a noticia, quem que me segue no Twitter já esta sabendo, é que após mais ou menos nove meses de um intenso processo de evangelização com discussões, amigos, inimigos, desafios e outras coisas ao maior estilo novela mexicana, a Gonow decidiu entrar forte e agressivamente no mercado de Rails no Brasil e proximamente também no mercado internacional, o que é muito bom para toda a comunidade em si.
O desafio de infiltrar o Rails na Gonow, uma empresa que era 100% Java, é uma historia que eu vou contar em outro post, por dois motivos. O primeiro é porque acho que talvez possa servir como experiência e/ou motivação para outras pessoas que desejam realizar o mesmo nos seus locais de trabalho e o segundo é porque pode servir como demostração de parte do trabalho que eu e a Gonow em geral estamos realizando.
Compartilhar as experiencias que um mesmo vem ganhando no dia a dia é uma coisa que acho que tudo mundo deveria fazer. Além de ajudar a comunidade a crescer, por diversos motivos, é uma forma de marketing pessoal. Um dos meus objetivos na Gonow é garantir que ela fique muito próxima da comunidade, pelo que constantemente ela vai estar acompanhando as coisas legais que todos vocês vem fazendo e demonstrando. Essas coisas vão ser muito importantes na hora de incluir novos membros na nossa equipe, bem mais importantes que qualquer curriculum.
O relacionamento Gonow - comunidade já começou a se mostrar. Faz uns dias anuncie no Twitter que estávamos precisando de dois railers para trabalhar com a gente e a comunidade ajudou MUITO. Muita gente colaboro reenviando a mensagem e em mais ou menos uma hora já tinha recebido aproximadamente uns quinze emails e algumas mensagens pelo IM, bem mais do que esperava.
A estratégia não é nova. Ultimamente muitas pessoas vem aproveitando os relacionamentos no Twitter como um jeito de fácil comunicação. Sem pensar muito, lembro ultimamente de varias pessoas reenviando mensagens pelo Twitter sobre uma vaga na WebCo, acredito que eles também se deram muito bem.
Outro lugar onde foram publicadas as vagas, com um pouco mais de detalhes, foi na Rails-BR, que também troce bons resultados, devido a que chegaram alguns emails com pessoas dizendo que tinham lido sobre a vaga no grupo.
Acredito que a maioria de pessoas que lêem esse blog participam da comunidade diariamente e já conhecem a força que ela tem, como também sei que existem muitas empresas que não dão o suficiente valor a ela e a terminam ignorando. Os últimos parágrafos anteriores foram escritos em parte para reconhecer e agradecer a todos pela ajuda e também para que, em caso que uma dessas pessoas que não conhece o poder da comunidade termine caindo nesse post, fique sabendo que esse poder realmente existe e que ele é muito forte. Toda empresa de software deveria considerar se relacionar com a comunidade e investir nela de alguma maneira, o retorno pode ser muito grande.
Falando em investimentos, a Gonow ira patrocinar esse ano a segunda edição do evento que eu considero como o melhor que o Brasil já teve relacionado a uma tecnologia de programação, o Rails Summit 2009.
Voltando ao tema das vagas, a Gonow começou a desenvolver uns produtos utilizando Rails e tem outros mais nos planos, pelo que mais desenvolvedores serão necessários. Junto a isso, a empresa esta entrando no mercado como consultoria e dependendo da demanda dos clientes, outros projetos irão surgindo.
Algo que acho legal desse esquema atual da Gonow é que cada sistema chega a ser bem diferente do outro, pelo que sempre estamos trabalhando com coisas diferentes, tanto no que respeita a tecnologias como a técnicas de realizar as coisas. Uma coisa que sempre se manteve igual foi o uso de ActiveRecord com MySQL, mas ainda bem que de aqui a pouco vai começar um projeto novo com CouchDB ou MongoDB, estou ansioso!
Muitas pessoas me perguntam se o trabalho pode ser remoto, mas por azar por agora não vai ser possível. Um dos motivos é por causa das metodologias ágeis e outro por causa da relação com a empresa. A Gonow se esforça muito para manter todo mundo bem unido e próximo dela. A idéia é que as pessoas não pensem que simplesmente trabalham para a Gonow e sim que elas são a Gonow. Para lograr tal objetivo, são freqüentes alguns eventos onde tudo mundo para de trabalhar para comemorar alguma coisa ou por algum outro motivo que nunca falta.
Nessa ultima sexta mesmo teve festa Juninha, com casamento e tudo. O engraçado foi que bem na hora da festa eu estava meio nervoso porque não estava conseguindo fazer um negocio que queria e não queria parar ate conseguir. Teve que ir então pra festa que foi na sala do Nintendo Wii e cheguei estressado, chingando a festa ate não poder mais e ate mencionei que ia por ela como coisa ruim na retrospectiva :P. Porém, após umas cervejinhas o humor mudou e quando terminou a festa dei uma passada no computador antes de ir embora e surpreendentemente consegui solucionar meu problema rapidamente :).
Além das festinhas, os espaços são todos abertos, com quadros de vidrio em algumas paredes e não existem cubículos, o que da a imagem de que todos formam uma unidade e acho que também incentiva a comunicação que se vê reforçada quando as pessoas vão jogar o já mencionado Nintendo Wii ou na cafeteria quando a galera se reúne para dar uma descansada e comer e beber os salgados, doces, sucos e refrigerantes que a Gonow dispõe.
A Gonow fica num prédio na Vila Olimpia - SP e atualmente esta dividida em dois andares. No decimo andar fica a equipe Java e no terceiro andar tem dois escritórios, um da Gonow e outro de outra empresa que não lembro o nome. Nesse andar fica a equipe de Rails, a equipe de design e o setor financeiro. O bom é que essa empresa que não lembro o nome vai sair muito pronto do prédio e a Gonow vai pegar a oficina deles para ocupar o andar inteiro, como no décimo.
Nesse novo espaço vai ficar o novo espaço da equipe de Rails com uns iMac e vai ter outro espaço para outros projetos que a Gonow esta planejando. O negocio dos iMac não esta confirmado mas estou escrevendo aqui para meter uma pressão :P.
A forma de contratação pode ser CLT ou PJ de preferencia, hora aberta. O horário é flexível e a vestimenta é livre na Gonow porem restrita na equipe de Rails, nada de ficar muito engomadinho.
Das horas realizadas na Gonow, o 10% delas podem ser utilizadas para projetos pessoais, como por exemplo contribuir em projetos open-source. Também podem ser utilizadas para estudar espanhol ou inglês com os professores que ficam aqui dentro da empresa.
Quem estiver interessado por favor me enviar um email a dc.rec1@GMail. Não é necessário ter experiencia com Rails porque uma das intenções da Gonow é abrir o mercado, tirar você dessas empresas Java, .Net ou a que for e te levar para uma que trabalhe com Rails. Além disso, acreditamos que não existe “programador de tecnologia X” e sim simplesmente “programador”. Quem é programador de verdade programa em qualquer linguagem.
Aos que já se comunicaram comigo, não pensem que foram descartados e que estou procurando novas propostas. A verdade é que ainda não consegui terminar de ver o trabalho de todos e não consegui chegar a uma decisão. Com os novos projetos e objetivos o tempo anda meio apertado e para complicar (de uma boa maneira) já vi excelentes desenvolvedores interessados na vaga, o que dificulta a seleção.
Para finalizar, queria deixar claro que a Gonow não é a empresa perfeita, mas é um lugar muito bom para trabalhar e cada dia esta ficando melhor. Queria também por a mão no fogo e prometer que na Gonow vocês vão desenvolver software de qualidade e do qual vão se sentir orgulhosos.
Estava esquecendo que algumas pessoas já me perguntaram se podem vir visitar a empresa. A resposta é que claro que sim. Se alguém ficar interessado por favor me enviar o email anunciando o dia de interés, somente para garantir que não vai coincidir com alguma atividade e também para ordenar minha mesa.
Não deixem de me seguir no Twitter se desejam acompanhar mais de perto a evolução do meu trabalho e da empresa. E se acham que esse trabalho que se vem realizando é notório para o Rails, por favor considerem me recomendar no WWR. Vai ajudar bastante, tanto a mim como à Gonow.
Tags: comunidade · gonow · rails · trabalho · vaga
por Diego Carrion - May 26th, 2009 · 1 comentário
Se por acaso precisarem acessar alguma variável a partir de um filtro do Liquid podem utilizar a variável de instancia context.
Tal comportamento pode ser desejado ao querer implementar algo similar ao asset_url do Shopify:
module SitesFilter
def asset_url(input)
"/system/assets/#{@context['company'].id}/#{input}"
end
end
Liquid::Template.register_filter(SitesFilter)
Tags: Markup · Template · liquid · rails · ruby
por Diego Carrion - May 21st, 2009 · 2 comentários
As vezes, quando se meche com submódulos do Git da forma errada se termina aparentemente corrompendo o repositório e recebendo o seguinte erro ao tentar realizar um pull:
error: git-upload-pack: git-pack-objects died with error.
fatal: git-upload-pack: aborting due to possible repository corruption on the remote side.
remote: Generating pack…
remote: Done counting 39 objects.
remote: Result has 28 objects.
remote: error: unable to find b490fa1a6d81e39d3a8d99f9cce8b57c3397b7d7
remote: fatal: unable toremote: aborting due to possible repository corruption on the remote side.
fatal: protocol error: bad pack header
Não sei se seja o melhor ou único jeito de contornar o problema mas uma solução que encontrei foi dar um pull na URL pública e depois dar um push.
Tags: Git
por Diego Carrion - May 20th, 2009 · Sem comentários
Para não esquecer disso uma segunda vez aqui vá:
Se estiverem trabalhando com Rails e Selenium e desejam subir e derrubar o servidor automaticamente antes e despois dos testes então podem utilizar o Mongrel:
mongrel_rails start -e test -d
mongrel_rails stop
Por exemplo, eu que estou utilizando Selenium com Cucumber, tenho meu env.rb assim:
require 'spec/expectations'
require 'selenium'
# "before all"
`mongrel_rails start -e test -d`
`rake db:populate RAILS_ENV=test`
browser = Selenium::SeleniumDriver.new("localhost", 4444, "*chrome", "http://localhost", 15000)
Before do
@browser = browser
@browser.start
end
After do
@browser.stop
end
# "after all"
at_exit do
browser.close rescue nil
`mongrel_rails stop`
end
Tags: bdd · cucumber · mongrel · rails · selenium
por Diego Carrion - May 14th, 2009 · 6 comentários
Davis Cabral criou um plugin para o Remarkable para poder testar facilmente o Authlogic chamado de authlogic_plugin. Com ele podemos escrever código como o seguinte:
describe User do
should_be_authentic
end
Conversando com o Davis ele me comentou que demorou quatro minutos em criar o plugin, utilizando como base o Remarkable::Paperclip, deve ser muito fácil né?
Se você gostou do plugin, considera recomendar o Davis no Working With Rails, ai você aproveita e me recomenda também
Tags: Authlogic · Remarkable · bdd · rails · rspec
por Diego Carrion - May 9th, 2009 · Sem comentários
Trabalhado num projeto me vi na necessidade de criar três plugins para o Remarkable: Remarkable::ActsAsTaggableOn, Remarkable::Paperclip e Remarkable::ThinkingSpinx.
Basicamente permitem escrever código como o seguinte:
describe User do
should_act_as_taggable_on :categories
should_have_attached_file :logo
should_index 'addresses.city', :as => :address
should_have_index_attribute :priority
end
Se esses plugins ajudaram você, considera por favor também me ajudar me recomendando no Working With Rails.
Tags: ActsAsTaggableOn · Paperclip · RSpec::Rails · Remarkable · ThinkingSphinx · Uncategorized · plugin · rails · rspec
por Diego Carrion - April 8th, 2009 · 19 comentários
Na semana passada fui contactado para adicionar funcionalidades no sistema feito em Rails de um banco que todos conhecem. No primeiro momento fiquei contente e surpreso de um banco ter realizado um projeto utilizando Rails como tecnologia, já trabalhei com sistemas para diversos bancos e o mais moderno que vi foi o Struts 2.
Os sentimentos foram mudando conforme ia revisando o código que já estava feito. Sem exagerar, essa aplicação feita em Rails é a pior aplicação que eu já vi, considerando também aplicações feitas em Java, PHP e ate ASP, tecnologias com as quais já trabalhei.
Muitos devem estar se perguntando agora como uma aplicação feita em Rails pode ser tão assustadora assim, por isso vou mencionar umas “características” dela.
Para começar, a aplicação não utilizava um sistema de controle de versões, os arquivos estavam por exemplo assim: index.html.erb, index.html.erb.1, index.html.erb.14112008, e por ai vai.
O primeiro código que analisei foi o do modelo, abri uns arquivos e encontrei todo tipo de coisas. Existia HTML e XML que estava sendo gerado no modelo, existiam métodos que recebiam como parâmetros o nome do controller e o nome da action, alguns ate o nome da view. Alguns métodos eram nomeados the ruby way e outros camelCase, e para finalizar aqui, encontrei métodos com as mesmas linhas de implementação, mas com nome diferente.
Seguidamente passei aos controllers, o código não melhorou. Tinham controllers com mais de 1000 linhas de código, métodos com mais de 100 linhas, menus e outras coisas dinâmicas em HTML sendo geradas e novamente, variáveis de tudo tipo, the ruby way e camel case.
Para finalizar: as views. Aqui não tenho muito a dizer, quase tudo era HTML puro, muito HTML, muita coisa repetida. Tinha muito HTML porque não eram utilizados os layouts do Rails, no máximo eram utilizados alguns partials, que foram colocados na pasta layout…
Mas por que estou dizendo todo isto? Porque não podemos ver coisas assim e ficar de braços cruzados!
Eu venho do mundo Java e no mundo Java tem uma excelente tecnologia chamada Hibernate. Mesmo sendo excelente, ela nunca ganhou seu espaço firme no mercado brasileiro justamente porque sempre alguem a utilizou do jeito errado. São varias empresas já as que me dizerem: “Não utilizamos mais Hibernate porque em tal projeto não deu certo”.
A mesma historia não pode se repetir com Rails!
Eu tenho enviado um email para a empresa responsável pelo sistema dando a conhecer que o produto deles foi realizado com uma qualidade péssima e dei a conhecer que não existia necessidade disso, dado que eu sei que no mercado existem excelentes desenvolvedores que morrem de vontade de trabalhar com Rails e não possuem a oportunidade. Muitas pessoas se esforçam fortemente para melhorar o desenvolvimento de software, especialmente no Brasil, e um trabalho desses simplesmente pode causar um estrago enorme .
No mesmo email prometi também que não ia mencionar o nome da empresa se ela me prometesse que ia melhorar essa qualidade.
Meu email não foi respondido, mas por outra pessoa eu ja sei que foi lido. A mesma pessoa comentou que não era meu problema, que a empresa não se importava com a qualidade do projeto, que ela tinha conseguido vender ele é ter ganhado dois prêmios, que isso era o que importava para ela, finalizando com que ia ser processado e iam queimar meu nome se anunciava o nome da consultora.
Não sei por que poderia ser processado se não tenho mentido em nada, mas para não arriscar, vou manter o nome em off.
Sobre o nome, eu queria deixar claro que estou escrevendo esse texto porque não consigo me conformar com coisas feitas de mal jeito. Eu amo minha profissão e meu pais e essas duas coisas são minhas principais motivações para realizar as coisas com a maior qualidade possível, isso é o que podem esperar de mim.
Acho que não é preciso argumentar e que tudo mundo consegue entender aqui que empresas com esse pensamento, que não aspiram a excelência e não se preocupam com qualidade são negativas para os que se esforçam com melhorar a comunidade e a industria de Software.
Queria dar a conhecer a vocês que esse tipo de entidades já chegaram ao mundo Rails e incentivar a que, no possível, tentem evitar que aconteçam essas coisas que vocês acham erradas e que indiretamente terminam afetando a todos nos.
Tags: comunidade · rails
por Diego Carrion - March 30th, 2009 · 1 comentário
Ja passaram uns dias desde que anuncie no meu Twitter a noticia, mas somente agora peguei um tempo para escrever aqui no blog então aí vai:
o RSpec::VRaptor é totalmente compatível com o novo VRaptor 2.6 Nice URLs!
O VRaptor 2.6 vem com um plugin chamado Nice URLs que permite definir rotas para à aplicação num arquivo, estilo Rails.
Mas não só isso, a ultima versão do RSpec::VRaptor adicionou uns matchers muito legais, segue um exemplo do que é possível realizar agora:
describe CarController do
context "na action action1" do
before :all do
get "/car/action1", :cookies => {'key' => 'value'}
end
it "deve ter um header com a data da resposta" do
@response.headers['Date'].should_not be_nil
end
it "não deve ter uma view de resposta" do
@request.should be_viewless
end
end
context "na action action2" do
it "deve renderizar o arquivo action2.erb" do
get "/car/action2"
@request.should render("car/action2.erb")
end
it "deve redirecionar para a home se o usuário estiver logado" do
get "/car/action2", :session => {'logged' => true}
@response.should redirect_to("user/home")
end
end
end
Como podem ver, agora não só podemos injetar cookies no nossos requests, também podemos verificar os headers de resposta, validar se a requisição é viewless (método com anotação @Viewless), se vai ser renderizado um arquivo x ou se a resposta redireciona para algum outro recurso.
Tags: bdd · rspec · tdd · vraptor