Blog da Improve It

Beonthe.net: cem pessoas na fila de espera

Publicado por Vinicius Manhães Teles há 5 dias.

Há alguns meses nós montamos uma fila de espera para o Beonthe.net e a quantidade de pessoas vinha crescendo gradualmente. Mas, de repente, alguma coisa aconteceu. Durante o mês de setembro, que acabou de terminar, a fila simplesmente dobrou de tamanho. No início do mês havia pouco menos de 50 pessoas, enquanto ao final já tínhamos pouco mais de 100. Hoje temos 107 pessoas registradas, para ser exato.

Conversei por telefone com a maioria dessas pessoas e o feedback não poderia ser melhor. Com isso, estamos cada vez mais animados com o que está saindo, embora levemente apreensivos com a quantidade de gente que teremos que atender desde o início.

Para melhorar as coisas um pouco mais, a última edição da Revista Fhox trouxe uma matéria da minha esposa, Patricia Figueira, falando sobre a importância do site para os fotógrafos. O título é sugestivo: Não esqueça o site; é o cartão-de-visita. Vejam abaixo:

Matéria na Revista Fhox: Não esqueça o site; é o cartão-de-visita.

Tags ,  | 2 comentários

Novo site da Improve It e novidades

Publicado por Vinicius Manhães Teles há 4 meses.

Novo site da Improve It. Confiram!

Algumas novidades:

Tags , , ,  | 20 comentários

Call for Help

Publicado por Vinicius Manhães Teles há 5 meses.

Este post é mais voltado para o próprio pessoal da Improve It, mas se alguém mais puder e/ou quiser ajudar, já adianto meu muito obrigado.

Galera da Improve It que está no Lucidus, sei que vocês já trabalham pra caramba por aí, mas se vocês chegarem em casa à noite e não tiverem nada mais divertido para fazer, tenho uma proposta divertidíssima. :-) Estamos precisando de ajuda para levantar informações sobre alguns assuntos críticos para o desenvolvimento do nosso produto.

Colocarei abaixo uma série de tópicos que precisamos conhecer melhor. Junto a cada um deles há uma lista de perguntas essenciais, cujas respostas serão de grande utilidade. Caso algum de vocês se interesse por um destes assuntos, por favor indique o assunto adicionando um comentário a este post. Se você decidir pesquisá-lo, o que eu peço é que você escreva as respostas e me envie até a próxima segunda-feira. As respostas nos ajudarão a tomar decisões sobre o desenvolvimento e o ferramental a ser usado. Também serão colocadas aqui no blog para que outras pessoas possam se beneficiar da pesquisa.

Para qualquer assunto que você venha a pesquisar, faça o seguinte:

Abaixo segue a lista de assuntos e perguntas específicas para cada um deles. Tais perguntas deverão ser respondidas de forma detalhada apenas para as duas soluções que você selecionar como melhores. As que não forem escolhidas apenas deverão ter seus nomes e links listados, mas não é preciso entrar em maiores detalhes.

Galera, como disse antes, sei que vocês já têm um monte de coisas para fazer no dia-a-dia. Mas, se tiver uma horinha que seja na parte da noite em que vocês estejam de bobeira, por favor, dêem uma olhada em algum destes assuntos. Acreditem, vai ajudar pra caramba! Mas, se não der, não tem problema. Mais importante que isso tudo é continuarmos fazendo um bom trabalho no Lucidus.

Tags  | 8 comentários

O desenvolvimento do Just-remind.us

Publicado por Vinicius Manhães Teles há 6 meses.

Enquanto estou de castigo aqui em São Paulo, aguardando o vôo de conexão que me levará ao FISL, achei que seria uma boa comentar um pouco sobre o desenvolvimento do Just-remind.us.

A idéia original era fazer um "projetinho" de uma semana. Mas, um "projetinho" nunca é um projetinho, estão, acabamos gastando três semanas. A equipe de desenvolvimento era composta por três pessoas: Tapajós e eu na programação, e o Leandro no design. Eu e o Leandro trabalhamos full-time, quatro dias por semana, enquanto o Tapa foi part-time.

O protótipo básico da aplicação, com a tela dos cartões e o formulário de edição, ficou funcional ao final do primeiro dia. Afinal, o sistema não poderia ser mais simples. Então, com um pouquinho mais de trabalho, poderíamos ter colocado o sistema no ar em dois ou três dias certo? Depende. Queríamos passar um tempão corrigindo bugs após o deploy, ou a idéia seria terminar este projeto e começar outro sem se preocupar com bugs no Just-remind.us? Definitivamente a gente prefere a segunda opção.

Odeio corrigir bugs e morro de vergonha quando encontram um bug em algo que eu fiz. Então, só há uma opção, óbvia por sinal: testar freneticamente. Mas, parece que tudo que é óbvio tem uma tendência incorrigível de ser negligenciado. Mas, não aqui.

Nós fizemos muitos testes no Just-remind.us. Para começar a explicá-los, vejam a imagem abaixo:

Stats do Justremindus

A primeira parte da imagem mostra o resultado de um rake stats no projeto. Como se pode ver, são 548 linhas de código Ruby, contra 1419 linhas de código de Specs, ou seja, 2.6 vezes mais linhas de Specs que linhas de código da aplicação. Nos Specs, nós temos 223 exemplos que cobrem 100% das linhas de código do projeto (segundo o RCov).

A segunda parte da imagem mostra a execução de um rake stats_with_selenium. Mais, hein? Pois é, nós usamos o Selenium exaustivamente para fazer testes funcionais. Na boa, não dá para fazer uma aplicação web sem usar algo assim. Sério, não dá! Se você acha que dá, me desculpe, mas você é um fanfarrão! :p

Uma coisa que sempre me incomodou no rake stats é que ele não diz nada sobre os HTMLs e o Selenium. Mas, eles também representam uma parte significativa do projeto. Então, pedi ao Tapa que fizesse uma nova versão rake stats que contabilizasse também o Selenium e isso é justamente o que está na segunda parte da figura.

Note que só de Selenium nós temos 1311 linhas de código. A contagem total agora considera 865 linhas de código da aplicação e 2730 linhas de código de teste. Agora, são 3.2 vezes mais código de teste que da aplicação. Nada mal! O Selenium executa 1243 validações através de 58 cenários de teste.

Agora vem a pergunta: faz sentido todo este esforço para uma aplicação tão pequena? Essa pergunta está incorreta, para ser honesto. a pergunta certa é: faz sentido não fazer este esforço? Minha resposta para esta última é, definitivamente, não.

A quantidade de problemas que nós detectamos com estes testes e, sobretudo, a gravidade destes problemas, é surpreendente. Mesmo em uma aplicação ridiculamente pequena como esta, a quantidade de detalhes é inacreditável. Um aspecto que nos preocupou muito era a segurança dos dados dos usuários. Descobrimos vários problemas de segurança fazendo os testes. Obviamente corrigimos todos bem antes de colocar o sistema em produção. Agora eu pergunto: e se nós não tivéssemos feito os testes? Você ficaria feliz de saber que seus dados estão registrados em um sistema que mais parece um queijo suíço, de tanto furo de segurança que tem?

Bem, o sistema está no ar há dois dias. Até aqui, tivenos, no total, 839 visitantes únicos, 1044 visitas e 5069 page views. Não é muito. Mas, é interessante notar que ainda não houve nenhum bug reportado. Provavelmente deve existir algum problema ainda, porque a quantidade de detalhes realmente é grande. Mas, até agora está tudo bem. Exatamente o que nós queríamos que acontecesse. A única bobeira que nós demos (e já sabemos) foi de design. Ontem à tarde nós colocamos uma nova versão no ar, que tinha um errinho de CCS, bem visível na primeira página. Mas, isso foi corrigido pouco tempo depois. A propósito, se vocês detectarem algum problema, por favor, nos avisem.

Desenvolver software sem testes não é apenas coisa de fanfarrão. É coisa de irresponsável. É impossível uma atividade tão complexa quanto desenvolver software ser conduzida sem testes automatizados, em uma quantidade absurda. Quer dizer, possível é, mas não é aceitável. Nem mesmo para um sistema simples como esse.

Todo mundo diz que não tem tempo para testar. Mas, isso é a maior mentira do mundo. Todo mundo acha isso porque conta o tempo errado. O que importa em desenvolvimento de software não é o tempo de desenvolvimento, mas sim o tempo de vida da aplicação. Ou seja, ao longo do tempo de vida da aplicação, quanto tempo você vai ter que dedicar a ela? O desenvolvimento original da mesma é apenas uma parcela do problema. Normalmente a parcela maior vem depois, durante todo o restante do tempo de vida do aplicativo. Você vai ficar corrigindo bugs nele todo dia, ou vai estar liberado para desenvolver outra coisa?

A visão tradicional de que não dá tempo é míope. Não enxerga a grande verdade: o tempo de desenvolvimento é o menor dos problemas!

Semana que vem, vida nova. Vamos tocar nosso primeiro aplicativo comercial, aquele outro segredo que ainda vai levar um tempo para ser revelado. ;-)

Tags  | 7 comentários

Fim do mistério

Publicado por Vinicius Manhães Teles há 6 meses.

Just-remind.us é o nome da criança. Na semana passada escrevi que estávamos criando uma pequena aplicação para resolver um problema que eu e alguns amigos temos há algum tempo. Just-remind.us é a solução!

just-remind.us

Na época da faculdade, minha turma criou uma lista no Yahoo Groups. Nós a usamos até hoje para manter contato. De tempos em tempos, alguém muda de endereço, ou telefone e a gente sempre quis ter um lugar centralizado para manter estas informações. Algum lugar que fosse fácil de atualizar por qualquer pessoa, mas fosse fechado para os membros de um grupo. Chegamos a pensar em uma planilha no Google Apps e outras alternativas. Mas, nenhuma foi tão atrativa ao ponto de vencer a preguiça generalizada. :-)

Just-remind.us resolve isso de um modo ridiculamente simples. Ainda assim, é elegante e dá liberdade para colocar qualquer conteúdo que os usuários queiram.

Embora o problema em questão seja bem pontual, acreditamos que seja um problema comum a vários grupos de pessoas. Então, se você também passa por isso, use o Just-remind.us. Cadastre seus amigos, familiares, colegas de trabalho e quem mais quiser. Cada grupo tem um login e senha únicos. Quem entra, pode fazer o que quiser. É a mesma liberdade de um wiki, porém com uma estrutura básica para as informações essenciais que o grupo deseja manter.

Se alguém estava esperando algo grandioso, que faz um monte de coisas, esqueça. Não é nosso estilo. A gente gosta de fazer coisas pequenas, bem focadas, mas fáceis de usar. Nem sempre é viável, mas neste caso era perfeito.

Enjoy!

Tags  | 20 comentários

Something in our minds...

Publicado por Vinicius Manhães Teles há 6 meses.

Depois que finalizamos o projeto da Júlia, nossa idéia era iniciar o desenvolvimento de nosso produto comercial, que tem como base tudo o que foi construído para a Júlia e algumas coisinhas a mais. Entretanto, uma questão me fez mudar de idéia. Criar um produto é importante, mas fazer com que o mundo saiba dele é tão ou mais importante. Então, comecei a pensar sobre que estratégias de marketing poderíamos usar. Observando a história de empresas como a 37signals, comecei a perceber que o amplo conhecimento que as pessoas têm sobre ela talvez esteja bastante associado, entre outros fatores, ao Rails e ao uso de produtos gratuitos que eles construíram. Comecei a me dar conta de que um produto de uso gratuito pode ser uma boa forma de fazer as pessoas conhecerem sobre a sua empresa e sobre o estilo de aplicações web que você desenvolve.

Há um problema que eu e alguns amigos temos há algum tempo. Provavelmente você também tem este problema. É uma dessas pequenas inconveniências do dia-a-dia que poderiam ser resolvidas com uma bela aplicação web. O problema é tão simples, que imaginei que pudéssemos implementar algo para solucioná-lo em uma semana. Sendo um tempo tão curto, decidimos investir.

Minha previsão de uma semana estava completamente furada, naturalmente. :-) O otimismo de um desenvolvedor para estimar alguma coisa parece ser uma doença endêmica e incurável. De fato, a essência da aplicação ficou pronta em pouco mais de um dia. Se fosse só para mim, estaria tudo resolvido. Mas, quando a idéia é disponibilizar para o mundo inteiro, a história é diferente.

Como mencionei antes, o objetivo deste aplicativo é resolver um problema real e mostrar ao mundo que tipo de aplicativos podemos fazer. Então, não dá para queimar o filme com algo funcional, mas mal feito. Como sempre, o diabo está nos detalhes. A quantidade de pequenos detalhes que precisam estar corretos é grande, mesmo em uma aplicação pequena como esta.

A aplicação que fizemos para a Júlia está no ar há quase dois meses e o uso vem crescendo continuamente. Hoje houve um novo recorde, com 477 visitas/dia e 10.069 pageviews/dia. No mês de março foram 7.080 visitas/mês e 224.272 pageviews/mês. Considerando a natureza da aplicação (que por enquanto não será revelada), tratam-se de números significativos. Apesar do uso constante e crescente, até hoje não tivemos relatos de bugs. Isso é ótimo, porque nos deixa livres para fazer outras coisas. Odiamos corrigir bugs! Então, fazemos tudo, tudo mesmo, para evitar que eles existam. Nossa filosofia é sempre de prevenção, com muito teste automatizado.

Queremos que seja a mesma coisa com o re... Oops, quase falei o nome antes da hora. :-) Então, queremos que seja a mesma coisa com este aplicativo. Estamos fazendo tudo para que não tenha erros. E, neste caso, há um componente adicional que não era tão crítico na aplicação da Júlia: segurança. Por que é mais crítica neste aplicativo? Devido à natureza dele e porque o alvo é o mundo inteiro. Ele guarda informações sensíveis e será disponibilizado exclusivamente em inglês, para ser usado por qualquer pessoa, onde quer que esteja. Isso significa que qualquer hacker, em qualquer parte do mundo, poderá ter a "fantástica" idéia de tentar burlar o sistema para roubar informações. Se isso acontecer, digamos que não será algo muito divertido, ao menos para nós. Segurança é um assunto amplo e precisa ser tratado com muita atenção. Por isso, estamos levando mais tempo para colocar tudo no ar. É claro que talvez o aplicativo nunca chegue ao ponto de atrair um hacker, mas este é o tipo de questão onde não podemos dar bobeira. Pode não atrair ninguém, mas se atrair, o tamanho do estrago que pode ser feito é significativo. Melhor fazer o possível para evitar que aconteça.

Semana que vem tem o FISL e estarei por lá. Estamos fazendo o possível para que o aplicativo seja lançado antes dele. Será completamente gratuito e sem AdSense. Essa é parte da filosofia do aplicativo. AdSense são legais, para o Google, mas não tão legais assim para os usuários de um site. Essa é a minha opinião. Acho que eles poluem demais e agregam muito pouco, tanto para o dono do site, quanto para quem visita o site. Este aplicativo não terá AdSense. Os custos de sua manutenção serão bancados pela Improve It como forma da investimento. Então, se este aplicativo der certo e as pessoas começarem a usar bastante, iremos usá-lo para anunciar nosso produto comercial, quando estiver pronto.

Naturalmente, este produto é um experimento. Ele pode "pegar" ou não. Não temos a menor idéia do que vai acontecer, mas estamos curiosos e fazendo o máximo para que a usabilidade seja a melhor possível e as pessoas o adotem. Espero que vocês gostem!

Tags  | 7 comentários

Tive que contar para o Fábio

Publicado por Vinicius Manhães Teles há 7 meses.

Estava há pouco conversando no Skype com meu amigo Fábio Pereira. No início deste ano ele nos abandonou e foi lá para a Austrália para mostrar aos caras da ThoughtWorks com quantos bytes se faz software. Aqui a gente não fala sobre o que está fazendo para quase ninguém, mas como o Fábio é meu amigão, desde os tempos da Paggo, contei-lhe tudo. Na verdade, já queria fazer isso há muito tempo, porque, além do interesse técnico, sei que ele também curte o ramo de negócio em que estamos atuando.

Para mim foi muito legal receber todos os emails de feedback que a Júlia, nome fictício da nossa cliente (nada fictícia), nos repassou após o lançamento do site que fizemos para ela. Mas, melhor ainda é poder contar para um amigo que compreende as implicações técnicas e comerciais do que fizemos. O fato de o Fábio ter ficado admirado me deixa animado, porque o cara é sinistro, mesmo sabendo que eu tenho que dar um desconto de 90% no que ele falou, porque ele é suspeito. Valeu, Fábio! :-)

A propósito, conheçam o blog dele e vejam o que um brasileiro tem que aturar quando sai daqui. Ouvi dizer que estes dias o Fábio teve até que varrer o apartamento. Poor guy! :-)

Bom, hoje tive uma idéia, com base em um probleminha que alguns amigos meus andam enfrentando. Se a chuva me impedir de velejar amanhã, é bem provável que eu faça uns experimentos. Quem sabe o que pode sair disso. Ei, Tapa, agora é você que vai ficar curioso até a segunda-feira! :p

Tags  | 2 comentários

Onde foram parar aqueles caras da Improve It?

Publicado por Vinicius Manhães Teles há 7 meses.

Há pouco mais de dois meses nós decidimos mudar de rumos e deixar os serviços de consultoria de lado. De lá para cá, estamos bem quietos. Afinal, o que anda acontecendo por aqui? Resumidamente, resolvemos começar nossa jornada resolvendo um problema bem concreto, para então começar a trabalhar no nosso primeiro produto.

Problema

A gente acha que bons produtos são extraídos de projetos reais, que resolvem o problema de alguém e podem ser re-estruturados para resolver o problema de muitos. Sendo assim, ainda em dezembro, na mesma época que anunciamos nossa saída do mercado de consultoria, começamos a trabalhar para um cliente. Trata-se de um negócio pequeno, porém extremamente bem sucedido, que atua em um ramo que movimenta uma boa grana. Ou seja, o negócio é pequeno, mas há dinheiro circulando o tempo todo. Por enquanto, não iremos revelar nem quem é o cliente e nem qual é a área de negócio, mas, para facilitar a história que vem a seguir, vou dar um nome fictício ao nosso cliente. Vamos supor que chama-se Júlia.

Júlia tinha um site. Não era dos melhores, mas era tolerável. Era parecido com muitos outros de pessoas que atuam no mesmo ramo. Este ramo é interessante porque a maioria dos sites é horrível e partem de uma premissa que, na nossa opinião, é profundamente equivocada. Nossa missão era dar um novo site à Júlia. Mas, não apenas isso. Este site teria que ter algumas funcionalidades que poderiam ajudá-la a acelerar seus processos. Ou seja, há um aspecto institucional, de apresentar o trabalho e outro funcional muito forte e, tipicamente, mal resolvido. Resolvemos tratar deste último de maneira inovadora, mas não foi só aí que decidimos inovar. Também queríamos quebrar a premissa fundamental que rege a maioria dos sites deste ramo.

Primeiro Ato

Dividimos o projeto em duas partes, que vou chamar de primeiro ato e segundo ato. O primeiro ato foi implementado em pouco mais de um mês e colocado no ar por volta do dia 10 de fevereiro de 2008. Na equipe, eu, o Tapajós e o Leandro trabalhando nisso em torno de trinta horas por semana.

Durante o desenvolvimento, estivemos próximos da Júlia o tempo todo. Conversamos muito sobre cada aspecto do sistema e fizemos inúmeros experimentos, sobretudo com a interface do usuário. Além disso, tentamos simplificar tudo que podíamos. A premissa era: preguiça é bom! Sim, quando se trata de desenvolvimento de software, há um certo tipo de "preguiça" que nos alerta quando estamos fazendo algo de forma excessivamente complicada. Foi esta preguiça que nos levou, por exemplo, a não usar banco de dados para praticamente nada. A única exceção é o armazenamento de sessões. Devido a algumas características do aplicativo, não dava para usar sessões baseadas em cookie.

É possível fazer um software significativo sem banco de dados? Ou melhor, dá para fazer sem persistência? Neste aplicativo, em particular, não dava para fazer sem persistência, mas dava para ficar sem banco de dados. Quer dizer que usamos algo tipo prevalência de objetos? Não exatamente. Há muita informação persistida, mas nós não tivemos que cuidar diretamente desta persistência e isso nos poupou muito trabalho. Os detalhes eu vou ficar devendo, lamentavelmente. Mas, posso dar uma idéia de números para vocês. Os dados persistidos podem levar o site a ter uma grande quantidade de páginas internas. Neste momento, o sitemap contém 15.133 páginas. Entretanto, este número é menor que o número real de páginas que ele possui. Como ficaria muito custoso gerar um sitemap completo, nós decidimos fazer um corte. Em todo caso, isso dá uma idéia da quantidade de dados que são persistidos e usados no site, porém, surpreendentemente, não há banco de dados envolvido! :-)

Há um detalhe interessante nesta questão. Se há tantos dados, como a Júlia faz para cadastrar estes dados e mantê-los? Boa pergunta. Não dá para explicar aqui como isso é feito, mas basta dizer que sim, há uma área administrativa, onde ela manipula todos os dados com uma interface bacana. Mas, a melhor parte da história é que nós não tivemos que fazer isso, o que, considerando a sofisticação da aplicação, explica como fizemos tudo em pouco mais de um mês.

Qualidade

Linhas de código não indicam quase nada isoladamente, mas, quando usadas em certas comparações, servem para dar uma idéia de características do projeto. Até o momento, temos 742 linhas de código na aplicação e 1934 linhas de specs. Isso significa que temos 2.6 linhas de spec para cada linha de código da aplicação. Aliás, não há uma única linha de código da aplicação que não receba a visita de pelo menos um spec. Ou seja, nossa cobertura de código pelos testes é de 100%, como em todos os nossos projetos. Além dos specs, temos inúmeros testes de aceitação no Selenium que totalizam 2136 checagens. Estes últimos testes consomem, em média, de 5 a 8 minutos para executar e são executados sempre que fazemos uma integração (com o plugin integration). Estes números mostram que temos uma preocupação significativa com a questão da qualidade.

Além dos testes automatizados, nós também realizamos testes manuais em cinco navegadores: IE6, IE7, Firefox, Opera e Safari. Estes testes têm o objetivo de inspecionar visualmente a parte do design, já que este é um terreno ainda complicado para os testes automatizados. Qualquer mudança no site leva, inevitavelmente, a testes manuais nestes navegadores, além dos automatizados. Em todo caso, há um tipo de checagem automatizada que podemos fazer para a parte do design. Trata-se das validações da W3C. O aplicativo passa nas validações da W3C. Desde o início do projeto o Leandro, sobretudo, tem demonstrado muita preocupação em assegurar que o aplicativo respeite todos os web standards.

Os números relacionados aos testes são elevados, mas, quando o assunto é gestão de bugs, os números já não são tão expressivos. Para começo de conversa, não temos nem mesmo um sistema de gestão de bugs. Pois é, que desorganizados nós somos, né? Nenhum sistema para gerenciar chamados e controlar os bugs. A sim, agora lembrei o porquê disso. Não tivemos nenhum relato de bug desde que o sistema foi ao ar! E não foi por falta de uso. Então, acho que dá para continuar sem gestão de bugs. Mas, garanto que seria impossível fazer isso sem a relação quase paranóica que nós temos com os testes.

Sendo bem honesto, a falta de relatos de bugs não significa que eles não existam. Significa apenas que não foram descobertos ainda. De fato, havia alguns que nós próprios conseguimos detectar depois de colocar o sistema no ar. Nenhum deles era grave e talvez ninguém nem tenha chegado a passar por eles. Mas, nós corrigimos assim que identificamos. Em todo caso, já faz vários dias que não conseguimos detectar nada novo e continuamos sem nenhum relato de bug, apesar de termos uma utilização crescente da aplicação.

Hospedagem e Deployment

Estamos usando o VPS de 512MB da SliceHost. Até o momento, o serviço deles tem sido perfeito. A máquina é muito rápida e estável. De fato, ela é superestimada para as necessidades desta aplicação. Mas, preferimos que seja assim. Nós fizemos inúmeros testes de desempenho com o Httperf antes de lançar o site e eles demonstraram que o site tem um tempo de resposta excepcional, mesmo quando a carga é muito elevada. Parte disso, naturalmente, tem a ver com o trabalho cuidadoso que fizemos na parte de caching.

Este aplicativo tem a propriedade de não ter modificações muito freqüentes, embora tenha uma grande quantidade de dados. Em torno de 90% do site pode se beneficiar do cache mais eficaz que temos no Rails, que é o cache de página. Sendo assim, estamos usando cache de página na maior parte do site e o resultado não poderia ser melhor. Os 10% restantes felizmente representam as funcionalidades menos usadas, embora tenham sido as mais trabalhosas para implementar.

Quanto ao application server, inicialmente pensamos em usar o nginx com o Mongrel. Mas, antes de tentar esta alternativa, lembrei da apresentação que considerei a mais interessante no Minas on Rails e no Rio on Rails. Foi a do Eduardo Rocha, do O Curioso. Uma das coisas que me chamou a atenção foi que ele disse que usava um tal de LiteSpeed e que recomendava. Até então, eu jamais tinha ouvido falar do LiteSpeed. Conversei com o Eduardo antes de colocar a aplicação no ar e ele reforçou a preferência pelo LiteSpeed e a recomendação. Resolvemos experimentar e não poderíamos estar mais felizes. O LiteSpeed cuida de tudo e é muito fácil de usar. Atua como WebServer, Application Server e ainda distribui a carga para várias instâncias do Rails. No nosso caso, está configurado para usar até dez instâncias simultaneamente.

O LiteSpeed é muito estável, leve e rápido. No lado web server, é mais rápido e mais leve que o Apache. A integração com o Rails, através do LSAPI gera um desempenho superior ao do Mongrel. A única coisa que ainda não entendi é por que tanta gente usa o Mongrel quando poderia usar o LiteSpeed que é melhor em todos os aspectos que vimos até o momento. A sim, ele não é open source, mas não é necessário pagar por nenhuma licença, a menos que o site tenha que responder a um número superior a 150 requisições por segundo, o que ainda não é o nosso caso.

Fizemos testes de desempenho com Httperf e conseguimos simular até 4000 requisições por segundo para páginas em cache. Infelizmente não sabemos o limite real que o servidor agüentaria porque acima deste valor, a máquina que simula os acessos passa a operar com 100% de consumo de CPU, devido à grande quantidade de threads que são criadas para o teste. Até 4000 requisições por segundo, o servidor não chegava a consumir sequer 50% da CPU.

Segundo ato

No momento, estamos trabalhando na segunda parte do projeto que deve ser colocada em produção na próxima semana. A partir daí, a Júlia segue seu caminho e nós seguimos o nosso. Passaremos a trabalhar para generalizar o aplicativo que fizemos para ela. O objetivo, naturalmente, será permitir que o outros pequenos negócios, no mesmo ramo, possam fazer uso do mesmo aplicativo.

Resultados

Assim que o novo site da Júlia foi ao ar, ela começou a receber inúmeros comentários de clientes e pessoas do mesmo ramo elogiando o trabalho. Houve pouquíssima crítica. As apostas que nós fizemos se revelaram certeiras. Agora, inúmeros colegas dela, da mesma área de negócio e correlatas, perguntam-lhe quem fez o site e querem ter um igual. Que legal! :-) É claro que nós queremos atender a todos eles, mas ainda não é o momento. Não queremos fazer um site para cada pessoa. Queremos que todos usem um produto bem definido, que seja fácil para eles usarem e, sobretudo, que nos permita incorporar novos clientes com rapidez e facilidade. Por conta disso, a Júlia tem um acordo de sigilo conosco que a impede de dizer quem fez. Como não queremos ninguém nos fazendo perguntas sobre o site dela antes da hora, nem ela conta quem fez, nem eu conto para vocês o que nós fizemos. E assim nós vamos ficar por mais alguns meses, beleza? :-)

Uma das coisas que nós mais gostamos de saber é que o novo site está rendendo bons frutos para a Júlia. Duas coisas nos chamaram a atenção em particular. A primeira é que ela relatou que o número de pedidos diários de orçamento para seus serviços cresceu mais de cinco vezes desde que o site foi colocado no ar. Ela agora gasta muito mais tempo respondendo emails, mas este não é um problema assim tão ruim, né? :-) A outra coisa legal é que ela disse que agora os clientes já chegam respeitando-a muito mais. Eles olham o site e concluem que estão lidando com uma profissional de altíssimo nível, o que é mais do que verdade.

Estamos animados e continuamos trabalhando bastante. Por isso que não tem dado tempo para escrever muito. Felizmente, ontem conseguimos publicar o plugin integration e tem um outro que está no forno. Espero que possamos lançar em breve. Tem muita coisa legal vindo por aí.

Tags ,  | 4 comentários

De volta ao blog

Publicado por Vinicius Manhães Teles há 9 meses.

Hack Like a Champion
Foto de William Grootonk

Há um mês eu publiquei um artigo sobre nossos novos rumos e de lá para cá algumas coisas interessantes aconteceram. Primeiro, fiquei surpreso com a reação das pessoas através dos comentários, emails e conversas pessoais. Esperava que algumas nos criticassem e outras apoiassem nossa decisão. Entretanto, não foi o que aconteceu. Praticamente todo mundo nos apoiou. Diversos chegaram ao ponto de afirmar que acreditam que nós fizemos a melhor coisa do mundo e têm certeza de que vai dar tudo certo. Fiquei muito feliz com estas reações! Espero que todos estejam certos, que tudo corra bem e que nós sejamos capazes de fazer jus à confiança que muitos depositam em nós. Em suma, muito obrigado pelo apoio, pela confiança e pelo carinho.

O que aconteceu neste último mês?

Como vocês devem ter notado, estive quieto e sem postar durante um mês. Também não tenho participado de nenhuma lista, praticamente sumi do mapa. :-) Por que? Sei lá. Deve ser porque eu estava me divertindo com as coisas que andamos fazendo aqui. Ou talvez eu simplesmente não tivesse nada a dizer mesmo. :p

Neste período nós conseguimos fazer o que há muito tempo eu vinha buscando: concentrar a maior parte do nosso tempo na criação de um produto. De fato, eu, Tapajós e Leandro temos alocado 80% ou mais do nosso tempo ao produto. Desde que o ano começou está sendo assim e isso é ótimo. Estou adorando poder, finalmente, passar a maior parte dos meus dias programando, programando e programando. Como é bom programar! Passo a semana toda programando e o fim-de-semana na praia, com exceção deste, porque não vai rolar aula de windsurf. :-( Mas, tudo bem, sábado que vem, as aulas voltam. A sim, a propósito, venho aprendendo windsurf há algum tempo. É muito legal e, entre outras coisas, serve para me afastar dos computadores no fim-de-semana. Durante o dia, naturalmente, a noite eu me dou o direito de continuar sendo nerd. :-)

O produto

O que nós estamos construindo é algo que ainda não será tratado aqui. Provavelmente só entrarei em detalhes em alguns meses, quando ele estiver mais próximo de ser colocado no ar. A única coisa que vale a pena mencionar é que não tem a ver com o que começamos a fazer no início do ano passado. Na época, nos interessamos por algo ligado ao mercado imobiliário, mas acabamos deixando de lado devido à correria do dia-a-dia da consultoria. Agora que estamos com mais tempo para dedicar a produtos, decidimos não retomar este projeto, ao menos por enquanto. Por que? Porque a ficha caiu e percebi que, para dar certo, nós teríamos que conseguir a adesão de grandes empresas no ramo imobiliário. O problema está exatamente na parte "grandes empresas". A última coisa que quero neste momento é me envolver com grandes empresas e fazer produtos para elas. Então, isso fica para depois ou para nunca.

O produto que estamos construindo no momento realmente não precisa de grandes empresas para dar certo. Então, ótimo, porque essa é a minha premissa número um: nós não queremos grandes empresas como clientes de nossos produtos. Isso pode até mudar no futuro, mas, por enquanto, este é o foco.

Nós avançamos bastante no código e estou satisfeito com o que implementamos até aqui. Aliás, satisfeito e muito animado. A propósito, nós temos um cliente, naturalmente. É essencial ter alguém por perto, com domínio da área de negócio, para nos mostrar o que é ou não importante. Felizmente temos alguém assim desde o início. E essa pessoa está adorando o que já viu até aqui. A sim, vale dizer também que ainda não estamos fazendo o produto em si. Por enquanto, estamos apenas trabalhando em um "piloto", uma prova de conceito. Ela deve ir ao ar em poucas semanas, acredito. Se o feedback for positivo, a prova de conceito vai começar a se transformar em um produto. Senão, possivelmente iremos procurar coisa melhor para fazer. Uma coisa é certa, não iremos avançar muito sem feedback. O que temos até o momento são poucas funcionalidades, implementadas de uma jeito diferente do usual, porém suficientes para termos feedback do tipo: vá em frente ou fuja disso. É tudo o que precisamos por enquanto.

Idéa e Inovação

É comum acreditarmos que o sucesso de um produto tem a ver com uma idéia inédita. Então, fica todo mundo tentando ter "a grande idéia" do produto que vai revolucionar o mundo e trazer muito dinheiro. Eu não acho que as coisas funcionem assim. Na minha opinião, o sucesso de um produto não tem tanto a ver com uma idéia inovado no sentido de ter um produto novo, que jamais havia sido concebido antes. Embora este tipo de coisa exista, o que eu acredito ser realmente importante é a implementação. Ou seja, a inovação freqüentemente tem que acontecer na implementação e não na natureza do produto. Exemplo óbvio e batido: o iPhone. A Apple chegou tarde à festa da telefonia celular. Sendo assim, a natureza do produto (telefone celular) não é inovadora, mas a implementação, esta sim é inovadora e esplêndida. Então, o que estamos buscando não é a grande idéia, mas sim formas inovadores e melhores de implementar idéias que já existem. Acreditamos que a inovação tem que estar, sobretudo, na implementação e é nisso que estamos concentrando nossos maiores esforços. Vamos ver no que vai dar.

Tags  | 4 comentários

Só queria achar uma casa nova

Publicado por Vinicius Manhães Teles há aproximadamente 1 ano.

Há pouco mais de três meses minha esposa me disse que queria se mudar. Achei que seria uma boa idéia e comecei a procurar alguns apartamentos na internet. Que decepção!

Imóveis não são como livros, que você compra na internet. Comprar ou alugar um imóvel sempre envolve algum tipo de transação presencial. Mas, encontrar um imóvel interessante é algo que pode ser feito na internet. E era isso que eu esperava conseguir até descobrir que algo simples sempre pode ser transformado no mais complexo dos desafios.

No Brasil existem inúmeros sites de imóveis, mas virtualmente todos os que eu visitei (e foram muitos) são detestáveis porque quase tudo é projetado para dificultar a vida de quem procura, ou seja, o usuário do site. Alguns pontos que me incomodaram e estão presentes na maioria dos casos:

Um exemplo de site que manifesta todos esses problemas é o líder da área, o Zap, que antes se chamava Planeta Imóvel. Ele tem diversos banners que, além de poluir, atrapalham o funcionamento do site, ou seja, entram na frente de partes importantes e impedem (literalmente) que você use algumas das funcionalidades, especialmente se o seu browser não for o Internet Explorer.

A busca, por sua vez, envolve selecionar várias combo boxes e depois navegar através de alguns filtros. A alternativa é uma busca avançada feita em uma página complexa, com dezenas de campos.

Encontrar um imóvel nesse sistema é trabalhoso, mas não é o único problema. Quando você finalmente acha um imóvel e vai ver a descrição dele, os dados excessivamente estruturados começam a atrapalhar e, como se não bastasse, as fotos são uma decepção: poucas e com tamanhos ridiculamente pequenos. Já foi pior.

Nos tempos do Planeta Imóvel, isto é, há poucas semanas, você tinha que se cadastrar no site se quisesse ver as fotos! Dá para acreditar nisso? Afinal, por que o site iria me mostrar as fotos de um imóvel sem saber minha data de nascimento, nome, endereço, time e cor preferida etc? :-)

Por que esses problemas chamaram a minha atenção tão fortemente? Porque, assim como você, eu uso o Google, várias vezes por dia. E toda vez que eu entro no Google, sou presenteado com uma página que não é poluída, não tem banners, não me faz perder tempo e me permite procurar o que quero, da forma que eu quero. Só há um campo de busca. É a interface mais maravilhosa que existe e, ao mesmo tempo, a mais simples. Não seria o máximo se a gente pudesse procurar imóveis assim?

É claro que posso procurar no Google, mas o problema é o resultado. Os sites imobiliários que existem hoje tipicamente apresentam as informações de maneira excessivamente estruturada, como mencionei antes, e nem todos tratam bem o outro aspecto que é um dos mais importantes para mim: fotos! Antes mesmo da descrição do imóvel, o que mais me interessa sobre ele são as fotos. Quanto mais, melhor. Quanto maiores, melhor.

Com base nisso tudo pensei: por que não criar esse site? Algo que oferecesse a seus usuários uma página como a do Google, que tivesse uma única caixa de busca, onde ele pudesse digitar o que procura e receber uma lista, como o Google faz. Algo mais ou menos assim:

Busca

Não quero mais selecionar vários combo boxes e navegar por páginas de filtros. Quero simplesmente dizer o que procuro em uma página ridiculamente limpa. Nem mais, nem menos. E quando o resultado chegar, quero ver fotos (muitas e grandes) ao lado de uma descrição rica, que possa conter tudo o que o anunciante queira dizer sobre o imóvel, sem estruturas rígidas. Acredito que conseguimos criar um sistema assim e estamos prestes a colocá-lo no ar!

Tags

Artigos antigos: 1 2