Posts de September, 2011

[Tarsis Azevedo] [wallpaper] Programadores, eis o seu mantra

Thursday, September 29th, 2011

382348655

feito pelo stefano zibell - postado aqui

Permalink

| Leave a comment  »

[Rafael Biriba] Globo.com: Inscrições para estágio vão até 11 de outubro/2011

Thursday, September 22nd, 2011
http://www.globo.com/estag

http://www.globo.com/estag

O programa de estágio do portal das Organizações Globo (Globo.com) está aberto e as inscrições poderão ser feitas até dia 11 de outubro (2011).

Não perca essa oportunidade de participar no desenvolvimento de um dos maiores portais da internet Brasileira… As inscrições podem ser feitas pelo site http://www.globo.com/estag

Etapas do processo seletivo: ( 2011 )
- Inscrições: até o dia 11 de outubro
- Prova On-line: ainda não informado
- Entrevista Coletiva: ainda não informado
Painel: ainda não informado
- Entrevista com o Gestor: ainda não informado
- Início do Estágio: Janeiro de 2012

Fique atento ao seu email, pois as convocações iniciais deverão ser feitas por meio dele
Visite também o site para mais detalhes: http://www.globo.com/estag

Informações adicionais:
Quem pode participar?
Estudantes matriculados em cursos de nível superior, com previsão de formatura para dezembro de 2012 ou  dezembro de 2013, compatíveis com as áreas/vagas existentes, disponíveis para a cidade do Rio de Janeiro e São Paulo.

Existem vagas para que áreas?
Vagas em diversas áreas para estudantes dos mais variados cursos: Administração, Psicologia, Comunicação Social, Comunicação Visual, Design, Desenho Industrial, Estatística, Engenharia de Produção, Cursos das áreas de Tecnologia (Ciência da Computação, Engenharia da Computação, Análise de Sistemas) entre outros

Aproveite e dê uma olhada no restante do blog. Dicas importantes podem ser obtidas nos comentários dos outros posts antigos sobre os processos seletivos, principalmente nos posts de processos seletivos antigos, pois muitas duvidas foram respondida pelos comentários… Fique atento para não haver repetição de dúvidas…

ATENÇÃO para esta dica adicional =) Se a sua previão de formatura não estiver entre a solicitada (dez/12 a dez/13), inscreva-se mesmo assim. Quem sabe você não consegue entrar… ;)

Boa sorte a todos e como sempre, estou a disposição para responder qualquer pergunta ;) (Dependendo da pergunta, posso pedir para que alguém do RH responder)

Google BookmarksTwitterYahoo MessengerOrkutHotmailGoogle GmailDeliciousShare

Leia também:


[Guilherme Garnier] Integrando o Remember the Milk ao Google Calendar e Gmail

Wednesday, September 21st, 2011

O Google Calendar é uma excelente ferramenta para manter o controle de compromissos pendentes. Porém, tem dois problemas: é limitado a tarefas que tenham uma data específica e não dependem do usuário concluir, ou seja, uma tarefa que foi programada para ontem mas não foi realizada não aparecerá mais no meu calendário (ou melhor, aparecerá no dia em que estava prevista, e provavelmente será esquecida com o tempo). Isso acontece porque o Google Calendar não é uma ferramenta voltada para tarefas, e sim para eventos. Para realizar o controle de tarefas, o melhor é utilizar uma ferramenta específica para tal. Idealmente uma que seja integrável ao Google Calendar, pois este continua sendo uma excelente ferramenta para controle de eventos (visualizar eventos futuros, compartilhar com outras pessoas, etc).

A opção mais óbvia para controle de tarefas seria o Google Tasks, pois é do próprio Google, e como tal, é totalmente integrado não só ao Google Calendar, mas também ao Gmail. Apesar de ser uma boa opção, o Google Tasks é bastante limitado, e não possui (ainda) uma funcionalidade que considero básica para uma ferramenta de controle de tarefas: o cadastro de tarefas recorrentes (ex: toda segunda-feira, todo mês no dia 10).

Em função destas limitações, eu prefiro utilizar o Remember the Milk, que é uma ferramenta muito mais completa que o Google Tasks. Ele também pode ser integrado tanto ao Gmail quanto ao Google Calendar.

Integração com Google Calendar

A integração é bem simples, através da interface iCalendar do Remember the Milk: vá até a opção settings, aba Info. Copie o link “iCalendar Events Service (All Lists)”. Em seguida, vá ao Google Calendar, em “other calendars”, à esquerda, há uma opção “Add by URL”. Cole a URL que foi copiada do Remember the Milk, e será criado um novo calendário com as suas tarefas – obviamente só aparecerão as que tem data.

Apesar de funcionar bem, a integração é limitada: a hora da tarefa não aparece, não há link direto para ver a tarefa no RTM, e é somente uma visualização, ou seja, não é possível editar, excluir ou concluir a tarefa a partir do Google Calendar. Além disso, quando uma tarefa é concluída, ela demora um tempo para sumir do calendário. Mas é possível configurar reminders para este calendário específico, o que torna a integração mais útil.

O calendário criado exibe todas as tarefas do seu RTM que não estão concluídas e tem data. Outra possibilidade é criar calendários com listas específicas. Para isso, vá ao RTM, faça uma busca ou selecione uma lista ou smart list específica. No lado direito aparecerá uma opção “iCalendar (Events)”. Copie esse link e repita o procedimento anterior no Google Calendar.

O RTM também disponibiliza dois gadgets para Google Calendar:

  • Sidebar Gadget
  • Permite visualizar, editar e adicionar tarefas diretamente no Google Calendar. Só não é possível visualizar e editar notas, mas há um link para exibir no RTM.

  • Daily Gadget
  • Adiciona um botão a cada dia do calendário; ao ser clicado, exibe a lista de tarefas do dia.

Integração com Gmail

O RTM disponibiliza duas maneiras de exibir as tarefas no Gmail:

  • Gadget do Google Calendar
  • Se você configurou a integração do RTM com o Google Calendar, descrita acima, o gadget do Google Calendar exibirá as tarefas do RTM.

  • Gmail Gadget
  • Este gadget possui as mesmas funcionalidades do Sidebar Gadget para Google Calendar.

  • Add-on (Firefox e Chrome)
  • Esta extensão é bem semelhante ao Gmail Gadget, mas possui algumas funcionalidades a mais: ela pode ser configurada para criar tarefas automaticamente quando um email for marcado com estrela ou com um label específico. Também é possível criar uma tarefa associada a um email específico, que será automaticamente concluída quando o email for respondido.

Posts relacionados:



[Alexandre Magno] Vamos começar por Bootstrap

Tuesday, September 20th, 2011

Desde os guias de design, até os padrões de interação, temos a eterna necessidade de definir os padrões e a consistência em uma aplicação web de modo a reutilizar o máximo possível os elementos de design. Se não bastasse isto, o twitter, com o Bootstrap foi além e implementou um framework onde há todos os elementos de um website, seguindo todo o estilo padrão de estilo do twitter, e Open Source! Eles o chamaram de bootstrap.

Quais as vantagens de ter o Bootstrap no início do projeto ou até mesmo usar o bootstrap do twitter?
Parece algo tão óbvio: padronizar todos elementos de design se evolui de um ponto em que a etapa de definição de layout perca cada vez mais peso e num mundo ideal ela nem existiria, pois o desenvolvedor front-end já iria prever com o arquiteto a experiência de uso, pois a biblioteca é suficiente para suprir todas novas funcionalidade da aplicação. Usar o próprio bootstrap do twitter para prototipar é também algo extremamente útil, pois ele é bastante simples, limpo, agnóstico e com todos os recursos de CSS3.

Outra grande vantagens é para projetos novos que segue a mesma consistência visual.

O bootstrap é orgânico, de acordo com novos elementos ele vai crescendo e a tendência é que chegue em um limite. No entanto é necessário ter no mínimo:
•    Elementos do grid
•    Formulários
•    Tipografia
•    Cabeçalhos
•    Listas
•    Tabelas
•    Botões

Como vender a ideia?
Muitas vezes é difícil você conseguir negociar esta etapa. Ela simplesmente é muitas vezes ignorada ou até mesmo iniciada, mas descontinuada e logo depois abandonada. Neste último caso é um sintoma de outro ponto errado, provavelmente não há um padrão e sempre existe um atrito maior quando é necessário definir várias páginas e como um comportamento deve ser em uma determinada interação, como validações de formulário.

[Tarsis Azevedo] Aprenda Vim Progressivamente

Saturday, September 17th, 2011

Sou usuario do vim a algum tempo e sempre estou procurando aprender mais e mais sobre esse excelente editor.

Recentemente encontrei um otimo post no blog do Yann Esposito para iniciantes aprenderem vim rapidamente e tambem para veteranos querendo aprender algumas magicas desse otimo edito de texto.

Gostei tanto do post que resolvi traduzi-lo para divulgar o vim e mostrar como voar com ele.

Então vamos ao post!

Pride-and-prejudice

TL;DR: Quer aprender vim (o melhor editor conhecido pela humanidade) da forma mais rapida possivel. Eu sugiro um caminho. Comece aprendendo o basico pra sobreviver, entao integre todos os truques devagar

Vim, o editor de texto de seis bilhões de dólares

Melhor, mais rapido, mais forte

Aprenda vim e ele será seu ultimo editor de texto. Ele não é o melhor editor de texto, eu sei. É dificil de aprender, mas incrivel de usar.

Eu sugiro aprende-lo em 4 passos:

  1. Sobreviva
  2. Sinta-se confortavel
  3. Sinta-se melhor, mais rapido, mais forte
  4. Use os superpoderes do vim

 

No final dessa jornada você se tornará um superstar do vim!

Mas antes de começar, um aviso. Aprender vim será doloroso no começo. Isso leva tempo. É muito parecido com aprender a tocar um instrumento musical. Não espere ser eficiente com vim do que com outro editor em 3 dias. Na verdade vai levar 2 semanas ao inves de 3 dias.

Nivel 1 - Sobreviva

  1. insta-le o vim
  2. abra o vim
  3. NÃO FAÇA NADA! Leia

Em um editor de texto normal, escrever no teclado é o suficiente para escrever alguma coisa e ve-la na tela. Não dessa vez. Vim está no modo Normal. Vamos entrar no modo de Inserção. Digite a letra i.

Agora voce se sente um pouco melhor. Voce pode digitar textos como um editor de texto normal. Para voltar para o modo normal, tecle ESC.

Voce sabe trocar entre o modo Normal e de Inserção. E agora a lista de comandos que voce pode usar no modo Normal para sobreviver:

  • i - modo de Inserção. Tecle ESC para voltar ao modo Normal.
  • x - para deletar o caracter em baixo do cursor.
  • :wq - Salvar e Sair (:w para salvar, :q para sair).
  • dd - deletar e copiar a linha atual.
  • p - colar.

Recomendado:

  • hjkl (altamente recomendado, mas nao obrigatorio) - movimentos basicos do cursor (←↓↑→). Dica: j é a seta para baixo.
  • :help <comando> - mostra o help do <comando>, voce pode começar a usar o :help sem nada mais.

Somenten 5 comandos. Isso é muito pouco para começar. Uma vez que esses comandos começarem a sair naturalmente (pode ser no final do dia), voce pode ir para o nivel 2.

Mas antes apenas uma observação no modo Normal. Em editores normais, para copiar voce deve usar a tecla Ctrl (Ctrl + c geralmente). Na verdade, quando voce pressiona o Ctrl, é como se todas as funcionalidades das teclas mudassem. Com vim no modo Normal, é como se seu Ctrl sempre estivesse pressionado.

Uma ultima observação sobre notações:

  • ao invés de escrever Ctrl-V, vamos escrever <C-V>
  • comandos começam com : e terminam com <enter>. Por exemplo, quando eu escrever :q isso significa :q<enter>

Nivel 2 - Sinta-se confortavel

Voce sabe os comandos para sobreviver. Agora é hora de aprender mais alguns comandos. Eu sugiro:

  1. Variações do modo de Inserção:
  • a - insere depois do cursor
  • o - insere uma nova linha depois da linha corrente
  • O - insere uma nova linha antes da linha corrente
  • cw - substitui do cursor até o final da palavra
  1. Movimentos Basicos:
  • 0 - vai para o inicio da linha
  • ^ - vai para o primeiro caracter nao-branco da linha
  • $ - vai para o final da linha
  • g_ - vai para o ultimo caracater nao-branco da linha
  • /padrao - procura por padrao
  1. Copiar/Colar
  • P - cola antes do cursor, relembre que p é para colar depois da posição corrente.
  • yy - copia a linha corrente, mais facil que o ddP
  1. Desfazer/Refazer:
  • u - desfazer
  • <C-r> (**Ctrl-r**) - refazer
  1. Carregar/Salvar/Sair/Mudar Arquivo (buffer):
  • :e <caminho/para/arquivo> - abrir
  • :w - salvar
  • :saveas <caminho/para/arquivo> - salvar em <caminho/para/arquivo/>
  • :x, ZZ ou :wq - salvar e sair ( :x  somente salva se necessario)
  • :q! - sair sem salvar, tambem :qa! até mesmo se houver algum buffer modificado escondido
  • :bn (resp. :bp) - mostra o proximo (resp. anterior) arquivo (buffer)

Separe algum tempo para aprender esses comandos. Uma vez aprendido, voce deve estar apto para fazer tudo que voce faz em qualquer outro editor. Mas até agora, isso é um pouco estranho. Mas siga-me até o proximo nivel e voce verá porque.

Nivel 3 - Melhor. Mais Forte. Mais Rapido.

Parabens por chegar tao longe! Nós podemos começar a parte interessante. No nivel 3, nós iremos falar somente sobre comandos que são compativeis com o vi antigo.

Melhor

Vamos ver como o vim faz para te ajudar a repetir um comando:

  1. . (ponto) - irá repetir o ultimo comando
  2. N<comando> - irá repetir o comando N vezes.

Alguns exemplos, abre um arquivo e digite:

  • 2dd - irá deletar 2 linhas
  • 3p - irá colar o texto 3 vezes
  • 100idesu ESC - irá escrever “desu” 100 vezes
  • . (ponto) - irá repetir o ultimo comando, escrevendo mais 100 vezes “desu”
  • 3. - irá escrever 3 “desu” (e não 300, muito inteligente)

Mais forte

Saber como se mover de modo eficiente no vim é muito importante. Não pule esta seção.

  1. NG - vai para a linha N
  2. gg - atalho para 1G, vai para o começo do arquivo
  3. G - vai para a ultima linha
  4. Andando em palavras:
  • w - vai para o começo da palavra seguinte
  • e - vai para o final da palavra seguinte

Por padrao, uma palavra é composta de letras e caracteres underscore ( _ ). Vamos chamar de uma PALAVRA um grupo de letras separadas por caracteres em branco. Se voce quiser considerar PALAVRA, entao use letras maiusculas:

  • W - vai para o inicio da PALAVRA seguinte
  • E - vai para o final da PALAVRA seguinte 
  • Word_moves

 

Agora vamos falar sobre movimentos mais eficientes:

  • % - Vai para o correspondente (, [, {
  • * (resp #) - vai para a proxima (resp anterior) ocorrencia da palavra sob o cursor.

Acredite em mim, esses tres comandos são ouro.

Mais rapido

Lembra sobre a importancia dos movimentos no vim? Aqui está a razão. Muitos comandos podem ser usados seguindo um formato geral:

<posição de inicio><comando><posição final>

Por exemplo: 0y$ significa:

  • 0 - vai para o começo dessa linha
  • y - copie daqui
  • $ - até o final desta linha

Nós tambem podemos fazer coisas como ye, copie daqui até o final da palavra. Tambem podemos fazer y2/foo copie até a segunda ocorrencia de "foo".

Mas se foi possivel com y (copiar), é tambem possivel com d (deletar), v (seleção visual), gU (maiuscula), gu (minuscula), etc...

Nivel 4 - Super poderes com vim

Com todos os comandos anteriores voce ja deve se sentir confortavel com o vim. Mas agora, aqui estao as features realmente maneiras. Algumas dessas features foram a razão pra eu começar a usar o vim.

mover-se na linha corrente: 0^$g_fFtT,(virgula), ;

  • 0 - Vai para a coluna 0
  • ^ - Vai para o primeiro caracter da linha
  • $ - vai para a ultima coluna
  • g_ - Vai para o ultimo caracter da linha
  • fa - Vai para a proxima ocorrencia da letra a na linha. , (resp ;) irá para a ocorrencia anterior da busca (resp proxima).
  • t, - Vai para o caracter anterior a primeira ocorrencia de ,
  • 3fa - Vai procurar a terceira ocorrencia da letra a
  • F e T - Parecido com f e t, porem procura pra tras
  • Line_moves

Uma dica muito util é :dt" que irá remover tudo antes de ".

Seleção por zona <ação>a<objeto> ou <ação>i<objeto>

Esses comandos só podem ser usados depois de uma operação no modo Visual. Mas eles são muito poderosos.

<ação>a<objeto> ou <ação>i<objeto>

Onde ação pode ser qualquer ação, por exemplo, d (delete), y (copiar), v (selecionar no modo Visual). E um objeto pode ser: w uma palavra, Wuma PALAVRA(palavra extendida), s uma sentença e p um paragrafo. Mas tambem pode ser um caracter natural como "')}].

Digamos que o cursor esteja no primeiro o de (map (+) ("foo")).

  • vi" - irá selecionar foo.
  • va" - irá selecionar "foo".
  • vi) - irá selecionar "foo".
  • va) - irá selecionar ("foo").
  • v2i) - irá selecionar map (+) ("foo").
  • v2a) - irá selecionar (map (+) ("foo")).

Selecionas blocos retangulares <C-v>.

Blocos retangularss são muito uteis para comentar muitas linhas de código. Tipicamente: ^<C-v><C-d>I-- [ESC]

  • ^ - vai para o inicio da linha
  • <C-v> - inicia a seleção por blocos
  • <C-d> - move para baixo (como jjj or %, etc… )
  • I-- [ESC] - escreve — para comentar cada linha

Rectangular-blocks

Note que no Windows voce poderá ter que usar <C-q> ao inves de <C-v> se seu clipboard nao estiver vazio.

Completar: <C-n> e <C-p>.

No modo de Inserção, digite no inicio de uma palavra, e entao digite <C-p>, magicamente…

Completion

Macros: qa faça alguma coisa q@a@@

qa vai gravar suas açoes num registrador a. Entao @a irá refazer a macro salva no registrador a como se voce tivesse feito isso na mão. @@ é um atalho para refazer a ultima macro executada.

Exemplo

Numa linha que contem o numero 1, digite isso:

  • qaYp<C-a>q
    • qa - começa a gravar
    • Yp - duplica esta linha
    • <C-a> - incrementa um numero
    • q - para a gravaçao
  • @a - escreverá 2 abaixo do 1
  • @@ - escreverá 3 abaixo do 2

Agora faça 100@@ e criará uma lista de numeros até 103.

Macros

Seleção Visual: vV<C-v>

Vimos um exemplo com <C-v>. Há tambem v e V. Uma vez que a seleçao foi feita, voce pode:

  • J - juntar todas as linhas.
  • < (resp. >) - indentar para a esquerda (resp. para a direita).
  • = - auto indentação

Autoindent

Adicione alguma coisa no fim das linhas selecionadas:

  • <C-v>
  • vá para a linha desejada (jjj ou <C-d> ou /padrao ou % etc…)
  • $ vá para o fina da linha
  • A, escreva alguma coisa, [ESC]

Append-to-many-lines

Splits: :split e :vsplit.

Aqui estao os comandos principais, mas voce pode olhar mais em :help split.

  • :split - irá criar um split (:vsplit criará um split vertical).
  • <C-w><dir> - onde dir é qualquer um de hjkl para mudar de split.
  • <C-w>_ (resp. <C-w>|) - maximiza o tamanho do split (resp. split vertical).
  • <C-w>+ (resp. <C-w>-) - Aumenta (resp. diminui) o split.

Split

Conclusao

Aqui estao 90% dos comandos que eu uso todos os dias. Eu sugiro que voce aprenda nao mais que 1 ou 2 comandos por dia. Depois de duas ou tres semanas voce começará a sentir o poder do vim nas suas mãos.

Aprender Vim é mais uma questao de treinamento que de memorização. Felizmente vim vem com otimas ferramentas e uma execelente documentação. Rodevimtutor para voce se familiarizar com os comandos basicos. Alem disso voce deve ler atentamente está pagina: :help usr_02.txt.

Entao, voce aprenderá sobre !, folds
, registradores, os plugins e muitas outras features. Aprender vim é como se estivesse aprendendo piano e tudo ficará bem.

Fim do post

Agora que voce ja sabe vim, use-o da maneira correta. Esqueça seu mouse, Ctrl-c + Ctrl+v, use as features do vim, se forçe a usa-las, eu garanto que depois que voce se sentir confortavel, vai voar.

Qualquer duvida e/ou critica podem deixar nos comentarios.

Até a proxima

OBS: Post totalmente editado no VIM, usando markdown.

 

 

Permalink

| Leave a comment  »

[Francisco Souza] Como foi a #qconsp 2011?

Tuesday, September 13th, 2011

Rolou no último final de semana a segunda edição do QCONSP, principal evento de arquitetos e desenvolvedores do Brasil. O evento é organizado pela InfoQ Brasil em parceria com a Caelum.

O evento foi realmente muito bom, com um nível técnico praticamente inquestionável. A organização também é incrível. A forma como a Caelum coleta feedback deveria ser um exemplo para todo mundo, sem falar na comida em abundância :) Pena ter faltado um pouco de tomadas e alguns problemas com a rede wifi (é, fazer rede wireless pra 850 pessoas não é fácil…), mas o evento foi realmente muito bom.

No domingo apresentei, junto ao Andrews Medina, a palestra Os complicados testes de interfaces e componentes web. Na palestra, apresentamos um breve histórico e alguns conceitos envolvidos com os testes de interfaces e componentes ricos. Mostramos algumas características do QUnit, Jasmine, jasmine-splinter-runner, Splinter, Selenium, Sikuli, dentre outras ferramentas. Incluímos ainda alguns exemplos com código ao vivo com o Jasmine, Splinter e Sikuli.

Os slides estão aqui:

 

E os códigos que apresentamos estão no Github: https://github.com/fsouza/palestra-qconsp-2011.

[Igor Macaubas] Abrace as incertezas: a Ilusão do controle

Monday, September 5th, 2011

Na última segunda, 05/09, Palestrei no 4o Encontro Pernambucano de Gerenciamento de Projetos. Na minha palestra, falei sobre o que realmente importa em desenvolvimento ágil, como lidamos com as incertezas e porque vivemos numa ilusão quando achamos que temos controle das coisas. A palestra foi gravada, e o vídeo está abaixo:

 

 

Os slides já estão no slideshare:

Abrace as incertezas – a ilusão do controle

[Igor Macaubas] Abraçe as incertezas: a Ilusão do controle

Monday, September 5th, 2011

Na última segunda, 05/09, Palestrei no 4o Encontro Pernambucano de Gerenciamento de Projetos. Na minha palestra, falei sobre o que realmente importa em desenvolvimento ágil, como lidamos com as incertezas e porque vivemos numa ilusão quando achamos que temos controle das coisas. A palestra foi gravada, e esse post será atualizado assim que eu terminar de editar o vídeo. Os slides já estão no slideshare:

 

Abraçe as incertezas – a ilusão do controle

[Emerson Macedo] Node.JS Knockout – Como foi

Monday, September 5th, 2011

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.

[Igor Macaubas] 4o encontro Pernambucano de Gerenciamento de Projetos

Sunday, September 4th, 2011

Amanhã, dia 05 de Setembro de 2011, estarei palestranto no 4o encontro Pernambucano de Gerenciamento de Projetos, evento promovido pelo chapter do PMI de Pernambuco (PMI-PE). Fiquei surpreso e ao mesmo tempo feliz de ter sido convidado para palestrar neste evento – feliz pelo fato de ser Pernambucano (apesar de já morar há 2 anos no Rio), e surpreso por que nunca tinha me visto palestrando num evento do PMI, principalmente depois de 2005/2006, que enveredei minha carreira para a área de Gestão Ágil de Projetos.

O título da minha palestra será ‘Abraçe as incertezas: A Ilusão do Controle no Mundo Ágil’, falarei um pouco sobre o que realmente importa na gestão de projetos ágeis. A organização do evento me autorizou a gravar a palestra, então ela estará aqui no blog no mais tardar até quarta-feira, e os slides, no slideshare, como sempre!

Site do evento: http://www.scarduatec.com.br/pmipe2011/

Divulgação na mídia: http://ubas.us/qtVcxH