No ar o Globo TV – Novo portal de vídeos da Globo.com

Hoje tenho o prazer de anunciar que colocamos no ar o Globo TV, o novo portal de vídeos da globo.com. Quem acessava os domínios video.globo.com videos.globo.com ou gmc.globo.com perceberá que esses domínios agora são redirecionados para globotv.globo.com.

Os leitores do meu blog devem ter percebido que não coloco nada novo no blog desde outubro. Nesses últimos meses tenho trabalhado duro, junto com meu time no desenvolvimento desse produto. Ta aí o resultado :)

O que é o Globo TV?

O Globo TV agora é o lugar ideal para você consumir os vídeos das organizações Globo. É um produto onde concentra toda a nossa experiência no consumo de vídeos. É o lugar onde você assiste seus canais de tv favoritos na internet. Nós chamamos isso internamente de “Envolvimento irresponsável e inconsequênte em vídeos”.  A busca foi totalmente modificada e agora a visualização dos resultados está muito melhor, inclusive na experiência quando você filtra ou pagina a busca que você fez.

Desenvolvimento do produto

Mudar o portal de vídeos da Globo.com não é uma tarefa simples. O produto anterior estava no ar há mais de 4 anos. Desenvolvemos esse novo em aproximadamente 4 meses. Segue uma foto do que estava no ar até essa madrugada:

O antigo Globo Vídeos (ou Globo Media Center) ficou do jeito que estava por um bom tempo devido a nossa estratégia anterior em focar nos catálogos de vídeo. Recentemente resolvemos ter um produto onde todo o consumo de vídeos é agregado e daí surgiu a idéia de fazer um novo Globo Vídeos, que agora se chama Globo TV.

Próximos passos

Esse novo produto ainda tem muito o que evoluir. Estamos começando a trabalhar em um responsive design para tornar o site mais adequado quando visualizado em dispositivos móveis (i.e. iPhones, iPads e similares). Também desenvolveremos uma experiência cada vez melhor para o assinante, que hoje já pode ver vídeos na íntegra com exclusividade mas terá muito mais atenção a partir de agora. Para esses, disponibilizamos inicialmente uma página com conteúdo exclusivo, com íntegras de jornalismo, novelas, esportes, entre outros. Posteriormente teremos uma experiência de consumo ainda mais rica para esses usuários assinantes.

Feedbacks são muito bem vindos – http://globotv.globo.com

PS: A partir de agora volto a blogar sobre tecnologia (muito de Node.JS é claro) e também aproveito para anunciar que teremos a terceira turma do nosso curso de Node com a e-Genial ainda nesse primeiro semestre. Anunciarei as datas em breve.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

Publicado em produto | Com a tag , , , , , | 12 comentários

Curso de Node.JS – Segunda turma na e-Genial

No fim deste mês, dia 25/10/2011, começará a segunda turma do curso de Node.JS na e-Genial. Nós tivemos o primeiro curso em abril e foi um grande sucesso.

Por que aprender Node.JS ?

Node.JS é uma tecnologia de fato emergente. Surgiu em Maio de 2009 e vem evoluindo muito rapidamente, com uma comunidade muito forte se formando.

O Node.JS basicamente foi feito para resolver alguns problemas conhecidos, de forma eficiente e eficaz, como I/O não bloqueante e assíncrono, alta concorrência de usuários, conexões persistentes, streaming, entre outros. É uma tecnologia baseada na linguagem Javascript e no poderoso runtime V8, que é usado no Google Chrome, browser bem conhecido pelos desenvolvedores.

Aprender Node.JS certamente abrirá seus horizontes na programação. Ele trás o grande desafio da programação assíncrona, baseada em Reactors, que não é muito comum no nosso dia a dia de programação com Java, DotNet, Ruby e Python (apesar dessas possuirem frameworks para tal). Além disso, a facilidade que o Node.JS nos dá para desenvolver aplicações em tempo real é impressionante, dado a quantidade de bibliotecas e frameworks disponíveis para esse fim, não se esquecendo que o próprio Node puro já é feito para esse propósito.

Evolução do Curso

A primeira turma teve uma grande vantagem de ter saído na frente, pois começaram 6 meses atrás. É muito bom sair na frente, pois quando o mercado estiver bem aquecido você já terá conhecimento e experiência so invés de estar iniciando. Muita gente pensou nisso e resolveu fazer o curso, mesmo sabendo que a primeira turma de um curso tem sempre um conteúdo experimental e que será melhorado.

Para a segunda turma, a vantagem é o conteúdo já está mais maduro e nós aprendemos bastante com a primeira turma, o que certamente levará o nosso curso para um outro nível, ainda melhor que o primeiro. A grade também foi totalmente atualizada, trazendo as melhores novidades da tecnologia.

Entendendo melhor e inscrevendo-se

Para entender melhor sobre o curso e a minha experiência no assunto, leia a leitura do post de anúncio da primeira turma.

Além do post, participei do torneio Node.JS Knockout deste ano e meu time venceu na categoria popularidade com a aplicação http://driv.in

Anúncio da primeira turma: http://codificando.com/2011/04/curso-de-nodejs-da-egenial/

Está esperando o que? Matricule-se já no curso, pois começa no próximo dia 25.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

Publicado em cursos, nodejs | Com a tag , , , , | Deixar um comentário

Node.JS Knockout – Como foi

Hoje faz uma semana que participei do Node.JS Knockout, um torneio estilo Rails Rumble, onde os participantes tem 48 horas para desenvolver uma aplicação do zero, sem direito a fazer nada antes nem nada depois. É tudo muito rígido e eles tem diversas técnicas para verificar quem está trapaceando.

Vou tentar resumir como foi essa experiência, pois caso contrário ficaria muito longo, mas antes disso, estamos bem qualificados na categoria popularidade e o voto da galera ajuda muito. Portanto, se puder dar uma ajuda e votar no nosso projeto, basta entrar em http://driv.in, clicar no ícone VOTE KO e autorizar no facebook.

Equipe

Essa foi uma parte bem complicada. Formamos o time mais de 1 mês antes, mas por motivos pessoais 2 amigos não puderam participar e foi necessário chamar 2 novos para participar. A formação final pode ser conferida na página do time no site do evento – http://goo.gl/BdSyI.

O fato de mudar 2 pessoas foi algo um pouco complicado, pois apesar dos 2 novos terem feito um trabalho excepcional, houve um momento no sábado a tarde de alinhar coisas do projeto que já estavam bem definidas e teoricamente não seria necessário, caso esse imprevisto não tivesse acontecido. Mesmo diante dessas circunstâncias, acho que nos saímos muito bem, apesar de achar que perdemos tempo em alguns momentos e nesse caso qualquer tempo perdido compromete bastante.

Idéia de Projeto

Nossas idéias de projeto estavam bem confusas, até que o Quixadá surgiu com a idéia dos vídeos colaborativos e foi aceita por unanimidade. Isso também deu uma injeção de ânimos na galera, pois foi a primeira idéia que gerou empolgação em nós. Todas as outras eram legais, mas nada que nos fizesse achar que chegaríamos em algum lugar. No fim, a idéia se provou excelente e vamos inclusive continuar com o projeto após o término do torneio.

Desenvolvimento

Essa parte é um pouco longa de contar. Mas vamos nessa:

Eu era o único membro do time com conhecimentos de Node.JS. Isso me deixava bem preocupado com o resultado. Mesmo sem conhecimento, o Quixadá validou um cenário básico do nosso projeto e já apresentou, antes mesmo do início. Isso foi bom para ter certeza que a idéia fazia sentido e era possível implementar. Ponto pra ele que teve iniciativa de fazer isso logo de cara, para evitar outras surpresas.

O Everton Carpes é muito envolvido com o Debian e aliviou muito o meu lado fazendo toda a configuração do nosso servidor no Linode (nossas opções eram Joyent, Heroku, Nodejitsu e Linode). Inicialmente eu achei que eu mesmo iria ter que fazer tudo, mas o Everton teve uma participação brilhante configurando todo o servidor. Pouco precisei ajuda-lo, mais especificamente nas configurações de Node e outros pequenos detalhes.

Enquanto o Everton resolvia os detalhes do servidor, eu estava focado em implementar o vídeo iniciando automaticamente ao mesmo tempo em todos os participantes de uma sala. Enquanto isso, o Cainã e o Quixadá trabalhavam na parte visual do projeto (i.e. Design, HTML/CSS).

E essa foi a nossa noite de sexta. Alguns ficaram durante a madrugada, outros foram para casa descansar.

No sábado, trabalhamos bastante para fazer funcionar os vídeos tocando em sequência e a funcionalidade do usuário poder entrar no meio do vídeo e estar sincronizado com todos. Além disso, a playlist de vídeos também foi implementada. Enquanto essas features eram desenvolvidas,  nossa interface também era construída com primor pelo Cainã em conjunto com o Quixadá. Esse foi nosso sábado.

No domingo, apesar das partes principais em termos de features estarem prontas, ainda era necessário alguns ajustes na playlist, desenvolver o chat, controlar os carrinhos aparecendo e sumindo (membros da sala) e uma série de pequenas coisas, que somadas ocupariam todo o nosso domingo, o que de fato aconteceu. Assim que deu 21:00, tivemos que parar tudo, mas conseguimos implementar as principais features do sistema, apesar de alguns bugs.

Iterações/Corte de escopo

Por ser um torneio rápido (48 horas), foi necessário cortar escopo a todo momento, fazendo pequenas interrupções (de alguns minutos) para alinhar expectativas sobre o que já sabíamos que não daria tempo de ser feito. Isso foi um exercício bem interessante, pois muitos projetos ao invés de cortar escopo, adicionam mais pessoas e trabalham de forma sobrecarregada pra ver se é possível entregar tudo (o que eu acho uma grande furada). Como o torneio não permite mais do que 4 participantes e o prazo é fixo, cortar escopo era a nossa única alternativa. É interessante que tudo que cortamos do escopo será desenvolvido, só apenas não foi na primeira versão. O que fizemos foi um exercício de priorizar coisas. Todas as features que levantamos eram importantes, mas precisávamos ter bem claro quais eram prioritárias para a entrega do nosso primeiro release (o do torneio). Essa é a parte difícil pra muita gente, principalmente para que tem responsabilidade sobre o produto (i.e. Product Owners). Por vezes já passei por situações onde era necessário priorização mas quem era responsável pelo produto colocava tudo como prioridade. Quando tudo é prioridade, nada é prioridade. Você coloca tudo no mesmo nível de importância e não sabe o que é Core Feature do seu produto. Acho que isso poderia até fazer parte de algum teste para P.O, se é que posso dizer assim.

Problemas

No geral fomos bem. Sabíamos que as dificuldades viriam e não seria simples vence-las e desenvolver uma aplicação em 48 horas. A primeira das dificuldades foram os horários desencontrados. Alguns trabalharam até tarde na sexta, outros no sábado. Por conta disso houveram horários em que nem todos estavam juntos e dúvidas demoravam a ser respondidas/solucionadas. Da próxima vez acho que combinar um horário pode ser mais interessante.

Outro ponto foram os bugs. Como o chat foi implementado já no apagar das luzes, esquecemos de escapar o input do usuário, permitindo XSS (Cross-Site Scripting) no nosso aplicativo. Isso foi uma falha grave, que está nos custando preciosos pontos na avaliação dos juízes. Outro bug foi do usuário entrar no meio do vídeo. A estratégia para o usuário que entra no meio do vídeo é adianta-lo 10 segundos (ssekTo) e pausa-lo, para que o mesmo gere um pouco de buffer. Quando todos os demais chegam nesse momento de 10 segundos pra frente, é hora de dar play nesse usuário. Por conta disso, em alguns momentos que faltavam menos de 10 segundos para terminar o vídeo, acontecia um bug e dava crash no servidor. Nós usamos o monit para garantir que sempre o processo dava start novamente, sendo assim não existia downtime da aplicação. Ao tentar resolver esse bug (ainda tinhamos tempo), geramos outro e a partir daí, ninguém mais conseguia entrar no meio do vídeo. #epicfail. No momento que percebemos isso, já havia estourado o tempo e nada podíamos fazer. Chegamos a editar o arquivo direto em produção apenas para validar o bug (que era ridículo de resolver) e em seguida voltamos o código, pois a regra não permitia alterações após o término do horário.

Resultado do projeto

Nós ficamos muito satisfeitos com o projeto. Tanto é que pretendemos continuar com ele. Já clonamos o projeto numa conta nossa privada do github e estamos adicionando issues para assim que a votação encerrar e estivermos liberados para fazer mudanças.

Balanço final

Contar como foi o Node Knockout de maneira resumida é bem complicado. Posteriormente entrarei em detalhes técnicos do projeto, que agora tornariam esse post muito longo. O que posso dizer sobre esse torneio é que valeu muito a pena em todos os aspectos. Tanto na parte técnica, quanto na parte de produto, mas principalmente na parte de auto-organização e gestão de prioridades e tempo. Certamente repetirei em outras oportunidades.

Um agradecimento especial para os membros do meu time: Cainã Nunes, Everton Carpes e Leonardo Quixadá. Todos foram fantásticos.

PS: Não se esqueçam de votar no nosso projeto. Encerra as 21:00 do Brasil, hoje, dia 05/09/2011. Segue o link novamente – http://driv.in, clicar no ícone VOTE KO e autorizar no facebook.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

Publicado em nodejs | Com a tag , , , , | 4 comentários

Linkedin refaz seu mobile stack com Node.JS

Hoje pela manhã, o likedin lançou a nova versão mobile do software. O líder de desenvolvimento mobile Kiran Prasad, deu uma entrevista sobre o assunto.

Um dos grandes destaques técnicos foi a escolha de todas as partes que não necessitam de funções nativas dos aparelhos serem feitas usando HTML5.

O ponto de destaque desse meu post é que todo o stack mobile foi refeito em Node.JS (o antigo era feito em Rails). Eles sairam de 15 servidores com 15 instâncias para apenas 4 instâncias, conseguindo servir o dobro  do tráfego.

Isso é mais um case de sucesso no uso de Node.JS, fazendo com que a plataforma seja promissora para os próximos anos.

Disclaimer: Um ponto importante para tomar cuidado é não determinar que Node.JS é melhor que Ruby on Rails ou coisa do tipo. Faz pouco tempo que o twitter trocou Rails por Java em partes do seu sistema, mas a maior mudança na verdade foi arquitetural, como o próprio artigo mostra. Portanto, não devemos tomar conclusões precipitadas, até porque existem diversos casos de aplicações com grande volume de acesso que utilizam essa tecnologia muito bem.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

Publicado em nodejs, Sem categoria | Com a tag , , , , | 1 comentário