Blog da Improve It

Hora extra toda segunda-feira

Publicado por Vinicius Manhães Teles há aproximadamente 1 mês.

Venha participar do Hora Extra, nosso chopp semanal!

Amigos do Rio de Janeiro, vocês estão todos convidados a fazer hora extra na segunda-feira em nosso escritório no Leblon. O escritório é o Informal na Conde de Bernadote (perto da Cobal e da Sendas). O pessoal chega para trabalhar umas 19:30h-20:00h

Freqüentadores assíduos:

Freqüentadores não tão assíduos e convidados:

Se tiver interessado, fale comigo ou com o Rafael.

P.S. Se esquecemos de alguém na lista, me avisem!

Abraços a todos

Tags  | 3 comentários

Designers: 4 formas de se dar bem com o Be on the Net

Publicado por Vinicius Manhães Teles há aproximadamente 1 mês.

Compramos templates imediatamente por R$ 500. E essa é só uma das 4 formas de se dar bem com o Be on the Net!

Há duas semanas descrevemos como designers poderiam trabalhar conosco para viabilizar os sites que começarão a ser criados sobre o Be on the Net a partir de dezembro. De lá para cá, conversamos com inúmeros designers que não só se interessaram pela proposta, mas também deram muito feedback útil.

Com base nas conversas, percebemos que o modelo inicial que havíamos idealizado não seria dos melhores. Aproveitando o feedback recebido e ponderando mais sobre o assunto, definimos uma nova forma de atuação que nos parece melhor e ao mesmo tempo mais simples. Conversas com designers nos últimos dias confirmaram que este caminho é mais promissor. Então, vejamos as quatro formas de se dar bem com o Be on the Net, caso você seja um designer.

  1. Estamos comprando templates. Até o dia primeiro de dezembro, aquele que estiver a fim de criar um template para o Be on the Net poderá fazê-lo e nos enviar. Se gostarmos (e queremos muito gostar), iremos comprar seu template pelo valor de R$ 500,00. Se você fizer vários e nós gostarmos, compraremos todos eles, cada um ao preço de R$ 500,00. Detalhes operacionais virão mais abaixo.

  2. O acordo para a compra de um template implica que ele será disponibilizado para os clientes do Be on the Net como Creative Commons Atribuição 2.5 Brasil. Assim, eles poderão adotar o template que preferirem para seu site e não terão que pagar nenhuma taxa de setup ou adesão para começarem a usar o Be on the Net. Basta escolher o template e colocar o site no ar. Sendo que há um detalhe essencial. Seu template, uma vez comprado por nós, ficará exposto no site do Be on the Net e o seu nome estará lá, como autor do template. Isso não é tudo. Seu nome terá um link para o seu site, blog, ou onde quer que você exponha seu trabalho. Queremos que todos saibam quem fez cada template e tenham condições de chegar até você facilmente. Em suma, queremos promover seu trabalho!

  3. Quando um cliente do Be on the Net escolher seu template e o site dele for ao ar, seu nome aparecerá na parte inferior de cada uma das páginas do site como responsável pela criação daquele layout. Mais uma vez, seu nome estará com um link para a sua página na internet. Não precisa dizer que o objetivo, de novo, é te promover. Detalhe importante é que seu page rank no Google tenderá a subir, já que haverá um link para o seu site em cada uma das páginas de cada um dos sites que usarem seu template. E, quanto melhor o template, mais clientes do Be on the Net tenderão a usá-lo. Só para dar idéia dos números, o Be on the Net só será lançado mês que vem e a fila de espera já tem quase 200 pessoas!

  4. Este é um pouco mais de médio prazo, mas é importante saber desde já. Dentro de alguns meses lançaremos planos de revenda. Através deles, você poderá fazer sites para seus clientes usando a infra-estrutura do Be on the Net, mas com condições especiais para você. Com isso, você poderá se livrar da parte técnica de fazer um site para um cliente, dedicar-se apenas ao design e ainda faturar uma grana através de mensalidades. Detalhes sobre a forma de operacionalizar isso virão em um futuro próximo, mas acreditamos que esta modalidade pode vir a se tornar uma forma fabulosa de gerar receita para designers em todo o Brasil. E o que é melhor, receita repetível, através de mensalidades.

Não queremos que clientes e designers tenham que se preocupar com a infra-estrutura de um site, por isso cuidamos desta parte.

Nossa visão do Be on the Net segue algumas premissas bem definidas:

Tá interessado? Quer saber quais os próximos passos?

Se você se interessou, há três coisas a fazer.

  1. Entre em contato conosco para nos informar que você tem interesse em preparar um template para o Be on the Net. Ao fazer isso, envie-nos todas as informações de contato que você tiver. Para nós é particularmente importante, além do email e telefone, o seu usuário no Skype. Se não tiver um, por favor crie e assegure-se de ter um alto-falante e microfone conectados ao computador. Skype é uma de nossas formas de comunicação preferida, por ser bastante eficaz e não ter nenhum custo. É essencial que você envie seus contatos, para que nós também possamos te enviar os nossos emails, Skype, GTalk etc. Queremos que você nos encontre facilmente para tirar qualquer dúvida que apareça.

  2. Você precisará conhecer os HTMLs que compõem um site típico no Be on the Net. Para isso, criamos um projeto no GitHub, onde você encontrará os arquivos e instruções necessárias. Se você não sabe o que é o GitHub, não se preocupe, basta fazer o download dos arquivos. Mas, se você sabe usar o GitHub, acompanhe o projeto e faça um clone dele.

  3. Mãos à obra. Lembre-se de que precisamos receber os templates até primeiro de dezembro. É possível que aceitemos novos templates após esta data, mas a prioridade é primeiro de dezembro.

Neste momento já há um grupo de designers que está trabalhando na criação de templates. São aqueles com os quais conseguimos conversar nas últimas duas semanas. Nosso objetivo é ter o máximo de templates possível até primeiro de dezembro. Pode parecer que trata-se de uma concorrência, dada a quantidade de pessoas que já têm interesse nisso e as próximas que terão a partir deste post. Entretanto, o objetivo não é criar uma competição. Não queremos que ninguém seja eliminado. Pelo contrário. Queremos, tanto quanto possível, aproveitar o trabalho de todos.

Isso não significa que vamos aceitar trabalhos que estejam aquém do que desejamos, mas sim que iremos dar o máximo de orientação a vocês para que compreendam o que estamos buscando. Se alguém nos submeter algo que não aprovarmos, não iremos simplesmente rejeitar. Vamos explicar o que pode ser feito para chegar onde desejamos. Vamos ajudar cada uma de vocês ao máximo para que o trabalho chegue ao ponto de ser aprovado e seja incorporada na base de templates do Be on the Net. Acredite, se você quiser participar disso, você pode e nós vamos ajudar no que for necessário.

Até pouco tempo atrás eu acreditava fortemente que o Be on the Net poderia fazer uma enorme diferença nos negócios dos nossos clientes. Mas, cada vez mais, percebo que isso também vale para os designers que embarcarem neste projeto, sobretudo os que fizerem isso logo. Acreditem, vocês terão muitos, muitos, muitos negócios pela frente! E, no que depender de nós, faremos o que estiver ao nosso alcance para que isso aconteça. Então, mãos a obra!

Tags , , , ,  | 4 comentários

Falando sobre CouchDB

Publicado por Marcos Tapajós há aproximadamente 1 mês.

cdb2

Acabei de fazer um post sobre as minhas impressões após usar um pouco o CouchDB. Dessa vez fiz o post em inglês mas pretendo traduzir assim que eu tiver mais tempo e menos tendinite. Quem quiser ir conferindo o original:

http://en.blog.improveit.com.br/articles/2008/11/16/databases-dont-scale-yet

Tags  | nenhum comentário

Como Testar parte 2 - Mocks

Publicado por Marcos Tapajós há aproximadamente 1 mês.

Tem gente "chutando" Demeter.

Minha idéia era escrever um post dessa série por semana, mas infelizmente uma tendinite tem me atacado e está meio complicado ficar escrevendo muito. Por isso mesmo esse segundo artigo será bem compacto. Todos os códigos citados nesse post fazem parte de um projeto How Test que está disponível em: http://github.com/tapajos/how-test

Nesse post a minha idéia é mostrar de forma bem simples como funciona um mock object no Rspec e no Test::Unit(usando o mocha).

Para exemplificar eu vou fazer uma crítica a uma construção que eu tenho visto muito em diversos projetos e que viola a Lei de Demeter(Principle of Least Knowledge). Ou como dizia, o meu amigo, Bernardo, "Tem gente chutando Demeter!".

Vamos a um exemplo dessa violação:

Supondo que você tenha um modelo Account que se relaciona ao modelo User.

class Account < ActiveRecord::Base
  belongs_to :user
end

Freqüentemente eu vejo construções do tipo:

@account.user.name
@account.user.mail
@account.user.rg.number
@account.user.rg.state
@account.user.rg.city

O grande problema é que nesse tipo de construção você está "conhecendo" coisas demais e certamente vai pagar por isso num futuro breve, quando você precisar fazer um refactoring e tiver que mudar em vários lugares. Imagina se o User deixa de ter um "name" e passa a ter um "full_name".

Para resolver esse tipo de problema basta você concentrar esse "conhecimento" no seu modelo Account da seguinte forma:

class Account < ActiveRecord::Base
  belongs_to :user
  def user_name
    user.name
  end
end

OBS: Vou me concentrar apenas no problema com o nome e não vou me preocupar em validar se o relacionamento foi estabelecido.

Bem, finalizada a crítica a uma falha de design OO vamos ao objetivo desse post, mostrar como *EU* testaria esse problema.

Como eu falei no post anterior, não gosto muito de usar fixtures para testes unitários e por isso mesmo vou apelar aos mock objects. Se você não está muito familiarizado com mocks sugiro que pare por aqui e leia um pouco mais sobre isso. Uma referência rápida pode ser o wikipedia mas realmente sugiro que vá mais adiante.

Testando usando RSpec(usando o framework de mock padrão):

before(:each) do
  @account = Account.new    
  @user_mock = mock_model(User)
  @account.stub!(:user).and_return(@user_mock)
end

describe ".user_name" do

  it "should delegate to user.name" do
    @user_mock.should_receive(:name).and_return("Tapajós")
    @account.user_name.should == "Tapajós"
  end

end

Testando usando Test::Unit com mocha:

setup :create_model

def test_user_name
  @user_mock.expects(:name).returns("Tapajós")
  assert_equal "Tapajós", @account.user_name
end

private

  def create_model
    @account = Account.new
    @user_mock = mock("User")
    @account.stubs(:user).returns(@user_mock)
  end

Explicando...

Em ambos os casos eu preciso que a minha account simule o relacionamento com User e para isso eu vou retornar um mock object. Isso é feito pelas linhas:

RSpec:

@account.stub!(:user).and_return(@user_mock)

Test::Unit:

@account.stubs(:user).returns(@user_mock)

Após o setup ou o before, temos um modelo @account onde o @account.user retorna um mock.

Feito isso eu preciso configurar o meu mock, isto é, informar que ele receberá uma mensagem name (chamada do método .name) e essa retornará o meu nome(sim, sou egocêntrico). Isso é feito pelos métodos "should_receive" e "expects" conforme as linhas abaixo:

RSpec:

@user_mock.should_receive(:name).and_return("Tapajós")

Test::Unit:

@user_mock.expects(:name).returns("Tapajós")

Depois que nossos mocks foram devidamente configurados podemos, finalmente, fazer nossa verificação do retorno, isto é, simplesmente chamar nossos métodos conferir o retorno. Pronto teste feito com sucesso, sem precisar recorrer a banco de dados nem configurar fixtures.

Nesse momento deve ter surgido uma dúvida: "Porque uma hora você usa stub! e outra um should_receive?"

A resposta é bem simples, o stub! não faz um verify no final enquanto a outra chamada sim. Na pratica isso significa:

Stub! ou stubs

Quando eu uso stub!(ou um Stubs) eu estou configurando o meu modelo account para responder pelo método user retornando o @mock_user porém não me interessa quebrar esse teste caso você não chame esse método.

Should_receive ou expects

Quando eu uso should_receive(ou um expects) eu estou configurando o meu mock user para responder pelo método name porém caso esse método não seja chamado eu devo quebrar meu teste, pois isso seria um comportamento indesejável.

Porque usar mocks?

Ao contrário do que muita gente pensa o uso de mocks não é um bicho de 7 cabeças, é bem simples. Na verdade testar é algo simples, desde que você tenha domínio do ferramental e os mocks são realmente úteis em diversos casos.

Imagina que o seu sistema precise fazer consultas a uma api publica do Yahoo e para isso você tenha criado uma classe de consultas. Você não vai querer(nem o Yahoo vai gostar) ir lá no servidor toda vez que você rodar os seus testes. Isso tornaria os seus testes lentos e impossível roda-los offline. Nesse caso você resolve seu problema "mockando" essa classe.

Tags , , , , , ,  | 7 comentários

Primeiro screencast do Be on the Net

Publicado por Vinicius Manhães Teles há aproximadamente 1 mês.

Estamos começando a produzir uma série de screencasts que servirão de apoio ao Be on the Net. Neste sentido, hoje fizemos um pequeno piloto e o resultado encontra-se abaixo. Ainda é algo muito preliminar, mas para algumas poucas horas investidas e considerando nossa pouca experiência na produção deste tipo de conteúdo, ficou melhor que o esperado.

Link direto para o vídeo

Em tempo, o site em questão é o da fotógrafa Patricia Figueira. Quanto ao screencast, eu fiz o roteiro e o Leandro fez todo o restante, inclusive a locução. Valeu, Leandro! :-)

Aproveite para conhecer o Be on the Net e se quiser ter um site assim, adiante o seu lado.

Tags , , ,  | 12 comentários

Web designer, precisamos do seu poder.

Publicado por Leandro Mello há aproximadamente 1 mês.

Estamos procurando um grupo de excelentes designers com quem possamos manter um relacionamento duradouro. E você pode ser um deles.

Nosso produto em desenvolvimento, Be on the Net, está avançando rumo a seu lançamento.

Se depender do número de pessoas interessadas nele, podemos dizer que já somos um potencial sucesso: hoje, mais de cento e cinqüenta pessoas aguardam ansiosamente em nossa lista de espera para terem um site lindão só seu.

Assim que o Be on the Net for lançado, atenderemos estas pessoas uma a uma, para dar a elas layouts simples, belos e personalizados. Para a fila fluir, vamos adotar a seguinte prática: o cliente da vez vai passar dois maravilhosos dias em contato conosco para, todos juntos, darmos saída ao design lindão dele. Mas só isso: dois expedientes. Depois disso, venha o próximo da fila. Para ela fluir, como dissemos.

Puro CSS

Para a fila fluir mais ainda, é aí que você entra. Be on the Net é um aplicativo web que já tem HTML e JavaScript prontinhos para o usuário, só precisando de seu CSS para deixar o site com a cara do cliente. Portanto, estamos a partir de agora convocando webdesigners de todo o Brasil para faturar dindim com o que sabem fazer de melhor: puro CSS.

A dinâmica e as possibilidades

Funciona assim: os designers desse Brasil — você, por exemplo — vão oferecer, assim como nosso designer, um freela de dois dias para uma pessoa da nossa lista de espera. Ao final de dois expedientes, o cliente sai com design pronto, paga um troquinho atraente para ele, você sai com grana e a Improve it, com uma comissãozinha simbólica. Simples assim.

Designer + Be on the Net = Dindim (e as possibilidades ainda são muitas!)

E é aí que entram as possibilidades! Há várias maneira de você fazer grana com o Be on the Net!

Você pode:

Estas são as formas mais básicas de ganhar dinheiro. Mas há mais possibilidades! E se você faz vários layouts por mês em um dia cada um, e seus clientes todos concordam em ceder como Creative Commons? Putz, enxurrada de dinheiro! E por aí vai.

Que poderes você deve ter

Simples: os poderes que qualquer ninja teria. :-) O Be on the Net funciona sobre um código XHTML 1.0 Strict válido e um JavaScript impecável. Para você figurar entre nosso grupo seleto de designers, gostaríamos que tivesse o mesmo carinho com seu design, orientando-o plenamente aos web standards. O que você precisa:

Para terminar... por enquanto

Ainda há muito a decidirmos sobre dindim. O preço que o cliente vai pagar nestes dois dias de setup, o desconto que ele vai levar se terminar em um dia, o que você vai ganhar a cada trabalho e o que vamos ou não receber como comissão, isso tudo ainda está em definição.

O que buscamos é alinhar interesses — o que o cliente paga é leve e bem atraente; ele ganha o Be on the Net dele logo, sai feliz o quanto antes e colhe os lucros de seu novo site em pouco tempo; o tempo curto inspira-o a pensar em simplicidade e a se preparar para ajudar você, no melhor estilo “menos é mais”; você recebe uma baita grana associando criatividade de ação, qualidade e quantidade — se você é bom, queremos você por perto como freela mais vezes, ora! :) —; ganha nome em nosso site; e nós multiplicamos nossas mãos ganhando um montão de parceiros — e todos nós garantimos o leitinho das crianças no processo! ;)

Vamos adorar lucrar fazendo da web um lugar melhor. E seu cliente vai adorar você pelo site lindão.

Espalhe (bem) a notícia, divulgue por todos os meios: estamos procurando um grupo de excelentes designers com quem possamos manter um relacionamento duradouro. E você pode ser um deles. Se estiver interessado(a), entre em contato — links para seus melhores trabalhos serão muito bem-vindos!

Tags , , , , , ,  | 14 comentários