feito pelo stefano zibell - postado aqui
Posts de September, 2011
[Tarsis Azevedo] [wallpaper] Programadores, eis o seu mantra
Thursday, September 29th, 2011[Rafael Biriba] Globo.com: Inscrições para estágio vão até 11 de outubro/2011
Thursday, September 22nd, 2011O 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)
Leia também:
[Guilherme Garnier] Integrando o Remember the Milk ao Google Calendar e Gmail
Wednesday, September 21st, 2011O 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
- Daily 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.
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
- Gmail Gadget
- Add-on (Firefox e Chrome)
Se você configurou a integração do RTM com o Google Calendar, descrita acima, o gadget do Google Calendar exibirá as tarefas do RTM.
Este gadget possui as mesmas funcionalidades do Sidebar Gadget para Google Calendar.
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, 2011Desde 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, 2011Sou 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!
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:
- Sobreviva
- Sinta-se confortavel
- Sinta-se melhor, mais rapido, mais forte
- 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
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. TecleESCpara voltar ao modo Normal.x- para deletar o caracter em baixo do cursor.:wq- Salvar e Sair (:wpara salvar,:qpara 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:helpsem 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:qisso significa:q<enter>
Nivel 2 - Sinta-se confortavel
Voce sabe os comandos para sobreviver. Agora é hora de aprender mais alguns comandos. Eu sugiro:
- Variações do modo de Inserção:
a- insere depois do cursoro- insere uma nova linha depois da linha correnteO- insere uma nova linha antes da linha correntecw- substitui do cursor até o final da palavra
- Movimentos Basicos:
0- vai para o inicio da linha^- vai para o primeiro caracter nao-branco da linha$- vai para o final da linhag_- vai para o ultimo caracater nao-branco da linha/padrao- procura por padrao
- 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 oddP
- Desfazer/Refazer:
u- desfazer<C-r> (**Ctrl-r**)- refazer
- 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 (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:
. (ponto)- irá repetir o ultimo comandoN<comando>- irá repetir o comando N vezes.
Alguns exemplos, abre um arquivo e digite:
2dd- irá deletar 2 linhas3p- irá colar o texto 3 vezes100idesu 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.
NG- vai para a linha Ngg- atalho para1G, vai para o começo do arquivoG- vai para a ultima linha- Andando em palavras:
w- vai para o começo da palavra seguintee- vai para o final da palavra seguintePor 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 seguinteE- vai para o final da PALAVRA seguinte
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_, f, F, t, T, ,(virgula), ;
0- Vai para a coluna 0^- Vai para o primeiro caracter da linha$- vai para a ultima colunag_- Vai para o ultimo caracter da linhafa- 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 aFeT- Parecido comfet, porem procura pra tras
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á selecionarfoo.va"- irá selecionar"foo".vi)- irá selecionar"foo".va)- irá selecionar("foo").v2i)- irá selecionarmap (+) ("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 (comojjjor%, etc… )I-- [ESC]- escreve — para comentar cada linha
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…
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 gravarYp- duplica esta linha<C-a>- incrementa um numeroq- para a gravaçao@a- escreverá 2 abaixo do 1@@- escreverá 3 abaixo do 2Agora faça 100@@ e criará uma lista de numeros até 103.
Seleção Visual: v, V, <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
Adicione alguma coisa no fim das linhas selecionadas:
<C-v>- vá para a linha desejada (
jjjou<C-d>ou/padraoou%etc…)$vá para o fina da linhaA, escreva alguma coisa,[ESC]
Splits: :split e :vsplit.
Aqui estao os comandos principais, mas voce pode olhar mais em :help split.
:split- irá criar um split (:vsplitcriará um split vertical).<C-w><dir>- ondediré qualquer um dehjklpara 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.
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.
[Francisco Souza] Como foi a #qconsp 2011?
Tuesday, September 13th, 2011Rolou 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, 2011Na ú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:
[Igor Macaubas] Abraçe as incertezas: a Ilusão do controle
Monday, September 5th, 2011Na ú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:
[Emerson Macedo] Node.JS Knockout – Como foi
Monday, September 5th, 2011Hoje 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


