Google e eu, nada a ver…

Depois de algum tempo pensando no assunto, resolvi compartilhar com vocês uma das minhas frustrações!

Há dois meses, aproximadamente, participei do “famoso” processo de seleção da Google e cheguei até a terceira entrevista, onde infelizmente fui cortado. O motivo não sei até agora, tirando somente que a resposta foi “perfil não é um strong match com o que a Google precisa“. Conversa para boi dormir… Por que raios não falam a verdade já que eles vendem tanto a idéia que o processo deles é um dos mais consistentes no mundo ?

A vaga na qual eu apliquei era para ser líder de Orkut no Brasil, produto pelo qual conheço desde o lançamento da primeira versão. Além disso, recentemente fui nomeado como Opensocial Guru e meu nome encontra-se no próprio site da Google :) . Interessante, não ?

Eu realmente gostaria de entender o que eles levam em conta no momento da seleção. Talvez apenas um feeling do entrevistador, já que todas as entrevistas foram realizadas pelo telefone.

O que eu aprendi de tudo isso ? Ninguém é perfeito e pra tudo tem seu tempo. Estou colhendo muitos frutos da minha viagem aqui pelo Canadá e espero poder contar em breve para vocês o que está por vir.

Direto do mundo do Gelo,

Robson, Vancouver, Canadá

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 3%

Opensocial guru - Sucesso nos aplicativos

Alguns acham bobeira, outros não. Recentemente fui nomeado como Opensocial guru pelo trabalho que venho realizando em difundir e ajudar a comunidade Opensocial. Veja aqui meu nome listado no Google..

Além disso, meu primeiro aplicativo, desenvolvido em conjunto com a Abril Digital, está bombando no Orkut. Se você não conhece ainda, basta adicionar: “Meu time, meu humor”. É um widget bem legal, onde você pode acompanhar pelo seu perfil o resultado do último jogo do seu time, notícias de futebol, tabela, classificação, tudo conectado diretamente com o site da Placar.

meu time, meu humor

meu time, meu humor

Fique atento na seção de opensocial do blog, todo dia tem sempre alguma novidade aparecendo.

-Robson

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 6%

Opensocial e PHP - Parceiros inseparáveis

Tópicos descritos neste post:

  • Validando signed requests em PHP usando OAUTH e containers como orkut, hi5 e myspace;
  • Comunicação entre widget e aplicativo server side usando opensocial, javascript, php e json;

Olá!

Após alguns dias sem escrever, resolvi voltar ao assunto do Opensocial e postar alguns detalhes importantes sobre como construir uma aplicação e transferir dados entre o widget e uma aplicação server-side, no caso, escrita em PHP.

Recebo várias questões por e-mail sobre qual tecnologia utilizar e o que costumo dizer é: “A que você melhor souber”. O processo de comunicação é simples, já que todo o tráfego de dados é feito através de requisições de POST e GET,  e além disso, todo o mecanismo de segurança da aplicação, já está criado nas mais diversas linguagens (estou me referindo aos signed-requests ou requisições seguras).

Introdução:

Se você nunca ouviu falar a respeito dos signed-requests, vou definir em poucas palavras e deixar uma referência do próprio Opensocial para que você possa ver os códigos e implementar.

Imaginemos o seguinte cenário:

  • O aplicativo opensocial (widget), precisa mandar alguns dados para o servidor xyz.com através de um formulário;
  • O servidor xyz.com deseja aceitar somente requisições que sejam dos servidores do container (Orkut, Hi5, Myspace, etc), garantindo que alguém não possa forjar a transferência dos dados;

Como fazer isso ? Simples:

Você precisa de um certificado (uma chave que garante que seu server consiga descobrir que o outro lado é o container) e precisa saber decriptar a mensagem de autenticação. Todo processo de autenticação é realizado através de um protocolo chamado OAUTH, que está descrito no site oauth.net . Procure as bibliotecas nos sites de busca, pois a maioria das linguagens já possuem APIs prontas para trabalhar com o protocolo; seja esperto e não tente reinventar a roda :-) .

Depois disso, você só precisa implementar uma rotina genérica para validar todo o processo de request. Simples, não ? Caso precise de mais detalhes, dê uma verificada no site do Opensocial, onde estão disponíveis exemplos em PHP e Java.

http://wiki.opensocial.org/index.php?title=Validating_Signed_Requests

Postando dados - PHP - JSON e Opensocial

Enfim, agora que você já “sabe” como tornar seu aplicativo seguro, vamos ao que interessa: realizar transferência de dados entre o container e seu aplicativo, escrito em PHP.

Antes de começar, vou definir aqui o que é o JSON: Nada, além de javascript serializado em uma string. Isso mesmo, javascript serializado em string. Em php existem duas funções básicas para trabalhar com ele:

json_encode(msg) e json_decode(msg). Só para deixar claro, um array $msg["a"]=”abc” e $msg["b"]=”xyz”, ao passar por json_encode($msg), retornaria {”a”:”abc”,”b”:”xyz”}. Ou seja, um array javascript :-); continuando…

O opensocial fornece uma api de IO que encapsula todo o processo de transferência de dados e você não precisa se preocupar se usa AJAX, XMLHTTP ou qualquer outra coisa. Além disso, também não precisa se preocupar com problemas de requests em domínios diferentes e de problemas de segurança nessas transações pois a API trata, usando um mecanismo de proxy.

Vamos imaginar um cenário, onde você queira cadastrar dados de um usuário do seu widget, no Orkut por exemplo, salvando em um banco de dados mySQL, com rotinas escritas em PHP.

app.xml exemplo:

<?xml version=”1.0″ encoding=”UTF-8″?>
<Module>
<ModulePrefs title=”Meu cadastro”
description=”Meu aplicativo teste”
author_email=”blogdodantas@dxs.com.br”
author_location=”Sao Paulo, Brazil”>
<Require feature=”opensocial-0.7″/>
<Require feature=”dynamic-height” />
<Require feature=”setprefs”/>
<Require feature=”views” />
</ModulePrefs>
<Content type=”html”>
<![CDATA[
<script language="javascript">

// somente exemplo para lidar com layers
function init()
{
     var cabecalho = document.getElementById("cabecalho");

     if(cabecalho!=null)
          cabecalho.innerHTML="<center>Meu cabeçalho !!</center>";
}

// funcao usada para mandar dados ao servidor
function gravaDados()
{
          // array de parametros para a api
          var params = {};

          var formulario = document.getElementById("frm");
          var nome="";
          var email="";

     if(formulario!=null)
     {
          nome = formulario.nome.value;
          email = formulario.email.value;

          // array de dados do post
          postdata = {
          nomeUsuario: nome,
          emailUsuario: email
          }

          // codifica os dados do post
          postdata = gadgets.io.encodeValues(postdata);

          // adiciona os parametros
          params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.SIGNED;
          params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
          params[gadgets.io.RequestParameters.POST_DATA]= postdata;

          // define url de destino do post
          var url = “http://www.meuservidor.com.br/gravadados.php”;

          // executa o post para url, com o callback chamado onResposta, passando params
          gadgets.io.makeRequest(url, onResposta, params);
     }
}

// funcao executada quando o post for enviado
function onResposta(ret)
{
     var dados = ret.data;

     // verifica o retorno do post, json é transformado em array no PHP
     if(dados!=null)
     {
          // transforma a string em um array. Função nativa
          dados = gadgets.json.parse(gadgets.util.unescapeString(dados));

          if(dados["mensagem"]==”ok”)
          {
               alert(”Dados gravados com sucesso”);
          }
     }
     else
     {
          alert(”Não foi possível gravar”);
     }
}

</script>
<script>
gadgets.util.registerOnLoadHandler(init);
</script>

<div id=”cabecalho”></div>

<form id=”frm”>
Nome: <input type=”text” name=”nome” id=”nome”><br/>
E-mail: <input type=”text” name=”email” id=”email”><br/>
<input type=”button” value=”Cadastrar” onclick=”gravaDados()”>
</form>
]]>
</Content>
</Module>

Este simples app.xml envia um post para uma página chamada gravadados.php. A página gravadados.php deve tratar o post, salvar no banco e retornar uma string json para que o javascript trate de volta.

Um exemplo básico desse arquivo, poderia ser:

<?php
// gravadados.php - exemplo - fictício
// blogdodantas.dxs.com.br

// arquivo que verifica certificado do orkut
require_once(”verifica_certificado.php”);

$msgRetorno["msg"] = “”;

// verifica se o certificado veio correto.
if($payload["auth"]==”OK”)
{
     // abrir conexao com banco, etc..

     // post enviado pelo javascript - opensocial
     $nome = $_POST["nomeUsuario"];
     $email = $_POST["emailUsuario"];

     $sql = “INSERT INTO tabela(nome, email) values(’”.$nome.”‘,’”.$email.”‘)”;
     mysql_query($sql);

     $msgRetorno["msg"]=”ok”;

}
else
{
     $msgRetorno["msg"]=”Problema autenticando”;
}

// funcao mágica para retornar json com php
echo json_encode($msgRetorno);

?>

Tranquilo, não ?

Apesar de simples, espero ter ajudado a desvendar esse mistério de transmissão de dados. Uma dica legal é usar o firebug, no firefox. Você consegue debugar toda a transmissão de dados e verificar os post’s sendo transmitidos.

Além disso, não deixe de consultar a wiki do opensocial. Eu mesmo escrevo algumas coisas e tem muita informação interessante.

http://wiki.opensocial.org

Até mais!

-Robson
Especialista em Opensocial| Opensocial guru

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 5%

Membro do Opensocial

Após um longo tempo participando da comunidade de Opensocial, decidi me increver para tornar membro do Opensocial Foundation e consegui!

Oficialmente, sou um membro do Opensocial Foundation ! E o que isso tem de bom ? Muita coisa, como por exemplo acesso à algumas novidades, participar ativamente do processo de desenvolvimento de especificação, votar por mudanças, etc, etc…

Se você, da mesma forma que eu, vê no Opensocial uma enorme oportunidade de fazer negócios, criar aplicativos interessantes e apenas se divertir com javavascript, html e outras coisas, embarque na idéia.

Grupo de discussão e fórum do Opensocial:
http://groups.google.com/group/opensocial?pli=1

Tem algum comentário ou sugestão ? Expresse aqui!

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 7%

Funny (or not) story about my arrival in Vancouver

I was really axious to go to Vancouver, and my flight was late. After waiting for more than 4 hours, we flew to Dallas-FortWorth.

When we arrived there, I realized that we’d missed our connection flight, and our bags too, so I’d to ask for information and again, wait for 6 hours more to get another flight; it was annoying, boring and also frustrating.

Finally, after almost 19hours, I arrived in Vancouver, and of course, it was raining. Surprisingly, our bags were on the floor, like dogs waiting for their owners, and happily we went to our homestay.

The taxi driver was Indian (like almost all taxi driver’s here), friendly and speaking a strange English … that’s how our adventure started. We got lost 3 times and also the taxi driver smashed his car twice. There wasn’t anybody in our homestay, and we had to wait, again!!! To finish our first day, my hostfather slipped down the stairs trying to help me with the bags.

For sure, it wasn’t our day !!!

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 7%

Como ganhar dinheiro com Opensocial ?

Continuando a série de artigos sobre Opensocial, vou falar de um aspecto muito importante que vem abrindo as portas para diversos desenvolvedores criarem aplicativos para Orkut, Hi5, MySpace, etc… COMO GANHAR DINHEIRO COM OPENSOCIAL !

Somente para lembrar: O Opensocial não é do Google. É uma especificação aberta, implementada por uma série de redes sociais, onde alguns players dão ajudas fundamentais para o andamento do processo, entre eles Google e Yahoo. Se você quer ver o que está rolando por trás disso, entre na lista de discussão do assunto e contribua de qualquer forma.

Você já deve ter ouvido falar de AdSense, Uol Anúncios e assim por diante, certo ? Com certeza sabe que você ganha dinheiro com cliques gerados nesses anúncios e que a equação de clique x dinheiro depende basicamente do número de acessos - tráfego propriamente dito. Agora imagine você com um aplicativo desenvolvido e com mais de 2milhões de instalações, imagine o volume de pageviews que você geraria ?

Pois bem, esse é o principal motivo pelo qual vários desenvolvedores estão correndo para criar aplicativos e aplicar idéias que possam gerar interatividade e ao mesmo tempo dinheiro $$$. Veja o caso do BuddyPoke, um dos widgets mais famosos do Orkut a quantidade de anúncios que ele exibe.

Os portais também estão doidos atrás de widgets, brigando pela eterna rivalidade de audiência.  Animou-se ? Então mãos à obra, coloque sua cabeça para funcionar, mexa os dedos e crie algo interessante. Quem sabe você não faz um dinheirinho extra com pouco esforço ?

Boas idéias sempre surgem de boas oportunidades.

Gostou ? Comente.

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 9%

Vancouver Part 2 - SeaBus

If you’re coming to Vancouver you’ll feel what I’m feeling and saying. To go from North Vancouver to Downtown or from Downtown to North Vancouver in weekends, you must take the SeaBus (if you dont have your own car).

It’s amazing: Fast, secure and beautiful.

Today (Oct 11, 2008) my wife and I were to Downtown and took some pictures from the top of the place near SeaBus station. Take a look and feel free to make a comment.

Picture took inside SeaBus

Picture took inside SeaBus

 

Amazing place - Sunny day

Amazing place - Sunny day

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 12%

Brazilian’s adventures in Vancouver

So… as I promised, this is my own effort for trying to show some nice things from Vancouver. First, I’ve been living here for one week, basically for studying, but on my freetime I usually go out with my wife (yes, she is here with me) for traveling, hiking, etc.

Vancouver is a nice place for living, with thousands of things to do. Yesterday (Oct 10, 2008), we went to Vancouver’s Aquarium and it was nice and fun. Nice because I’ve never seen a beautiful place like that and fun because there’re lot of things to see and do.

Have you ever seen the Dolphins jumping off the water or dancing ? I saw it yesterday.  Here it is, a very nice picture…

Dolphins - Vancouvers Aquarium

Dolphins - Vancouver's Aquarium

We saw some strange jellyfishs there. Rose (my wife) took more than twenty pictures and when I showed it for some friends they asked if we did a draw at Photoshop. Of course not, it’s real !

JellyFish - Vancouvers Aquarium

JellyFish - Vancouver's Aquarium

After that, we went to Stanley Park for a walk. Lot of nice boats, roads, nature and so on. Canadian people are really friend and always ask to take a picture for us.

Stanley Park- Vancouver

Stanley Park- Vancouver

After that, we went to our homestay and ate British Pizza with pineapple. They really do love that.

PS: My english is improving, sorry for any mistake. Feel free to comment.

See ya

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 11%

Especialista em OpenSocial

Escrevi há alguns meses sobre o potencial do OpenSocial, aqui, no meu blog. Quem ouviu e correu atrás, se deu bem e antecipou ao mercado. A demanda por profissionais está razoável e poucas pessoas dominam a plataforma.

Nesse meio tempo, entre versões beta e especificações, tenho acompanhado constantemente a evolução do OpenSocial, fazendo parte inclusive da lista oficial de discussão dando sugestões, enviando bugs, etc.

Acabei me tornando um verdadeiro especialista em OpenSocial e viciado no desenvolvimento de widgets. Se você não tem a mínima idéia do que é o OpenSocial, basta entrar no seu Orkut e ver os aplicativos rodando. BuddyPoke é um exemplo e um dos mais conhecidos.

Basicamente, o OpenSocial é um conjunto de APIs escritas em Javascript que possibilita ao desenvolvedor integrar com as funcionalidades nas redes sociais. Esse conjunto de APIs possui uma especificação padronizada, que é mantida por uma equipe de arquitetos da Google, MySpace, Hi5 e outras pessoas que contribuem para o processo.

Em outras palavras, seria totalmente possível utilizar um mesmo aplicativo em todas as redes sociais, fazendo uso exclusivamente das APIs descritas e padronizadas. Utilizei o “seria” justamente para deixar claro que nem sempre é verdade; para os programadores que estão lendo esse post, basta lembrar-se do SQL Ansi - nem sempre a mesma query roda em Oracle, Sql Server, MySQL, etc.. sempre tem algo que é um pouco diferente.

Enfim, se você tem interesse em começar a codificar e usar a plataforma OpenSocial, você precisa saber razoavelmente bem Javascript e HTML, além de abrir uma conta de desenvolvedor em uma rede social para fazer deploy e testar os Widgets. No caso do orkut, essa conta chama-se Sandbox e pode ser acessada em http://sandbox.orkut.com . Quando começar a entrar no mundo, perceberá o tamanho potencial que isso tem.

Depois disso, o material inicial que recomendo é o site de OpenSocial no Google que possui diversos artigos, desde carregar lista de contatos, até trabalhar com dados persistentes e uso de RSS.
http://code.google.com/apis/opensocial/articles/

Mão na massa! Para clarear o seu trabalho e ajudar no entendimento, aqui vai algumas dicas:

  • O arquivo do OpenSocial é um .xml com estrutura definida. Dentro dele você pode trabalhar com HTML, Javascript e CSS, ou se preferir, pode usar qualquer linguagem de programação, setando o cabeçalho como text/xml e jogando a estrutura no XML requerido, usando UTF8;
  • As redes sociais fazem cache da sua aplicação e para você testar existem algumas manhas para fazer o processo sem cache. No caso do Orkut, acrescente o parâmetro bpc=1 na url (bypasscache=1);
  • Existem basicamente 2 formas de visualizar o aplicativo: Profile e Canvas. Profile é quando o box abre dentro do perfil do usuário e canvas, quando o aplicativo abre inteiramente na página, clicando no nome do aplicativo;

É isso!

Em breve vou colocar aqui algumas referências de Widgets que escrevi usando OpenSocial e que estão rodando no Orkut, iGoogle ou MySpace.

Tem dúvida, comentário ou sugestão ? Poste aqui.

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 15%

Acerte na cabeça do seu chefe

Esse é mais um das séries que ninguém trabalha para jogar. Meu score foi 2440 pontos !

Mire na cabeça de alguém que você não gosta e senta o dedo :D Continue lendo »

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 16%

Página Seguinte »