quinta-feira, setembro 02, 2010

Interfaces Divisíveis (Umeboshi Server, Node Knockout parte 3 - final)

Eis uma apresentação do conceito guia do nosso projeto:



Se preferir em Português:



Demoramos um pouco p/ amadurecer o conceito, e ja adianto que ele não está 100% ainda, mas esta é a idéia básica, que consiste em:


  1. Elementos de interface possuem URLs

  2. Ao se acessar estas URLs, o elemento é então transferido ou replicado na tela de quem acessou.

  3. Listeners e dispatchers de eventos são configurados de maneira semelhante à que seriam para ouvir e enviar eventos dentro do contexto de uma página web, mas extendido para ouvir e enviar(pubsub) via rede pelo canal previamente combinado.



Para tornar isto possível, o primeiro passo foi fazer um servidor que criasse um novo canal pubsub para quem quer que precisasse de um. Em uma analogia com seres humanos, seria um instanciador de salas de chat, ou um carinha que reserva salas de reunião p/ quem pede. Este é o Umeboshi Server.

Então a sequência ou ciclo de vida de um aplicativo que quer que seus elementos conversem remotamente seria algo do tipo:


  1. pede para reservar um canal (acessa o entrypoint /channels/new ou /channels/new?fmt=json p/ resultado em json ou /channels/new?fmt=json&callback=foo para jsonp)

  2. passa de alguma forma este canal para as paginas relativas a cada elemento(que vao ser servidas em cada URL de um elemento destacável)

  3. prepara a lógica do que ouvir e do que falar e do que fazer quando ouvir algo relevante



Como se nota, o servidor em si, que foi nosso projeto, não faz muita coisa. Só dá o suporte para que aplicações do tipo das que visionamos, com interfaces quebráveis/divisíveis/espalháveis possam ser rapidamente e facilmente desenvolvidas por quem está habituado a fazer aplicativos single-page em HTML. Basta a inclusão de duas <script> tags extras, uma que é o include do client Faye e outra que é a chamada ao entrypoint JSONp que te retornará o código do canal em uma callback. A partir daí é tudo responsabilidade do developer.

E é isso aí, foi um projeto que gostei de participar, e que quero continuar trabalhando nele, estamos atualmente continuando a conversa na lista de discussões do umeboshi fireteam e desde já convido a todos que se interessarem a participar também, sugestões e patches são muito bem vindos.

[UPDATE 3-Setembro-2010] A votação acabou. Muito obrigado a todos que doaram parte do seu tempo para votar e deixar um review la na página da competição. Ao que parece, conseguimos ficar entre os top 5 na categoria inovação (4º lugar). E nos próximos dias atualizaremos a página do projeto e o código do servidor uma vez que os repositórios e a máquina onde fazemos deploy estão liberadas novamente.

Para acompanhar o progresso, por favor se inscreva na lista de discussão do Umeboshi Fireteam, estamos coordenando os próximos passos por lá.

quarta-feira, setembro 01, 2010

Node Knockout (Parte 2)

Pois bem, quando eu li que haveria uma espécie de hackday/hackaton para desenvover projetos com o node em 48 horas, me empolguei e mandei um email p/ um monte de gente perguntando quem se animava para formar uma equipe, depois de duas confirmações anunciei no meu twitter e consegui completar 4 pessoas. Só gente boa, um designer de mão cheia e mais dois programadores um aluno e um ex-aluno do ICMC.

O Daniel e o Mauricio viriam de São Paulo, e o Armando tinha aula até tarde na sexta, então começariamos mesmo p/ valer só no Sábado (a largada foi Sexta as 21 e o fim no Domingo as 21). Não tinhamos muito bem definido o que seria o projeto, durante a semana estavamos fazendo uns brainstorms num notepad compartilhado, mas só especulando o que daria p/ fazer, que explorasse as coisas boas do nodejs (aguentar muitas conexoes simultaneas, ter libraries de websockets, nosql databases e varias outras "mudernidades").

Então sexta eu comecei com testes do Socket.io, para ver se instalava legal no VPS da Joyent que deram p/ nossa equipe e tentar fazer um chat simples rodar, porque qualquer das ideias que estávamos ainda cogitando iria precisar deste passo inicial de fazer clients diferentes trocarem mensagem. A noite meu irmao chegou, discutimos um pouco e rabiscamos muito o flipchart aqui de casa(preciso tirar fotos e subir pro flickr) para ir amadurecendo tanto o conceito quanto ir limando coisas que pareciam ser inviáveis p/ um período tão curto de tempo, jantamos fora e depois encontramos com o Armando em um café para sincronizarmos o que tinhamos discutido até então.

No sábado chegou o Daniel, e a coisa séria começou de verdade (ele programa melhor que eu), sentamos no mesmo computador e ficamos quase o dia todo pair-programming na minha máquina, quebrando a cabeça para fazer nossos servidores de sockets se comportarem como queriamos. Enquanto isso meu irmão criava no 3D elementos de UI com visual incrível (dê uma olhada!) que poderiam ser utilizados nas demos, e o Armando ia tentando se entender com a API de eventos multitouch do Mobile Safari, pois sabiamos que queriamos mostrar algo no iPod e no iPad, feito em HTML. Um trabalho de equipe muito empolgante apesar de cansativo.

Muito café e muita sinergia num apartamento quente e cheio de poluição sonora vindo da rua (carros de som de políticos com músicas repetitivas, alarme de lojas disparando, enfim…).

Ao fim do sábado parecia que não iriamos dar conta do desafio que impusemos a nós mesmos, e mesmo o conceito e definição do que fariamos ainda estava confuso. E todos poderiam usar algumas horas de sono. Demos o dia por encerrado.

Domingo de manhã o dia começou bem melhor do que o Sábado terminou: o Daniel resolveu trocar a abordagem e abandonamos o Socket.io em favor do Faye, o que foi a sacada para o tipo de objetivo que estávamos tentando alcançar (Mobile Safari não tem suporte a websockets), além disso finalmente chegamos a um consenso sobre o que seria e como vender o projeto, agora era só correr para colocar tudo no lugar. E como corremos… a reta final foi alucinante.

Entregamos no prazo, o que foi inacreditável, e até que não ficou tão ridículo, pelo contrário eu me orgulhei bastante… mas falo do projeto e do resultado em si no próximo post.

Enquanto isso, leia somente a sequência de commit messages do nosso repositório, do começo para o fim como se fossem status updates do twitter… da para ter um pouco de noção da loucura que foi nosso fim de semana :)

[Update] Confiram as partes 1 e 3 deste post.

terça-feira, agosto 31, 2010

Node Knockout (Parte 1): Node.js

Participei este fim de semana com meu irmão e mais dois amigos da competição Node.js Knockout, uma maratona onde cada equipe teve 48 horas para programar/desenvolver um produto que utilizasse o Node.js.

(pretendo escrever mais sobre o projeto que enviamos nos posts seguintes, mas se vc está curioso assista a estes dois videos: demo1, demo2)

Node o quê?


Eu deveria ter tirado a poeira deste blog para escrever sobre o Node.js antes…

Bom, o Node em poucas palavras é um interpretador de Javascript(engine V8, a mesma do Chrome) com alguns poderes especiais tipo acesso ao filesystem, processos, stack de rede e chamadas do sistema, etc… E o Node chuta bundas!

É sério!! Node.js é do caralho e se você ainda não brincou com ele, ou quer brincar mas está adiando o aprendizado por qualquer que seja o motivo, pare tudo e instale agora o node na sua máquina. Você pode me agradecer depois…

Mas você não precisa acreditar na minha palavra, se tiver com tempo eu recomendo assistir a tech talk do criador do projeto, e tirar suas próprias conclusões.

Enfim, eu comecei a brincar com o node há pouco tempo, e fazendo coisas bem simples, tipo esta ferramenta de linha de comando para consultar os Trending Topics do Twitter sem ter que sair do meu Terminal…

E o legal de começar a brincar com uma tecnologia que tem potencial enquanto ela ainda está no início (versão 0.2.0 e com trunk bem ativa) é que todos estão empolgados e todo mundo tem uma opinião de como implementar este ou aquele módulo, o que de certa forma trás renovação e competição para a mesa… dê só uma olhada nesta lista de libraries, tem de tudo e para todos os gostos!

Não só tem de tudo e para todos os gostos com tem n opcões de módulos diferentes para escolher qualquer que seja a funcionalidade que vc precise:

— Quer mysql? Toma, escolhe entre estas seis aqui.
— Precisa servir websockets? Ok, uma destas 4 aqui deve servir.
— Ah, mas eu queria um parser p/ opções da linha de comando bem simples…
— Sem problemas, veja se algum destes serve…
— Não gostou de nenhum? Faça um novo! Afinal, é tudo Javascript mesmo, e você já programa isso o dia inteiro para websites, oras…

[Update] Ok, eu exagerei na frase acima, não é tudo Javascript, vc pode desenvolver módulos nativos compilados em C ou C++ também :) (Veja a parte de Addons na página da API, ou este tutorial)

[Update 2] Confira as partes 2 e 3 deste post.

quinta-feira, abril 29, 2010

Drumbeat São Carlos

Amanhã, sexta-feira 30 de Abril, a partir das 19 horas acontece o primeiro encontro Drumbeat de São Carlos.

Drumbeat São Carlos

Mas o que raios é um "drumbeat"?



Drumbeat é uma iniciativa da Mozilla foundation para fomentar projetos relacionados ao conceito de "open web". Existe um website para exposição destes projetos e reuniões presencias de grupos locais são organizadas pelo mundo.

O website funciona como uma espécie de ponto de encontro/vitrine/incubadora virtual para ajudar reunir pessoas de interesses comuns em torno de iniciativas que tenham alinhamento com a mentalidade open. E os encontros locais funcionam como mini-barcamps com a intenção de reunir pessoas de diversas áreas (não apenas tecnologia) para trocar experiencias, divulgar projetos e também unir esforços para propor e realizar novas idéias que ajudem a manter a web aberta.

Acho que o conceito está melhor explicado aqui no website do movimento.

Sobre o Drumbeat São Carlos


O encontro vai acontecer no espaço de coworking CWSC, leia mais sobre o evento na página do wiki do Mozilla com a carta convite.

Aguardo vocês de São Carlos, Araraquara e região!

quinta-feira, março 18, 2010

Precisamos de um Youtube.gov? (parte II)

Ok, fim do primeiro dia, tudo ficou mais claro.

Eu de fato cai de pára-quedas no evento do post anterior. Procurei entender melhor o porque da reunião, o que é que o Ministério da Cultura está propondo e em que pé a coisa está.

Em poucas palavras, do que eu entendi é basicamente isto:

1- O Ministério tem um projeto de digitalização do acervo da cinemateca nacional já em andamento, e quer aproveitar o embalo para disponibilizar estes conteúdos para quem quiser ou precisar.
2- Isto justificou o repasse de uma verba x (ouvi 10 milhões) para se criar um "sistema de gerenciamento de acervos". Um "kaltura melhorado" nas palavras do Pedro (que pacientemente tentou me explicar a motivação).
3- Já que o desenvolvimento de tal sistema pretende ser levado adiante, quis-se reunir nestes 3 dias pessoas ligadas a n instituições públicas que poderiam eventualmente se aproveitar de um gerenciador de acervos, para listar as necessidades atuais e outros requisitos.

Eu, como disse anteriormente, fui convidado quase que "por engano", já que não compartilho da visão sobre o que muitos ali entendem por "interesse público". Dizer que eu estava fora da minha zona de conforto ali seria um resumo insuficiente, eu estava é num episódio de Twilight Zone, overdose de bizarrices. Foi muito para mim.

Não vou dizer que não aproveitei nada porque seria mentira, aproveitei muito na verdade, as conversas do almoço, dos coffee breaks e todos os bate-papos do lado de fora das salas de reuniões foram proveitosos. Mas não contribui (e nem pretendo) com as reuniões, discussões sobre o sexo dos anjos, grupos de trabalho e demais atividades, não é minha praia, prefiro ficar de fora.

quarta-feira, março 17, 2010

Precisamos de um Youtube.gov?

DISCLAIMER: post longo e que foge um pouco das minhas próprias regras editoriais, leia por sua conta e risco.


Embarco agora de manhã para o Rio de Janeiro. O objetivo inicial da viagem seria apenas participar de um encontro de Open Video que acontecerá Sexta-Feira na FGV organizado pela OVA.


Clip #1410 by Ace on Public Videos

Estou indo dois dias antes no entanto pois aproveitaram o evento (e a presença de gringos na cidade) para organizar outros dois encontros mais ou menos relacionados. O Drumbeat (uma espécie de Barcamp promovido pela Mozilla da qual eu posso falar em outro post) na Quinta-feira e um terceiro evento que acontecerá hoje e amanhã, que é o mais preocupante e o assunto principal deste post.

Dialogando com o Governo


“The most terrifying words in the English language are: I'm from the government and I'm here to help.”
- Ronald Reagan

Ha uns 10 dias atrás, o Pixel me mandou um email perguntando se eu estaria no Rio esta semana e se eu poderia participar de uma reunião com membros do Ministério da Cultura, RNP e OVA. Respondi que estaria quinta e sexta a princípio, mas que não me importava em chegar um dia antes para bater papo.

Acredito que quem me convidou sabe minha posição com relação ao Estado (meu inimigo) e minha posição com relação a este governo em específico(eu gostaria de ver Lula sendo julgado pelos crimes que lhe são atribuidos). E se mesmo assim me convidaram, deve ser porque sabem também que eu aprecio discutir ideias, independente de com quem seja.

Na minha cabeça vale a pena perder meu tempo e participar de um encontro com outros produtores de conteúdo aberto a convite de membros de uma burocracia que eu repudio e de um ministério que eu acho que não deveria existir, mesmo correndo o risco de estar emprestando algum nome ou prestigio (que eu nao tenho) para uma causa que não é a minha.

Sou da opinião de que é melhor eu ir, participar e deixar clara minhas posições, do que não ir e ter que ler depois em algum blog por ai que “diversos setores da sociedade foram consultados”.

O Convite


“The urge to save humanity is almost always only a false-face for the urge to rule it.”
H. L. Mencken

Muito bem, abaixo está o convite que recebi por email e por onde eu soube qual seria o tema da “reunião de trabalho” (whatever that means), tomo a liberdade de reproduzi-lo aqui sem autorização:


Caro(a), Fabrício Zuardi

O Ministério da Cultura tem a honra de convidá-lo(a) para participar da reunião de trabalho para a elaboração de uma proposta para o desenvolvimento da "Plataforma Aberta de Conteúdos Digitais", uma plataforma online de áudio e vídeo, pública e livre, baseada em padrões abertos.

O encontro acontecerá nos dias 17, 18 e 19 de março, no Rio de Janeiro e é organizado em parceria com a RNP (Rede Nacional de Ensino e Pesquisa), e OVA (Open Vídeo Alliance). O local e horário da reunião serão confirmados em breve.

Aguardamos sua confirmação o mais breve possível.

Atenciosamente,

Coordenação de Cultura Digital


Cofesso que a dúvida sobre se Fabricio Zuardi é homem ou mulher não me incomoda, afinal é preciso pensar na pluraridade, no começo deste blog pessoas chegavam pelo Google buscando por "fabricio traveco" entre outras, a turma é consciente e nao quer correr o risco de gafes ao convidar transgeneros, gays, lésbicas e travestis (eu sempre me pergunto o pq retiraram os simpatizantes la da sigla quando mudaram de GLS p/ GLBTTT)… enfim. O que eu achei curioso foi a finalidade da reuniao, pois para mim, uma plataforma muito parecida como esta que querem elaborar uma proposta de desenvolvimento já existe.

Chama-se Internet.

Sério:

  • Aberta - check!
  • de Conteúdos digitais -check!
  • online - check!
  • suporta audio e vídeo - check!
  • pública (dependendo do sentido) - check!
  • livre (por enquanto) - check!
  • baseada em padrões abertos - check!



Desenvolvimento de sistemas


If any idea can survive a bureaucratic review and be implemented, it wasn't worth doing.
- Mollison's Bureaucracy Hypothesis

Sem maiores informações além do que estava no convite, eu seria capaz de apostar que o governo está querendo na verdade é criar mais um site. Pois quando eu vejo anunciarem uma “plataforma” disso ou daquilo por ai, normalmente é como justificativa para contratar alguma agenciazinha “ishxpeirrta” por alguns milhõeszinhos para fazer(como o nariz deles) um “portal” de qualquer coisa, e que depois exige mais contratos para manutenção da bomba em questão (chaching!).

Palavrinha do cão esta também hein… plataforma. Tudo hoje em dia é plataforma, vou te contar… "online video platform", é o que? Youtube? Wikimedia? Hulu? Bittorrent? Blip? Internet Archive? Wordpress? iTunes Store?

Pois bem, ontem, véspera da reunião, recebi um email com um esqueleto da agenda, ao que parece o plano é que os participantes façam um brainstorm sobre as “plataformas”(whatever that means) existentes, suas funcionalidades, para levantar novas ideias, soluções e etc. Até ai nada demais, é saudável colocar um monte de gente que ja trabalha na área para trocar ideias em torno de um tema. Thumbs up!

O problema é que(a julgar pela agenda enviada): existe a intenção (como eu temia) de usar o encontro para chegar em uma especificação de um sistema a ser desenvolvido. Ai já não né moçadinha! Calma lá, não coloquemos os carros na frente dos bois…

Assim fica parecendo que a necessidade da construção de tal plataforma é um fato irrefutável, que já foi amplamente discutido, que é uma demanda do mercado e que é uma boa idéia meter o poder público no meio. Quando na verdade não.

Fora de brincadeira, a programação do evento contém tópicos do tipo: "Definir a Arquitetura do sistema da plataforma", "Definir o modelo de metadados da plataforma", "Projeto de interface", "Elaboração de um roteiro para o desenvolvimento", "Definição dos recursos necessário".

Como diria o poeta: “cada um no seu quadrado”. Que raios tem o Ministério da Cultura, ou a RNP que seja, que se meter no desenvolvimento de sistemas para usuários finais?

Não estou discutindo aqui a validade de pesquisas acadêmicas de ponta financiadas com o dinheiro público, não é este o caso. Se a RNP estivesse, sei lá, querendo contribuir com a melhora do Dirac através de pesquisas de algoritmos de compressão baseados em wavelets ou o que quer que seja, eu não acharia a iniciativa tão ruim. Pesquisa é uma coisa, criação de produto é outra. E se o produto é um sistema web então… esquece, há incentivos de sobra nesta área para que soluções poderosas, abertas, colaborativas, inovadoras, de qualidade e de sucesso surjam sem interferência estatal/burocrática.

A impressão que eu tenho é a de que alguém quer propor o uso do nosso dinheiro num projeto fadado ao fracasso: Um YouTube.gov dos mesmos que nos agraciaram com a "TV traço", o blog do Planalto e o "Google Brasileiro".

— Porra Fabricio! Quanto rancor! O mundo não é preto e branco… veja o outro lado.

Eu sei, eu sei, não estou querendo miar o evento nem ser o do contra, prometo que vou lá, vou ouvir bastante e vou procurar entender as motivações, necessidades e crenças dos outros da reunião de trabalho, não necessariamente quero briga e estou disposto a ser contrariado e convencido, as usual. Só quero propor uma discussão anterior, na minha opinião antes de discutirmos quem vai andar na janela do Fusca é necessário dar um passo atrás e questionar se o Fusca é de fato o que queremos. Eu particularmente não quero.

Apêndice: Como politicas públicas do Brasil poderiam ser melhoradas para ajudar o vídeo livre?


There can be no freedom in art and literature where the government determines who shall create them.
- Ludwig von Mises

Para não terminar o post num clima ranzinza, e para não parecer que eu só critico e não adiciono nada de positivo ao debate, segue abaixo duas simples propostas de ações por parte do poder público que podem influenciar positivamente o avanço do vídeo livre no Brasil. Retirado de uma entrevista que respondi para um levantamento que está sendo feito com produtores de conteúdo aberto no brasil, é a resposta para a pergunta do titulo acima.


Existem varias maneiras de ajudar o video livre no brasil através de mudanças nas políticas públicas, vou tentar citar algumas…

1- Democratizar o acesso a equipamentos eletronicos. Não através de leis de incentivos que beneficiam uma classe ou através de incentivos financeiros em forma de editais para dar grana para meia dúzia, isto não é democratização. A forma mais simples de realmente beneficiar TODOS é por meio de uma redução significativa nos impostos de importação, para TODOS os setores.

2- Cortar os incentivos para produções nacionais. Existe no Brasil uma certa inércia e comodismo, uma cultura de poder contar com um dinheiro a fundo perdido para produzir algo sem compromisso com qualidade, isto é na minha opinião algo que inibe inovações verdadeiras. Se fosse possivel quebrar esta cultura do Estado paizão, não só haveria menos desperdício do dinheiro público como os proprios movie-makers teriam que ir atrás de meios e formatos de produção alternativos, área onde o video livre apresenta vantages.

quarta-feira, fevereiro 24, 2010

Bate Papo com Lessig amanhã!!

Se você mora em São Carlos, Araraquara, Ribeirão Preto e região, não perca:



Garanta sua vaga o quanto antes através deste formulário. Mais detalhes sobre a exibição de São Carlos aqui, mais detalhes sobre outros pontos do planeta (ou se quiser assistir de casa) aqui.

Haverá também demonstrações de projetos web desenvolvidos por pessoas da região, telão com videos relacionados, distribuição de filmes abertos(traga seu pen-drive!) e um churrasco de confraternização.

quinta-feira, fevereiro 11, 2010

I DO want "another list of friends or followers to manage"!

Official Google Reader Blog: Readers: Get your Buzz on

I am pissed of with the fact that Google Buzz totally messed up my Google Reader, and Google folks go and write this lame blog post/excuse announcing the bug as if it was a feature…

I am VERY disappointed with the "social" folks at Google, I don't think they go out much and actually understand how social interactions really works… real people keep different contact groups for different things. I am not interested in inviting my father in law to attend a tech conference, the same way I am not interested in losing an interesting article on a sea of kitten pictures and i-just-went-to-the-bathroom personal updates from my friends.

Google, you are doing it wrong.

terça-feira, janeiro 26, 2010

Lançamento: Public Videos (alpha)

Já havia anunciado no Twitter há duas semanas, mas como de lá pra cá muita coisa evoluiu, e como muitos leitores daqui não usam twitter ou não me seguem por lá, e já que esta semana vou oficialmente apresentar o projeto durante um evento em São Paulo achei que era hora de anunciar o site que tem ocupado parte do meu tempo durante os últimos meses aqui também :)

Sem mais delongas, apresento-lhes o Public Videos Alpha!


O que é?


Public Videos é um repositório livre de imagens em movimento.

É uma biblioteca de clipes originais de alta qualidade, disponíveis em formato aberto (Theora) que retornam precocemente ao domínio público através do dispositivo de renúncia de direitos conhecido como Creative Commons Zero.

Encontra-se ainda em desenvolvimento, mas já acessível e com milhares de clipes para consulta, cópia, reprodução e livre reuso para quaisquer fins.




O projeto tem seu próprio blog de desenvolvimento e updates, mas acredito que vocês vão me ler falando deste projeto bastante por aqui também…

Enfim, espero que gostem, sugestões e críticas são sempre bem vindas.

domingo, janeiro 17, 2010

Sir Alexander Fleming: descobridor da penicilina

It may be that while we think we are masters of the situation we are merely pawns being moved about on the board of life by some superior power.


Leia o discurso inteiro no site da Nobel Foundation.