Minhas impressões – Google Developer Day 2010 (GDD2010) – 29/10/10

Caros amigos e leitores,

Depois de um bom tempo sem escrever algo no blog (desde já peço desculpas pela “ausência”, sei que preciso escrever mais e gerar mais conteúdo), e sem relatar eventos, vou escrever nesse post uma cobertura acerca do evento Google Developer Day 2010 (ou GDD2010), ocorrido na sexta (29/10/10). Essa foi a primeira edição da qual estive presente. Pretendo no ano que vem “repetir a dose”…rs. Confiram mais abaixo as novidades!

Panorama

Estive nesse evento juntamente com o André Pantalião, ex-companheiro de Voice Technology e hoje empreendedor no Vizir. Estava bastante motivado para participar, ver as novidades da Google, fazer networking, conhecer o pessoal (que não conhecia pessoalmente) do SP-GTUG (incluindo outros GTUG’s) e “figuras” que só conhecia por listas de discussão, Twitter ou Facebook.  Para mim foi a primeira participação no evento, o André já tinha participado no ano passado.

O evento ocorreu no mesmo local do ano passado, no Hotel Sheraton São Paulo WTC. Pessoalmente, eu não gostei muito da idéia de me locomover pra Berrini em um evento as 9h00 durante a semana. O transporte público é horrível nesse horário (eu teria que pegar ônibus, metrô e trem, tudo no horário entre 7h00 e 8h30, seria TENSO!). Ainda bem que o André resolveu ir de carro, e aproveitei a carona do mesmo 😉 Chegamos até com um pouco de antecedência no local (cerca de 8h35 da manhã). A partir daí foi só fazer o credenciamento, pegar alguns brindes e aguardar até as 9h00 para o início.

Abaixo vou colocar um resumo, informações e alguns apontamentos pessoais das palestras que conferi “in loco”.

Abertura do evento (Keynote) – Mario Queiroz e Eric Tholomé


Mesmo chegando com antecedência não foi fácil entrar na sala principal, que depois se subdividiu em 3 (sala[0], sala[1] e sala[2]), para ver o Keynote de abertura. Estava completamente lotada e o pessoal da organização montou salas auxiliares para o pessoal que não conseguiu lugar ver os slides e conferir o áudio. Pontualmente as 9h00 o evento se iniciou. Em português, Mario Queiroz (VP de Gerência de Produtos) deu início ao GDD2010.

Iniciou os trabalhos agradecendo o seleto público de desenvolvedores e usuários da plataforma do Google, parabenizando os 1000 selecionados (apesar de achar que tinha mais gente) para o evento, que teve cerca de 6000 inscritos. Citou estatísticas para o público, a fim de embasar os fatos que viriam posteriormente e ressaltar a importância do mercado brasileiro, tais como:

O foco do Keynote, e as novidades a serem passadas nesta parte do evento eram: Chrome e HTML5, GAE e Android.

Sobre Chrome e HTML5:

  • O uso da internet se tornou absurdamente grande, sendo o principal meio comunicativo, a frente da TV, Rádio e outras mídias;
  • HTML5 vem chegando com muita força e aceitação de desenvolvedores em apenas 2 anos;
  • Nos smartphones será visível o grande aumento de uso de HTML5 em aplicações em curto prazo.
  • Desafios da web: descobrir aplicações e fazer o usuário redescobrí-las sempre, a partir disso monetize;
  • Hoje no mundo o chrome tem 70 milhões de usuários, sendo que o Brasil é o segundo país que mais usa;

Para mostrar algumas novidades sobre o HTML5 foi chamado ao palco para apresentar uma demo Eric Bidelman, mostrando HTML5 através do hardware, animações controladas por acelerometro, movimento do mouse e etc. O pessoal ficou bastante animado com o que foi apresentado.

Sobre Cloud Computing (GAE):


Para falar sobre Google App Engine foi convidado a apresentar as novidades Eric Tholomé, abrangendo as novidades do Cloud Computing e como ele está sendo encarado pelo Google. Abaixo os principais pontos:

  • Avanço natural das tecnologias até chegar ao Cloud: Mainframe -> Internet -> PC -> Web -> Cloud;
  • Barateamento de disco, memória, processamento, etc.
  • Lema do GAE: Easy to Build, Manage and Scale;
  • O crescimento de uso do Google App Engine é grande: são 90 mil desenvolvedores, 130.000 aplicações e 5.5 bilhões de pageviews;
  • Credibilidade: hoje o símbolo do dirigível do GAE é sinônimo de garantia de escalabilidade. Não é preciso apresentar documentação ou gráficos avançados de rede pra provar;
  • Custo benefício de uso e desenvolvimento é muito mais em conta, geralmente 60% menos que as soluções comuns.

Foi convidado a subir ao palco, para apresentar um “case de sucesso”, Marcelo Marzola (CEO da Predicta). Foi ilustrado ao público o BTBuckets, tecnologia de marketing online e um dos maiores cases de sucesso de uso do GAE.

Eric Tholomé voltou ao palco e disponibilizou para o público o RoadMap do GAE:

E as novidades  do App Engine for Business, anunciado no Google I/O (mais informações nesse link):

  • Server Level Agreement;
  • Professional support;
  • Hosted SQL;
  • Secure by Default;
  • Custom Domain SSL;
  • Enterprise administration Panel;
  • Integração GWT+SpringRoo disponível;

A respeito do último tópico acima, Chris Ramsdale fez uma demo mostrando um exemplo de scaffold usando GWT+SpringRoo, usando a IDE Spring Source Tool Suite no GAE. No evento ele teria uma palestra abrangendo mais o assunto.

P.S. : No Twitter, alguns “Railers” “torceram o nariz” para o scaffold (ou gerador de código automático) e “re-deploy” automático da aplicação quando há alguma mudança de código, já subindo o projeto para o GAE. Eu achei bastante interessante, e verei se arranjo algum tempo para olhar mais detalhes do SpringRoo 😉

Sobre Android:


Estava por vir uma das partes que eu esperava mais no evento, as novidades sobre Android. Voltando ao palco, Mario Queiroz expôs os números mais recentes e as boas novas. Abaixo as informações:

  • Número de ativações por dia: 200.000;
  • Aplicações na Android Market: 100.000;
  • Números oficiais: 90 devices, 21 fabricantes, 50 operadoras, 49 países. Uma ascensão marcante, sendo que em outubro de 2008, no início de tudo, era apenas 1 fabricante, 1 operadora e um único device;
  • Melhorias no Android Market Licensing Server, o sistema anti-pirataria para aplicações na Android Market;
  • Cloud to device messaging;
  • Para as empresas: melhor integração com o microsoft exchange, opção de “remote wipe” (apagar todos os dados do aparelho de forma remota), etc. Acesse esse link para mais informações;
  • Speech API para desenvolvimento de reconhecimento de voz na versão 2.2 do Android.

Marcello Quintella (Product Manager) foi chamado ao palco para apresentar uma demo, usando o Milestone 2, do Google Navigation (liberado um dia antes, aqui no Brasil) e Pesquisa por Voz em aplicações (somente para a versão 2.2). Essa demo sim, agradou praticamente todos os presentes. Eu mesmo testei “na real”, depois do evento no caminho de volta pra casa, no carro do André. É fantástico! 🙂

Depois de todos esses dados anteriores, deu-se por encerrado o keynote de abertura do evento, que no final trouxe algumas informações das quais eu não tinha conhecimento, apesar de ler bastante sobre as tecnologias do Google :-p

Novidades na Google App Engine e Google App Engine For BusinessPatrick Chanezon Coffee break, networking, GTUG’s e conversas…rs

Após o Keynote houve uma parada para coffee break em um lounge com algumas placas subdividindo os interessados por assuntos como Cloud, Android, GAE e outros. O pessoal foi se enturmando e conhecendo o pessoal com idéias similares. Já de cara achei alguns companheiros do SP-GTUG e conhecidos da comunidade Java, Ruby, Android e outros GTUG’s  do Brasil (Belo Horizonte e Salvador) no coffee break. O nível da conversa estava tão bom e produtivo que acabei não vendo a primeira palestra que estava na minha lista 😦 Mas por outro lado, fiz networking com pessoas de outras listas de discussão, peguei alguns cartões e discuti alguns projetos da comunidade. Valeu a pena! 🙂

E o Patrick Chanezon liberou os slides dessa palestra, confira abaixo:

Google Web Toolkit: O que é, Como Funciona e Tópicos Mais ProfundosChris Ramsdale Overbooking, sala auxiliar cheia = auxílio pro SP-GTUG 😉


Nesse horário tinha em mente que iria assistir a palestra sobre GWT, na sala[1] (central). E quem disse que eu consegui entrar? Overbooking! O mesmo fator que ocorreu no dia anterior, no Android Developer Lab. Em outras palestras ao decorrer do dia aconteceu o mesmo fato. #FAIL! Perante essa situação pensei: vou assistir na sala auxiliar, assim aproveito alguma tomada para recarregar os gadgets, ouvir o áudio e ver os slides. #FAIL again! estava lotada e sem tomadas disponíveis. Fiquei cerca de 5 minutos em pé, não gostei da situação e saí.

Me dirigi a mesa reservada para o SP-GTUG. Lá estava o Paulo Fernandes dando um suporte para o pessoal com dúvidas sobre o GTUG e “caçando” brindes para sorteio no final do evento. Fiquei ali para auxiliar o pessoal também, ao lado da mesa do Google para New Business Development. Foi legal porque ali eu conheci o organizador do GTUG-Salvador, entre outras pessoas 🙂 Ah, consegui uma tomada (uma única mesmo) e usar um pouco o wifi para ler os emails.

Depois chegaram o pessoal da Lambda3 (@felipero, @flavia_oliv, @giovannibassi, @andrediasbr) e @scaphe, conhecidos por mim via Twitter. Essa turma ficou ali “trocando idéias”, “twittando” e codificando.

Após o horário do fim da palestra o André chegou e decidimos almoçar por ali mesmo, pois o Google disponibilizou para o pessoal (como no ano passado)  a “marmitinha” (lanche natural, maça, barra de cereais, bombom e refrigerante). Terminando de comer botei na cabeça que deveria entrar com uns 15 minutos na sala[1], pois começaria o track de Android com o lendário Tim Bray. Esse eu não ia perder por nada!

P.S. : a apresentação do Ramsdale não foi disponibilizada ainda. Quando for coloco no post o link para ela 😉

Ecossistema Android e NovidadesTim Bray

Consegui lugar finalmente! Estava a postos para ver a palestra do Tim, que hoje ocupa do cargo de “relacionamento com desenvolvedores Android”. Essa foi uma palestra básica para quem já viu ou programou para Android, com uma introdução ao “ecossistema” e uma descrição das últimas novidades. Alguns tópicos:

Para gerar aplicações para Android é preciso apenas seguir 6 passos, que mostram como um desenvolvedor trabalha:

  • Fala o download do SDK/NDK da página developer.android.com e escolha a versão desejada;
  • Instale o ADT, o plugin para o Eclipse;
  • Faça uso das ferramentas do SDK (“tools”) como ddms, logcat and traceview;
  • Faça o download do código fonte do sistema em source.android.com para usar como referência;
  • Registre-se como desenvolvedor por $25 (valor pago apenas uma única vez);
  • Faça upload  de sua aplicação para o Android Market 🙂

Os tópicos mais específicos foram:

E a melhor novidade na minha opinião:

  • Gingerbread foi oficializado: os desenvolvedores deverão liberar a versão no final desde ano, e o foco será em performance, melhorias no framework, suporte a mais línguas e melhorias para suportar games cada vez mais avançados 🙂

Sobre as novas diretrizes da Android Market:

  • Terá uma versão na web;
  • Tende a se tornar cada vez maior;
  • Buscas de aplicativos serão cada vez mais fáceis;
  • O mesmo irá ser aplicado a compra e “upload” de aplicativos.

Porque eu escolheria Android?

  • Open source (GPL +Apache2);
  • Baixa curva de aprendizado;
  • Programação em Java 😉
  • Suporte a múltiplas linguagens;
  • API robusta;
  • Abstração limpa.

Práticas Efetivas de Interface com o UsuárioTim Bray


Essa foi a segunda palestra seguida do Tim sobre Android, e ele ainda teria mais uma no evento. Houveram quatro palestras sobre Android, escolhi ver as três do Tim Bray (o pessoal no Twitter até brincou com isso, dizendo que as pessoas que escolheram essa programação (e foram muitas) estavam no TBDD2010 (Tim Bray Developer Day 2010)) :-p

Esta sessão teve como objetivo passar as boas práticas em termos de interface/design para os desenvolvedores. É de conhecimento da maioria que existe aquele certo “preconceito” de que desenvolvedor não sabe fazer/desenhar uma interface gráfica “atraente” e “polida”. Na maioria dos casos é verdadeira (eu faço parte dos números dessa estatística sim…rs).

Muitas vezes “quem vê cara não vê coração” 😉 E falando sério: o design de uma aplicação mobile, a usabilidade e facilidade de navegação fazem diferença. Abaixo algumas dicas que são imprescindíveis para o sucesso da sua aplicação:

  • Porque ter uma interface bonita? quanto melhor a interface, mais polida a aplicação. A partir daí existem melhores análises, melhor aceitação da sua aplicação pelo público e maior possibilidade de retorno (popular ou financeiro);
  • Visão de usuário é sempre diferente da visão de desenvolvedor, #fato;
  • Ouça seus usuários: lance versões alpha, beta… Antes de colocar no Android Market mostre a seus amigos. Lance versões cedo e com frequencia. Disponha um endereço (site, blog, redes sociais) para feedback e responda seus usuários, principalmente os que “metem o pau” na parte de comentários da Android Market;
  • Use o Google Analytics for Mobile (!)
  • Verifique erros, acesso a activities, settings e exceptions reportados pelos usuários, quando a aplicação “dá crash”;
  • Evite bugs: faça TDD (não seja um “bundão“). Apesar de ser mais difícil aplicar no desenvolvimento para Android, busque referências.
  • Disponha um bug tracker para o pessoal reportar erros e seja franco e sincero com o público;
  • Seja responsável com suas aplicações: evite que mensagens de crash apareçam;
  • Faça aplicações com bastante usabilidade: botões e textos grandes são bem vindos;
  • “Se o usuário tem que ler um help antes de usar sua aplicação então há algo errado” (Tim Bray);
  • Programadores geralmente não sabem fazer design: contrate ou peça ajuda de um!
  • Dê preferência a clareza, conteúdo e informações armazenadas na nuvem (seu telefone pode ser roubado viu…);
  • Faça aplicações que funcionem na horizontal e vertical!
  • Invista em ícones legais 😉
  • Integre com outras aplicações ou API’s se possível, não faça toda aplicação standalone;
  • Itens “sagrados”: status bar, back button, menu button and search button (não mude o comportamento deles e saiba aproveitá-los em suas aplicações).

APIs: Storage, Bigquery e PredictionPatrick Chanezon

Essa palestra acompanhamos eu e o André, por exclusão (no horário não havia alguma de total interesse para ambos) na “sala auxiliar”. Chegamos com uns 10~15 minutos de palestra decorrida no local. Dessa vez haviam lugares pra sentar e consegui uma tomada livre.  Encontrei por lá o Fábio Gama, também membro do SP-GTUG, aumentado a lista de conhecidos no evento.

Nessa palestra o Chanezon apresentou o mais “novo produto de armazenamento” do Google, o Storage. Ele é disponibilizado para desenvolvedores, e é oferecida uma API RESTful para armazenar e acessar dados no Google. No fundo você vai poder usar/usufluir de uma “pequena parcela” da infraestrutura de armazenamento do Google, bem como capacidades avançadas de compartilhamento e segurança. São exemplo de empresas que estão usando o Google Storage: VMWare, LTech, Memeo, The Guardian, e outras.

Para análise de dados pesados houve o desenvolvimento de duas dessas ferramentas, que estão disponíveis por inscrição limitada para desenvolvedores:

  • (1) BigQuery: análise interativa (via web services) de grandes conjuntos de dados;
  • (2) Prediction API: que permite fazer “predições informadas” sobre seus dados (sinceramente não entendi muito bem na hora, mas dando uma pesquisada achei esse link, que mostra que você tem acesso aos algoritmos de “aprendizagem” do Google, facilitando tomadas de decisão futuras em suas aplicações. Ainda não achei aplicação para isso :-p )

Como todas as API’s acessadas via REST, há um número limitado de requisições, favor acessar os links relativos a cada ferramenta. Todas tiveram demos mostradas pelo Chanezon. Para os interessados, a apresentação já foi disponibilizada e está abaixo:

Essa era a última palestra que antecedia o intervalo para o coffee break. No caminho encontrei o pessoal da Globalcode, a @yarasenger, @edermag e @rafanunes (o @drspockbr estava no Keynote uma fileira atrás da minha…rs). Dei uma passada lá na mesa do SP-GTUG e o pessoal continuava indo lá para tirar dúvidas. Foi bem útil o espaço disponibilizado para o grupo 🙂

Construindo Aplicativos de Alto DesempenhoTim Bray


Última palestra técnica do evento, a última do Tim Bray 😦 Essa foi bem técnica mesmo, com conteúdo para desenvolvedor que já está “por dentro” do “mundo Android”. Seguindo a linha da palestra 2 dele, aqui ele mostra exemplos, agora práticos e com código, de como “performar”, “debugar” e tornar sua aplicação mais versátil e com um tempo de resposta cada vez mais rápido, aproveitando ao máximo o framework de construção de aplicativos e as ferramentas do SDK. Abaixo as informações:

  • Pense duas vezes antes de fazer aplicações que escrevam na flash do seu aparelho (yaffs2): cada device tem um tipo de flash e velocidade de gravação e leitura. Pesquise! (link para estudo: YAFFS 2 Specification and Development Notes);
  • Perfomance para o SQLite: use indexes (EXPLAIN & EXPLAIN Query PLAN);
  • Para uso de log: sempre, SEMPRE dê file-append ao invés de escrever no banco (nem preciso falar que isso se reflete em qualquer software na vida real);
  • Escrever no disco é lento, usar rede é lento. Sempre assuma estar desenvolvendo para o pior caso. Os relatos no Android Market vão dizer se a performance está legal 😉
  • Use ferramentas como asyncTask;
  • Use uma ProgressDialog para mostrar que sua aplicação continua funcionando (isso é útil se algo demorar mais de 200ms(!));
  • Sobre desenvolvimento voltado para performance:

1 – É bom usar variáveis static, constantes final e getters e setters;
2 – Usar floats e enums é doloroso;
3 – Usar Reflection é doloroso e lento (independente da versão do Android);

Tim Bray apresentou uma demo usando o software LifeSaver, mostrando o gráfico de consumo de recursos (Garbage Collector, basicamente), e como analisar os possíveis pontos de falha de uma aplicação (o link da aplicação aponta para o próprio site do Tim Bray, com um post que faz alusão a maioria das citações dessa palestra, vale a leitura!).

Como mensagem final, Tim deixou a seguinte frase: “Premature optimization is the root of all evil” (Donald Knuth). Ela é original de um artigo escrito para a ACM Journal Computing Surveys, em 1974 (!), chamado “Structured Programming with go to Statements” (P.S. : Leia também “Otimização de Software: Quando? Onde? Porquê?“).

Na verdade, a frase completa é: “We should forget about small efficiencies, say about 97% of the time, premature optimization is the root of all evil”. Ou seja, é preciso ter cuidado com otimizações extremamente específicas, ou optar por uma “visão cega por performance 100%” (que não existe, métodos ineficientes sempre vão existir) na concepção  e decorrer do projeto, pois perde-se tempo útil com isso. O assunto é bastante extenso, mas é prato cheio para discussões!

O carisma do Tim com o público, o modo de apresentar o conteúdo e o estilo Crocodilo Dundee (ou Indiana Jones) fizeram das palestras do Tim as melhores no evento!

Painel VC: Empreendedorismo, Incubação e Capital de RiscoDon Dodge, Eric Acher, Humberto Matsuda, Alex Tabor


Essa última sessão estava na minha lista das mais esperadas, já que essa “hype“/”buzzword” chamada empreendedorismo é uma das tendências mais discutidas e importantes hoje. Conheço muitas pessoas que estão partindo para esse novo rumo e aprendendo bastante sobre o assunto. A experiência para a maioria que está empreendendo é muito rica e abrangente, seja na parte técnica, de processos (ciclos de produtividade e desenvolvimento), profissional e pessoal/relacional. De maneira mais próxima estou acompanhando o pessoal do Vizir, que estão fazendo um trabalho excelente. Logo, gostaria de tomar partido das novidades a partir dos especialistas! 😉

O pessoal vê como startups de sucesso aquelas do Vale do Silício apenas (ou principalmente), mas podem (e devem) ser construídas e financiadas em qualquer parte do mundo. Nesse painel os investidores de capital de risco (o Eric Acher e o Humberto Matsuda, principalmente) mostraram que estão investindo em startups no Brasil, fortemente. E os aportes financeiros chegam a 5 milhões de reais, um valor importante e bastante valoroso no financiamento de empresas, principalmente dos ramos de negócios de internet e tecnologias de educação (o foco dos investidores aqui no Brasil).

O pessoal passou boas dicas de como entrar numa incubadora, ou como ser financiado por um investidor de capital de risco ou “Angel Investor“. O Alex Tabor, CTO e co-fundador do Peixe Urbano, falou de suas experiências e como a sua idéia se tornou o primeiro e maior site de compras coletivas do Brasil.

O André anotou muito mais coisas do que eu, portanto vou aguardar o post do pessoal do Vizir sobre o assunto (certo André? :-p ), já que ele fez a cobertura e trocou algumas idéias com os palestrantes após o painel 😉

Muitas pessoas aproveitaram o final do painel pra fazer perguntas para os participantes, durou um bom tempo isso, provando que o assunto está em alta mesmo!

Encontro Social GTUG

E não é que o pessoal do SP-GTUG ganhou um espaço na sala[1] para divulgar seu trabalho 🙂 O Paulo Fernandes foi o responsável por fazer uma pequena apresentação do que é o SP-GTUG, nossa lista de discussão e o que está sendo produzindo. Foi apresentado um histórico das reuniões presenciais já feitas, sobre API’s do Google, Android, GAE, etc. Há em curso o projeto de reformulação do site do grupo para o GAE, baseado em Python, que terá continuidade em pouco tempo.

Foram também chamados ao palco os integrantes de outros GTUG’s, como o GTUG Belo Horizonte e GTUG Salvador. Foi legal para saber como anda o crescimento da comunidade pelo Brasil, sendo que essas iniciativas se deram a pouco tempo aqui no Brasil, cerca de 1 ano atrás, e que o pessoal está animado para continuar gerando material pra comunidade.

Um ponto legal pro pessoal que estava presente  foi a oportunidade de ver a aplicação vencedora do Rafael Ferreira (U3B – Use it before become broke) no 1º concurso para alunos da Globalcode sobre GAE, com incentivo do SP-GTUG. Nesta versão beta ele usou XMPP, GWT, GAE e BigTable. Para os interessados no projeto, o Rafael escreveu um post no seu próprio blog. Ficamos no aguardo de novos projetos relacionados as ferramentas do Google nas comunidades 😉

Ao final houve o sorteio de vários brindes para o pessoal presente, como chaveiros do Android, adesivos para notebook, camisetas e etiquetas do grupo. Foi divertido e o pessoal só arredou o pé no fim!

P.S. : fiquem de olho pois vai rolar um sorteio de um celular da Sony Ericsson com Android para os seguidores do SP-GTUG 😉

Happy Hour (coquetel), mais networking, camiseta do EuAndroid, etc…


Emendando esse final de evento houve um coquetel (happy hour), pro pessoal de todas as comunidades descontraírem, depois de um evento assaz cansativo (ufa!).

Legal foi conhecer uma galera “sinichtra aê” do Rio de Janeiro, que vai agitar a criação do GTUG-RJ. Esse pessoal está desenvolvendo o trabalho do “Eu, Android”, um site com tutoriais, notícias, podcasts, reviews e dicas de desenvolvimento para Android, tendo como objetivo se tornarem referências do assunto. Fui até entrevistado! (sei lá quando vai pro ar :-p ).

E como esse mundo é pequeno, fiquei sabendo que eles fazem parte de comunidades de desenvolvimento do Rio e conhecem o pessoal delas, como DevInRio, ForkInRio, PythOnRio e #HoraExtra. Vão aos dojos de Arduino, Ruby, Python e estão palestrando por aí. Pessoal fera! Com certeza iremos auxiliá-los no que for possível para o avanço do GTUG (isso serve para qualquer outro que venha a surgir) e quando houver a oportunidade de fazer eventos entre comunidades estamos aí!

Bom foi ver que nomes como Fábio Akita, “Irmãos Caelum” (Guilherme e Paulo Silveira), Rodrigo Yoshima, Guilherme Chapiewski, Marcos Tapajós, Henrique Bastos, Ramon Bispo (ramonpage), Álvaro Justen (turicas) e outros nomes relacionados ao desenvolvimento foram citados como “comum de dois”: importantes e bastante relevantes para a comunidade paulista e carioca de desenvolvimento. #WIN

No final acabei ganhando uma camisa do projeto do pessoal, muito legal! Quem quiser trocar idéia com o pessoal é só seguir o Andre Oliveira, Diego “Dukão” e Willen.

Conclusão

Nessa semana do GDD2010 tive que abrir mão de participar da RubyConfBR, que ocorria na mesma semana. 3 dias “full” fora da empresa ia ser complicado…rs. Mas o pessoal da empresa que foi ao RubyConf aprovou o evento, e eu digo o mesmo do meu primeiro GDD.

Na minha concepção:

Pontos negativos

  • Wi-Fi muito lento e instável. Em alguns lugares você conseguia conectar e usar (“duras penas”), de outros eram incomunicáveis os roteadores. Será que é complicado achar um “bom fornecedor” de rede sem fio para eventos? A mesma situação já ocorreu no FISL, RubyConfBR, TempoReal, entre outros (quase todos). Já virou ponto negativo e motivo de reclamação “default” do pessoal. É difícil falar de um evento com rede decente, acredito que só a Campus Party nesse sentido…
  • Como ocorrido um dia antes no Android Developer Lab, houve “overbooking”. Isso aconteceu em quase todas as palestras, uma pena. Já tendo em mente essa situação, o pessoal montou salas auxiliares, com áudio e os slides. As vezes até essas salas ficavam lotadas. Acredito que a organização ou não soube dimensionar o local para o público ou convidou pessoas a mais para o evento;
  • Local com número extremamente escasso de tomadas. Poderiam ser liberados alguns filtros de linha dentro dos auditórios. No lounge para descanso, onde haviam puffes, tinham um bom número de tomadas, mas só ali. Nesse ponto o pessoal que foi a RubyConfBR disse que o local era bem provido de tomadas. O pessoal que organiza eventos para o “povo geek” precisa saber que tomadas e wifi são imprescindíveis! :-p

Pontos positivos

  • DJ tocando música boa, algumas até “old school”. Legal a iniciativa do pessoal de deixar uma música rolando no intervalo das palestras 🙂
  • Pontualidade quanto ao horário de execução de cada palestra, intervalos e encerramento do evento
  • Brindes! Ganhei duas camisetas, uma capa para notebook, uma pasta, um bloco de notas considerável, caneta e squeeze =-)

  • Networking, envolvimento com novas comunidades, novas amizades e troca de idéias com as pessoas que só conhecia “virtualmente”

Para aqueles que queiram ver fotos do evento, vejam os links abaixo (usei algumas no meu post aqui):

E quem quiser acompanhar os tweets do evento:

Posts do evento, que já vi até agora:

Bem, acredito que seja isso que eu queria passar. Espero que vocês tenham gostado da cobertura e conforme as palestras, ou informações adicionais, forem liberadas eu atualizo o post.

Ano que vem no GDD2011? Quem sabe…vou torcer para isso!

Até mais!

Novidades na Google App Engine e Google App Engine For Business

Minhas impressões – Ruby+Rails no mundo real 2010 – 29/05/10

Caros amigos e leitores,

Vou escrever nesse post uma cobertura acerca do que ocorreu no evento do dia de ontem e que estive presente, o Ruby+Rails no mundo real 2010, em sua segunda edição. No ano passado também estive presente nesse mesmo evento e fiz um post de cobertura do que aconteceu. Esse ano vou “repetir a dose”…rs. Confiram abaixo!

Panorama

Ontem foi mais um sábado perdido…brincadeira…mais um sábado dedicado a angariar informação ao “portifólio de conhecimento”, como gosto de citar. Estive nesse evento juntamente com o colega de empresa Fabrício Campos. Estávamos motivados e com expectativa alta para a segunda edição do evento, muito pelo que ocorreu no ano passado. Para mim foi a segunda participação no evento, Fabrício estava participando pela primeira vez.

A localização (e a manutenção do local do evento, mesmo do ano passado) do Century Flat facilitou bastante a chegada até o local, muito pela variedade de vias de acesso e disponibilidade de transporte público até a Av. Paulista. Cheguei com um pouco de antecedência (cerca de 8h35 da manhã), fiz meu credenciamento e aguardei até as 9h00 para o início.

Consegui um bom lugar para me estabelecer: perto de tomadas 🙂 Assim consegui manter meu notebook e celular “vivos” até o fim do evento! Apesar de no “fundão” o pessoal ter passado alguns “apertos” para visualizar alguns slides com código…

Abaixo vou colocar um resumo, informações e alguns apontamentos pessoais do que conferi “in loco”.

Wilian Molinari – Abertura do evento e o GURU-SP


Wilian Molinari, a.k.a PotHix, fez a abertura do evento contando para o pessoal o histórico sobre a idéia de criação do GURU-SP, e como eram as primeiras reuniões do grupo: o primeiro e segundo encontro tinham poucas pessoas (cerca de 3 ou 4). As reuniões eram esporádicas, mas conforme a lista de discussão crescia o desejo de se criar um evento crescia também. Assim o “Ruby+Rails no mundo real” (edição 2009, primeiro do grupo) foi bastante produtivo e aumentou consideravelmente o número de inscritos na lista.

A partir disso a comunidade Ruby aqui em SP cresceu e se tornou bastante sólida e ativa. As palestras subseqüentes (a maioria nos encontros mensais do grupo) foram melhores e com mais pessoas. Os encontros tornaram-se mais constantes e muitas outras empresas passaram a apoiar a o GURU-SP (inclusive a que trabalhamos eu e o Fabrício hoje: Voice Technology, que já recepcionou uma das reuniões do GURU-SP).

O GURU-SP hoje conta com alguns projetos e atividades:

Finalizando a abertura, foi passado um vídeo com uma mensagem do Matz (criador do Ruby) para o GURU-SP:

Abaixo a apresentação do PotHix na abertura (via Slideshare):

Douglas Campos & Scalone – Processamento batch – Escalando um sistema sem “fermento”


Nessa primeira palestra, @qmx e @scalone centraram as atenções para o conceito de processamento em batch, fazendo um paralelo (um tanto quanto extenso…) com a produção de pão.

A linha principal de raciocínio era: quando sua aplicação cresce muito e “escala sem esperar”, uma hora ela fatalmente não vai suprir a demanda(e “de repente” vai cair). Nesse ponto é preciso analisar alguns pontos e procurar um culpado (lógico! rs). O banco de dados (DBA), infra (sysadmin), entre outros são os primeiros da lista. O desenvolvedor nunca é o culpado (o famoso: “Eeeuu…que isso….eu não erro” rs). Por isso conhecer e saber desenvolver um sistema que possa processar múltiplas tarefas é necessário.

Para isso eles deram como “solução” o uso de dois processadores de tarefas: DJ e BJ.

Para um processamento de imagens pesadas em batch (ou conversão de vídeo), por exemplo, o mais indicado é uso do DJ. Abaixo algumas características:

Vantagens

  • Documentação e tutoriais vastos;
  • Curva de aprendizado baixa.

Detalhes

  • Sinatra-dj;
  • Compatível com rails > 2.2;
  • Usa daemon ou worker.

Desvantagem

Exemplos de código

Uma outra biblioteca útil para trabalhar em conjunto com o DJ é o delayed_paperclip.

Abaixo as informações acerca do outro framework, o BJ:

Vantagens

  • Mais simples e robusto;
  • Instalação fácil;
  • Curva de aprendizado mais baixa que o DJ.

Desvantagens

Um ponto importante que deve ser sempre ressaltado: DJ e BJ não são balas de prata. Uma outra ferramenta citada na apresentação foi o resque, usado em conjunto com o Redis (banco de dados NoSQL), para criação de filas de uso muito mais rápidas e escaláveis. Tem uma interface de administração legal e é uma solução muito valiosa.

As seguintes ferramentas de monitoração para soluções de processamento em batch foram dadas: Monit, God, Munin. E toda essa palestra se baseou em cases de sucesso, como o da própria AutoSeg (empresa onde trabalham ambos os palestrantes) e GitHub. Aliás, o GitHub também usa um servidor chamado Unicorn, que é faz parte das muitas soluções usadas pelo site para manter-se no ar com estabilidade.

Uma outra fonte muito legal sobre o assunto, que encontrei em pesquisas (o autor desse post mesmo…rs), foi um post do Tobin Harris intitulado “6 ways to run background jobs in Ruby“.

Para encerrar, só queria citar o ponto de que ambos os palestrantes estavam muito dispersos, divagaram demais no começo da apresentação. Até chegar na parte técnica mesmo foi “muito pão e poucas explicações claras”. Houve demora pra chegar no “core” da palestra (apesar das boas pitadas de humor). Mas tirando isso tudo certo…rs.

Abaixo confiram o vídeo da palestra (“produções Agaelebe”, by Hugo Borges, que gravou o evento todo e irá disponibilizar os vídeos a medida do possível):

[blip.tv ?posts_id=3716284&dest=-1]

A apresentação no Slideshare:

David Paniz e Leonardo Bessa – Entendendo metaprogramação e por que magia negra não existe (Voodoo é pra jacu)


O objetivo da apresentação, totalmente cercada por exemplos práticos (e a frase de título foi devido aos exemplos usando classes com o nome “Pica-pau”), era conhecer por dentro a metaprogramação e como ela realmente funciona  dentro da linguagem Ruby. Ambos os palestrantes demonstraram o porque não é um bicho de “sete cabeças” mesmo…rs.

Primeiramente, a definição da Wikipedia para metaprogramação é complicada:

“Metaprogramação é a programação de programas que escrevem ou manipulam outros programas (ou a si próprios) assim como seus dados, ou que fazem parte do trabalho em tempo de compilação.”

O correto seria : Metaprogramação é escrever código que escreve/gera código. Assim fica mais claro (!).

Em Ruby é totalmente aceitável aproveitar as open classes, ou seja, a facilidade que a linguagem dá pra mudar o comportamento de objetos em tempo de execução, ao contrário de outras linguagens (Java e C#, por exemplo). Mas, usar e abusar disso não é legal: deve ser feito com responsabilidade e a medida que for necessário usar, sempre com comprometimento e responsabilidade.

Na apresentação as demos mostradas eram exemplos práticos dos mais variados assuntos: eu realmente posso adicionar um método a um objeto? onde o método fica? que tipo de objeto pode definir métodos? Métodos são adicionados em classes ou objetos?

E para complementar o assunto houveram definições de Singleton Class, Metaclass e EigenClass. Apesar de ser um assunto fora do meu conhecimento, consegui “pescar” alguns conceitos. 🙂

Abaixo o vídeo da palestra, gravado pelo Agaelebe:

[blip.tv ?posts_id=3728666&dest=-1]

E a apresentação no Slideshare:

Hugo Baraúna – Keynote: O que há de novo no Rails 3?


Hugo Baraúna, desenvolvedor Ruby/Rails há 3 anos na Plataforma Tecnologia (empresa focada em projetos/coaching em Rails, onde trabalha também José Valim, core Rails), trouxe um overview acerca das novidades do Rails 3, a ser lançado no segundo semestre de 2010. A maioria das informações se encontram no RailsGuides.

Abaixo os pontos, informações e mudanças mais importantes:

Para quem estiver interessado,  a Plataforma mantém um profile no GitHub com alguns projetos relacionados a Rails 3. Abaixo 2 deles:

  • Mail Form: “Send e-mail straight from forms in Rails with I18n, validations, attachments and request information”;
  • Responders: “A set of Rails 3 responders to dry up your application”.

Abaixo o vídeo da palestra, gravado pelo Agaelebe:

[blip.tv ?posts_id=3721460&dest=-1]

E os slides presentes no Slideshare:

Marcelo Castellani – Rhodes, um framework para o desenvolvimento de aplicações nativas para smartphones usando Ruby


Essa para mim era uma das principais palestras do evento, pois já tinha ouvido falar dessa ferramenta (além do Titanium, que é open source também), para construção de aplicativos para dispositivos mobile (leia-se smartphones) multiplataforma.

O mercado mobile é muito promissor e já é uma realidade, fato. Há perspectivas para que no ano que vem existam mais acessos a internet pelo celular do que pelo Desktop (leia uma das fontes da notícia aqui). Portanto, conhecer e dominar técnicas de escrita de aplicativos para o mundo mobile, e não só para Desktop ou Web, é necessário.

Abaixo uma listagem das features do Rhodes, citadas pelo Castellani na apresentação:

  • Faz parte da “família Rhomobile“, composta pelo Rhodes, RhoSync e Rhohub;
  • Suporte a Iphone OS, Android, Blackberry, Symbian e Windows Mobile. Ou seja, praticamente 95% do mercado;
  • As aplicações são nativas mesmo, para cada plataforma. Não há aplicações web rodando por baixo e mascaradas;
  • O Rhodes possibilita a criação de aplicativos de celular com linguagem Ruby, ou seja, existe ganho de produtividade;
  • A API é bem extensa para todos tipos de celulares;
  • Rhodes é open source 🙂 ;
  • Como vantagens podemos citar uns dos lemas do Java 😉 : Write once, Run everywhere;
  • Há abstração de hardware (não há necessidade de saber a arquitetura física do celular);
  • RhoSync é pago 😦
  • RhoHub tem um plano Free e outros pagos 😦
  • Programa interessante para análise: Pivotal Tracker (Traker-r);
  • Instalação: gem install rhodes / rhodes-setup.  “Very easy” 😉
  • Atenção: o interpretador de Ruby do Rhodes é um subset do Ruby 1.9, portanto não há algumas funcionalidades da linguagem;
  • A parte de persistência é feita através do Rhom: é um mini object mapper disponível no Rhodes (como se fosse um Active Record);
  • É possível criar splash screen (tela de carregamento da aplicação), páginas de tratamento de erro, pode-se definir arquivos específicos por plataforma, usar GPS, câmera, etc;
  • Para usar GPS na aplicação é preciso implementar Ajax. A plataforma Blackberry é a única que não suporta Ajax;
  • Existe uma biblioteca para implementação de testes: Mspec;
  • Licença: livre para aplicativos open source; 1000 dólares para aplicativos que forem cobrados.

Castellani tinha uma hora para apresentar e terminou em 45 minutos (!). Ao final muitas perguntas foram feitas e o pessoal realmente achou o assunto interessante!

A apresentação no Slideshare se encontra abaixo:

E o vídeo da palestra no blip.tv:

[blip.tv ?posts_id=3730009&dest=-1]

Anderson Leite – BDD e Cucumber


Antes de iniciar a sua palestra (e após um longo hiato de espera onde o pessoal dispersou…), Anderson Leite informou ao público que a nova reunião do GURU-SP está marcada previamente para o dia 26/06/10. Mas a data pode ser alterada (pois já existem outros eventos oficiais marcados, como o Agile Brazil e o Profissão Java, por exemplo).

A respeito da palestra, a mesma se centrou em 3 pontos: BDD, Cucumber e Cobertura de testes.

A idéia central é que um software deve ter testes, e devem estar de acordo com a visão do cliente, com o comportamento do software e daquilo que pode ser útil/com finalidade. É sabido que cerca de 80% de um software não é usado pelo cliente final.

Para nos auxiliar a fazer aplicações de valor (usando Ruby) a implementação dos conceitos de BDD se torna necessária. Algumas informações adicionais:

  • Livros indicados para leitura: The RSpec Book e Domain Driven Design;
  • Frameworks de teste baseados em BDD necessitam de uma linguagem de domínio;
  • A linguagem de domínio no BDD deve ser baseada na visão dos stakeholders;
  • No BDD faça o suficiente. Sempre entregue de valor real. Tudo é comportamento. Prefira algo “sem papelada”.

O Cucumber é uma ferramenta para a linguagem Ruby, baseada em BDD, que dificulta a perda de informação acerca de um domínio entre cliente, desenvolvedor e testadores. O Anderson fez alguns exemplos práticos, mostrando cenários de teste, mas para não “chover no molhado” nesse post e colocar informação repetida, eu indico algumas referências para o aprendizado:

Para encerrar ele indicou um projeto para cobertura de testes: relevance-rcov.

E lembre-se: escrever código sem testes é uma #putafaltadesacanagem

Abaixo a apresentação no Slideshare:

E o vídeo no blip.tv:

[blip.tv ?posts_id=3737359&dest=-1]

Cassio Marques – Refatorando Ruby – Técnicas de Orientação a Objetos e Design Patterns Aplicados a Linguagens Dinâmicas


Essa foi a última palestra do evento, ufa! Mas não é aquele “ufa!” de “putz, não vai acabar essa joça não…”, pelo contrário: essa não foi aquela palestra que você não vê a hora de terminar para ir embora. Cassio Marques segurou o público até o final com um tema muito bom e de grande interesse do pessoal, inclusive o meu!

Para explicar e pensar no assunto precisamos responder algumas perguntas como: O que é refatorar um código? Porque mexer no código? Se o código está funcionando porque vou mexer??

As motivações, ou melhor, razão para refatoração em código são muitas:

  • Muitas pessoas usam Ruby mas não sabem orientar a objeto (ainda tem dúvidas do paradigma Procedural x OO);
  • Raciocínio estático;
  • Uso de linguagem nova mas usando hábitos antigos;
  • Organização de código;
  • Modularizar o código;
  • Facilitar manutenção e compreensão do código.

E quais as motivações para usar Design Patterns:

  • Ajuda Ruby a ser “Enterprise”;
  • YAGNI” (eu não conhecia esse termo não…rs!).

E não esquecendo de que escrever, ter uma suíte de testes escritos e uma cobertura de testes é necessário pra verificar uma refatoração.

As dicas sobre refatoração foram:

  • Mantenha seus métodos pequenos e facilitando compreensão e coesão;
  • Dê nome aos parâmetros dos métodos;
  • Uma classe não deve realizar trabalhos que não estejam relacionadas a ela! Tenha coesão;
  • Substitua “números mágicos” por constantes;
  • Encapsule variáveis/propriedades de objeto (como getters e setters do Java);
  • Substitua condicionais por polimorfismo;
  • Simplifique expressões condicionais;
  • Padrões que valem ser estudados para Ruby: Command, Strategy, Delegation.

Abaixo a palestra, disponibilizada pelo Cassio Marques. Deixo meus parabéns para o mesmo pela apresentação e responsabilidade de fechar o evento!

O vídeo gravado e disponibilizado no blip.tv pelo Hugo Borges (@agaelebe) está abaixo:

[blip.tv ?posts_id=3737667&dest=-1]

Conclusão

O evento superou minhas expectativas? De certo modo não, de certo modo sim…(momento Cléber Machado…rs). Se eu fosse comparar com o evento do ano passado, na minha concepção, a grade de palestras do ano passado foi melhor. Esse ano o nível de palestras foi bom (nota 7). O diferencial, sem dúvida, foi a interação do pessoal, que fez muito mais networking e estava muito mais ativo em relação ao ano passado, junto com o aumento do número de patrocinadores e estandes de empresa no local.

Na minha concepção:

Pontos negativos

  • Coffee break fraco;
  • Wi-Fi muito lento e instável. Ano passado não houve disponibilidade de sinal, e esse ano foi praticamente se não tivesse também;
  • Tela de projeção muito baixa, dificultando visão do pessoal do fundo da sala;
  • Houve um hiato muito grande entre a palestra do Castellani e do Anderson, fora o sorteio e o problema do datashow. Nesse momento o pessoal dispersou no “fundão” do local…

Pontos positivos

  • Boa localização
  • Fabrício Campos foi sorteado e ganhou uma mochila da Localweb com alguns brindes dentro! 🙂

Para aqueles que queiram ver fotos do evento, vejam os links abaixo:

E quem quiser acompanhar os tweets do evento:

O Ricardo Almeida escreveu um post no site #horaextra, contendo as apresentações e vídeos das palestras.

Bem, acredito que seja isso que eu queria passar. Espero que vocês tenham gostado da cobertura e conforme as palestras, ou informações adicionais, forem liberadas eu atualizo o post.

Nos vemos no Ruby+Rails no mundo real 2011 e viva a comunidade Ruby em Sampa!

Até mais!

HTC Evo 4G – Uma análise rápida…

Pessoal,

Ontem estive no 4º Bate Papo do SP-GTUG (confiram o post de divulgação no Globalcoders, escrito por mim…rs) onde os assuntos principais foram Java no Google App Engine (@rafanunes) e as novidades do Google I/O 2010 (@robsondantas). Em breve irei escrever sobre o evento (estou aguardando a liberação das apresentações dos palestrantes e mais fotos).

Mas, se não vou falar sobre o encontro agora vou falar sobre o que? Vou falar sobre Android, um dos meus atuais temas preferidos de pesquisa e discussão!

Ontem tive a oportunidade de analisar nas minhas próprias mãos o celular mais poderoso do momento com a plataforma Android: o HTC Evo 4G. O Robson Dantas, palestrante de ontem e que teve a oportunidade de participar do Google I/O teve a grata surpresa de ganhar o aparelho como cortesia da operadora americana Sprint, que fez uma parceria com o Google para o evento.

Junto com o HTC Evo ele ganhou o Google Nexus One, já prometido como parte dos “brindes” da inscrição/participação. Nada mal para um evento de 400 “doletas” (INVEJA ON) 😉

Abaixo vou colocar algumas observações acerca do aparelho, que impressiona mesmo…

Review

Não vou escrever um review completo do aparelho, pois muitos outros existem e existirão. Apesar do aparelho só ser lançado no dia 04 de Junho de 2010 (e eu já ter feito  parte de uma minoria que já analisou o aparelho antes de muita gente…rsrs), eu indico 3 referências para aqueles que queiram ver mais a fundo o que esse “monstro” pode fazer:

Há informação suficiente sobre o assunto e muito detalhada. Deleitem-se!

Vantagens e Desvantagens

Abaixo os pontos relevantes levantados por mim, acerca do que pude ver/analisar em cerca de 15~20 minutos com o aparelho em mãos.

Vantagens

  • O aparelho É RÁPIDO! 🙂
  • O aparelho É MUITO RÁPIDO! 🙂 🙂
  • O chip SnapDragon de 1Ghz + 512Mb de RAM fazem MUITA diferença na performance do aparelho. Imagine rodando a versão 2.2 do Android (vem com a versão 2.1)…
  • A tela de 4.3′ tem uma definição de cores e resolução das imagens excelente;
  • A interface HTC Sense trouxe boas impressões: é mais legal e bonita que a interface do “Android cru” (Non HTC Sense, MotoBlur, SonyEricsson UX e similares);
  • Tem mais áreas de trabalho nativas (no Evo são 7 áreas de trabalho, contra 3/5 da interface do “Android cru”);
  • Saída HDMI para ver vídeo em alta resolução na sua TV (!);
  • O aparelho reproduz vídeo em até 720p de qualidade (máximo valor que os vídeos do youtube permitem executar);
  • Tem uma “perna retrátil” que pode colocar o Evo em posição de porta retrato, facilitando a visualização de vídeos;

Desvantagens

  • Só funciona na rede WiMax/4G americana (não temos essa tecnologia por aqui ainda…);
  • É CDMA, portanto não vai funcionar no Brasil 😦 Quem sabe não saia em breve uma versão GSM…
  • Eu achei grande as dimensões do aparelho, apesar de não ser tão pesado;
  • É preciso usar alguma vestimenta que tenha um bolso de no mínimo 15×10 cm. (alturaxlargura) para carregá-lo com conforto…

Fotos e Vídeos

Disponibilizo aqui algumas fotos e vídeos que fiz com o meu “humilde” HTC Magic (Android 1.6 e câmera de 3.2 megapixels). Agora toda vez que olho pra ele tenho uma ponta de desdém…rs.

HTC EVO 4G é forte candidato ao título de melhor telefone celular

4º Bate Papo do SP-GTUG – Globalcode

Finalizando…

Esse aparelho é muito bom mesmo (tirando o tamanho…)! Ele vem pra ser o melhor modelo de Android do mercado, juntamente/rivalizando com o seu “irmão menor” (somente no tamanho) HTC Incredible. Se você me perguntasse qual modelo eu adquiriria eu diria que um Google Nexus One, pelas facilidades de desbloqueio, hacks disponíveis e preço do aparelho, além da real atualização para a versão 2.2 que os aparelhos vem recebendo.

O Robson infelizmente já vendeu o Nexus que ele trouxe do I/O, e que eu estava de olho 😦 😦 😦 😦  Mas oportunidades não faltarão 🙂

É isso aí! Espero que vocês tenham gostado desse review bem simples do aparelho, que por ora não está aqui no Brasil em versão GSM.

Até mais e aguardo opiniões, comentários, dúvidas e sugestões!

[Divulgação] – MotoDEV Summit 2010 (evento sobre a plataforma Android)

Informação retirada do blog Livro Android. Eu estarei lá! Já fiz minha inscrição, e você?

MOTODEV Summit: O futuro começa aqui!

O MOTODEV Summit é um evento gratuito de um dia organizado para oferecer acesso a tudo de que você precisa para desenvolver em Android, como ferramentas, orientações, conhecimento estratégico de marketing e suporte à comunidade, para ajudar você a criar uma geração totalmente nova de soluções fenomenais para os usuários.

Para conferir a programação do evento e se inscrever entre aqui:
http://developer.motorola.com/eventstraining/summit/brazil10/

Parabéns a Motorola pela iniciativa, e por trazer este grande evento ao Brasil!

Minhas impressões – Sun Tech Days 2009/2010 – Dia 1 (08-12-09)

Caros colegas,

Participei na última semana do Sun Tech Days 2009/2010, evento que aconteceu aqui em São Paulo, contando com a presença de grandes engenheiros da Sun e de ícones da comunidade Java do Brasil, e que tive o privilégio de me inscrever por um “golpe de sorte”, pois abriram-se entre o dia 02 e 03 de dezembro 200 inscrições gratuitas do evento, e tive sorte de me inscrever com sucesso 🙂


Vou disponibilizar para vocês agora um resumo de tudo o que aconteceu de acordo com a minha ótica.

Panorama 1: Para chegar até o local…

Para chegar até o local não foi as mil maravilhas no dia 08 de Dezembro…

Na madrugada/dia dessa data em SP choveu demais e tivemos um índice pluviométrico não esperado para o período, totalmente fora dos padrões. Portanto, vias principais congestionadas e o conseqüente problema do transporte público sobrecarregado. Levei quase 2h30 para chegar até o local (saída: 6h50 – chegada: 9h10!). Graças ao Google, GPS e Maps consegui encontrar o local, pois não conhecia a região e este foi meu primeiro Sun Tech Days 🙂

Panorama 2: Após a chegada

Presenciei uma organização/sinalização de locais/palestras/auditórios muito boa, fora a prestatividade dos envolvidos. Para pegar o crachá de conferencista não demorei muito tempo, além do espaço ser abrigador da chuva (acima de tudo…rs). De cara pude comtemplar as presenças do Marcelo Leal (SUN), Carlos Fernando Gonçalves (JavaNoroeste), Jorge Diz, Vinicius Senger e Yara Senger (Globalcode). Andando mais um pouco visualizei o mito James Gosling (!). Esperei mais 10 minutos até poder adentrar ao auditório principal. Nesse “meio tempo” fui visitar os estandes dos expositores, alguns como OpenSolaris, Oracle (é claro), Sun (é claro [2]) e Locaweb.

Após isso adentrei ao auditório principal para a primeira palestra do dia. Para saber sobre todos os palestrantes acesse esse link.

Boas Vindas ao Sun Tech Days – Luiz Fernando Maluf


Para dar as boas vindas ao pessoal do evento, o diretor para a América Latina da Sun Microsystems, Luiz Fernando Maluf, fez uma rápida apresentação mostrando o cenário no qual se encaixam os desenvolvedores Java (e usuários de tecnologias SUN) e como eles estão relacionados com o panorama do mercado, retorno profissional, técnico e financeiro, visando aproveitar as oportunidades que surgem no mercado de hoje: fim da crise, uso e expansão da plataforma Java pela linguagem Java (e outras) e abordagens acerca de novas tecnologias, como TV Digital, por exemplo. Agradeceu aos JUG leaders de comunidades, caravanas e o público do evento que estava presente.

Showcase de Tecnologia: Inspire-se! – Simon Ritter e Angela Caicedo

Antes do “pai do Java” falar sua “visão futurista” da plataforma, Simon Ritter e Angela Caicedo apresentaram alguns exemplos de aplicação das tecnologias Java e Sun do momento.  As implementações e demos foram mostradas para o público.

Simon mostrou como JavaFX pode ser produtivo, gerando animações com figuras ou vídeos, para Web ou Desktop, sem escrever uma linha de código e usando apenas uma “interface amigável de arrastar, soltar, colocar botões e etc.”. No fundo é o JavaFX Platform Suite, que pode ser usado como plugin para ferramentas pagas como Adobe Photoshop, Illustrator e etc. O objetivo era mostrar a produtividade da ferramenta com o objetivo de criar aplicações RIA com pouco “trabalho” (vulgo escrita de código).

Angela Caicedo mostrou uma tecnologia que achei bem interessante: uma “lousa mágica” usando JavaFX. Se trata de uma lousa de vidro, transparente, que por trás dela havia um projetor multimídia (projetando um quadro negro, lousa) com um Wii Remote em cima captando sinais de movimento e toque feitos com uma luva (a qual ia tocando a lousa ou “escrevendo” na mesma). As respostas eram enviadas via bluetooth para um notebook que processava as coordenadas e passava para uma aplicação JavaFX. Com isso era possível relacionar na aplicação o ponto tocado e a significância disso: se era um botão ativado da aplicação que deveria abrir uma paleta de cores, se era para limpar o quadro e etc.

Esse exemplo mostrou a sinergia de algumas tecnologias, além de Java e soluções SUN, que podem gerar modelos inteligentes tão bons quanto o apresentado.

O que está acontecendo com o Java? – James Gosling


Após o showcase James Gosling subiu ao palco para o frissom dos presentes, que puderam comtemplar o “mito”. O overview de James Gosling estava relacionado com as novidades da plataforma Java: mais de um assunto foi abordado, como JavaFX, NetBeansGlassfishJava EE6 e etc.

Sobre o Glassfish foi mantido o discurso de ser o servidor de aplicação mais rápido, baixado e performático do mercado (lógico…rs). Foram mostrados “gráficos e informações comprovando”. O mesmo está a muito tempo na versão V2, mas a versão V3 (lançada no dia 10/12) terá suporte a Java EE 6. Gosling fez algumas demos mostrando um menor tempo de redeploy para as aplicações, quase instantâneo, evidenciando uma melhoria na capacidade de criação e manutenabilidade de projetos via Glassfish.

Uma das novidades mostradas pelo mesmo foi o lançamento da JavaStore, que no momento está disponível apenas para o público americano, mas que tem previsão de abrangência maior e sair da fase beta no ano de 2010.

Gosling e Tim Boudreau, especialista em Java Card, fizeram uma demo mostrando o novo suporte para contenção de aplicações Web, http e https, embarcados (um servidor web dentro de um chip!).

O NetBeans foi citado como IDE padrão e está na sua versão 6.8 com suporte a Java EE6 também (Gosling indica “jogar no lixo” o EmacsViEclipse, inclusive…rs).

No final da apresentação, e de praxe para eventos da Sun, muitos brindes foram jogados para o público (Camisas da Sun e “Dukes“).

Glassfish V3: O servidor de aplicativos de última geração – Sang Shin


Sang é um velho conhecido do Brasil e de Sun Tech Days: essa foi a sua oitava viagem ao Brasil. Ao olhar para o mesmo sabia que conhecia ele de algum lugar. Voilá! Me veio a lembrança de já ter visto um vídeo no youtube dele “dançando” em uma das edições do Sun Tech Days. Confiram abaixo e tirem suas conclusões…rs.

Alguns pontos a ressaltar da apresentação

  • O objetivo do Glassfish V3 é ser o melhor servidor de aplicações do mercado: é compatível com Java EE 6, modularizado (baseado em OSGi e usando Apache Felix), sem limites de containeres e pode rodar containeres Java ou não-Java;
  • Glassfish tem suporte a mais de 200 bundles OSGi e podem ser desenvolvidos outros mais;
  • Existem 3 tipos de bundles: relacionados a kernel, containeres ou serviços;
  • Monitoramento e gerenciamento através de console web e asadmin;
  • Facilidades de um ambiente composto por Netbeans 6.8 + Glassfish v3 + Java EE 6, tendo-se desenvolvimento e deploy de aplicações “sem dor” e com muito mais rapidez. O deploy/redeploy automático mantém sessões e informações existentes de sua aplicação, mesmo após restart do servidor.

Os demos executados durante a apresentação, e que embasavam a teoria passada, se encontram no site mantido pelo próprio Sang Shin, o javapassion.com (não acessar java.passion.com…é NSFW…rs.). Eis alguns abaixo:

No final de sua apresentação Sang convidou para subir ao palco Jerome Dochez, principal engenheiro da Sun no desenvolvimento do Glassfish, para responder algumas perguntas do público e apresentar o seu overview da nova versão.


Para os interessados, a apresentação de Sang se encontra disponível para download por este link.

JDK7: O futuro da plataforma Java – Simon Ritter


Simon Ritter trouxe um overview para o público com as novidades do JDK7. Os pontos mais relevantes escrevo abaixo:

  • JDK7 está pronto, aberto e em constante desenvolvimento pela comunidade, o JSE7 ainda não está pronto e precisa de alguns pontos para ser resolvido (no JCP);
  • Sobre a linguagem as mudanças são: annotations on java types (JSR308); Project coin e modularidade (JSR294). Vale lembrar que todas as mudanças estão aprovadas;
  • Sobre o core: Projeto Jigsaw (a JSR294 impacta tanto no core quanto na linguagem. Modularidade = Jigsaw); atualização em concorrência e collections (JSR166); novas API’s a respeito de IO (NIO2);
  • Suporte a linguagens dinamicas (da vinci machine project) e Garbage G1 são bem importantes e de grande relevância também;
  • Uma das mudanças interessantes foi o uso de números binários de forma declarativa (int b = 0b01010101, binary b = 0X09AB), separação de grupos de números long por underscore (Long l = 9_938_827_122) e Switch usando string;
  • Gerenciamento automático de recursos: cláusulas try/catch que sempre precisam de um finally para fechar algum recurso (alguma_coisa.close) agora não mais precisam. A JVM gerencia isso (!);
  • Multi catch (2 cláusulas de exceção com o mesmo tratamento): talvez possa voltar no JDK7;
  • Invoke Dynamic bytecode (JSR292).

Sobre o projeto Jigsaw, em particular:

  • O JDK é grande, muito grande (só no JDK6 temos 47 pacotes toplevel e mais de 4000 classes), um problema em relação a tempo de download de pacotes e tempo de startup de algumas aplicações, por se usar bibliotecas demais;
  • Há dificuldade de se criar uma “plataforma fina, concisa e leve”, principalmente para dispositivos mobile dos dias de hoje, por exemplo. Para isso foi criado o projeto Jigsaw.
  • Já existe um projeto  de OpenJDK baseado no JigSaw;
  • A intenção de “código modular” é criar código limpo e bem direcionando para uso, criando uma não dependência de código e uso de bibliotecas entre programadores (commiters) ou código implantado em cliente, não dando propósito a erro. Os módulos terão versionamento, portanto você poderá definir no seu código qual a versão do módulo que você vai querer usar na sua aplicação.

Nessa versão foi bastante pensado nas mudanças a serem feitas, para não cair no erro do assert (java 1.4) e enum  (java 1.5), fato que “quebrou muitos códigos” antigamente. Simon reiterou que “trabalhar mudando e adaptando java é realmente pesado”.

O Lançamento final do JDK está marcado para Setembro de 2010. A plataforma Java tende a fica mais poderosa e abrangente, sem dúvida.

Ginga, Lwuit, JavaDTV e você – Dimas Oliveira & Tamir Shabat


Dimas Oliveira é um grande conhecido da comunidade Java no Brasil quando o assunto é TV Digital. Referência, esteve presente no Profissão Java, Java@TV Digital e OpenTDCTamir Shabat, especialista em desenvolvimento com Lwuit e TV Digital foi palestrante no Java@TV Digital. Em todos esses eventos eu estive presente e vocês podem acompanhar os posts pelos links anteriores (o Java@TV Digital ainda hei de escrever). Nesse Sun Tech Days a apresentação de ambos foi um “compilado” do que já tinha sido apresentado nesses eventos. Abaixo algumas informações dessa apresentação:

  • Perspectiva de no próximo ano termos 25 milhões de tv’s ligadas ao sinal digital, ou seja, é uma oportunidade palpável e direta para desenvolvedores gerarem aplicações, sendo que no ano que vem o Ginga estará mais maduro e a disponibilidade de set-up-boxes tende a ser maior;
  • Histórico da TV Digital não é de hoje: desde 2005 há desenvolvimento;
  • Para que já conhece Java é preciso aprender cerca de 8% a mais de Java para desenvolver para TV Digital;
  • TV interativa = TV + aplicações (não é simplesmente um browser com acesso a internet na TV);
  • Locais de estudo: Forum SBTVDjavatv-developers.


No final da apresentação Tamir mostrou uma demo, usando NetBeans + Lwuit (for TV Digital), de uma aplicação interativa para TV Digital baseada em uma aplicação real que a Rede Globo estaria disposta a usar. Um set-up-box foi usado para demostrar ao vivo os exemplos de interatividade desta aplicação.

Ajuste no desempenho do GC – Simon Ritter


Simon baseou-se para sua apresentação em 4 pontos:

  • Opções para a JVM da Sun;
  • Garbage collector;
  • Garbage first;
  • Dicas para tunning do GC.

No início foi exposta a evolução do gerenciamento de recursos, onde antigamente o desenvolvedor era responsável por alocar e desalocar memória (em C: malloc and free; em C++: new and delete). Hoje no Java só é preciso criar os objetos (“new”). A JVM se encarrega de gerenciar a memória (Garbage Collector).

Basicamente temos 3 tipos de opções, quando gerenciamos o GC:

  • Standard options:  todas plataformas;
  • -X options: não são aplicáveis a todas as plataformas;
  • -XX options: -não são aplicáveis a todas as plataformas e podem precisar de privilégios adicionais para usá-las.

Para maiores detalhes, favor consultar a documentação da Sun.

As dicas mais importantes passadas pelo Simon foram:

  • multi processos e cores criam objetos novos (todos tentam acessar o eden ao mesmo tempo): Solução: -XX:TLABSize=size-in-bytes ou -XX:ResizeTLAB;
  • Serial: indicado para maioria das aplicações para desktop;
  • Paralelo: indicado para maquinas com multiplos cores e bastante memória;
  • “JVM ergonomics”: comece usando -XX:+UseParallelGC e -XX:+UseAdaptiveSizePolicy;
  • Rode a opção -server;
  • As opções -XX:MaxGCPauseMillis=n e -XX:GCTimeMillis=n podem performar, mas não são garantidas;

Sobre GC e escolhas de Design:

  • Serial (-XX:+UseSerialGC);
  • Paralelo (-XX:+UseParallelGC). Para Tuning: -XX:UseParNewGC  e -XX:ParallelGCThreads=n, onde n é o número de CPU’s;
  • Concurrent (-XX:+UseConcMarkSweepGC). Para Tuning: -XX:ParallelCMSThreads=n, onde n é um quarto do número de CPU’s ; -XX:CMSInitiatingOccupancyFraction; -XX:+CMSIncrementalMode (off); -XX:+CMSIncrementalDutyCycle=n% (indicado n=50));
  • Stop the world;
  • Compacting (-XX:+UseParallelOldGC);
  • Non compacting;
  • Coping.

Sem dúvidas o G1 terá melhorias consideráveis para performance e foram mostrados exemplos de diagramas de alocação de memória com as respectivas legendas. Para saber mais, faça o dowload de um paper da Sun sobre o G1, por esse link.

Programação JavaFX para dispositivos móveis – Angela Caicedo


A apresentação foi bastante técnica e com muitos exemplos de código e demos. Foi uma sessão voltada para desenvolvedores que já conhecem a plataforma JavaFX e a plataforma de desenvolvimento de dispositivos móveis. Em resumo foi passado:

  • Introdução a MIDlets, MSA e JavaFX Mobile;
  • Conceitos de Mobile RIA , MVC, “stage e scene” e construção de UI’s;
  • Migrando aplicações de JavaFX desktop para JavaFX mobile;
  • Melhores práticas de performance;
  • Mobile samples e adição de mídias;
  • Demos.

A idéia central é: existem várias aplicações e modos de aplicar JavaFX para mobile devices, e essa é uma tendencia do mercado.

É preciso saber trabalhar com Java Micro Edition,  MIDP e aplicações e Wireless Toolkit (JavaME SDK). Algumas API’s de Java são essenciais: java.lang e java.io, além das específicas para desenvolvimento mobile: java.microedition. Com isso você consegue criar, editar, compilar, debugar, empacotar, testar e fazer deploy de aplicações (ou seja, tudo…rs).

O ambiente indicado para isso: Netbeans 6.8 + WTK (Wireless Toolkit) 2.5.2/JavaMe SDK 3.0.


Em termos de desenvolvimento:

  • Java ME MSA platform (JSR248 – Mobile Service Architechture). Essa é a base e dá suporte a tudo: audio, vídeo, camera, SIP, bluetooth, etc;
  • Para construir aplicações  de UI no MSA use API de alto nível (MIDP 2.0 widgets): é fácil, rápido e tem a beleza nativa de UI;
  • Há outras API’s disponíveis: JSR226 (SVG Tiny 1.1), JSR184 (3d graphics API) e OpenGL, por exemplo;
  • JavaFX mobile cria RIA para mobile;
  • Ao invés de trabalhar com aplicações de media (gimp, photoshop), passar as imagens para o MIDP  e só depois portar para o celular, agora você pode usar qualquer ferramenta de media (gimp, photoshop, adobe), passar pelo editor de media do JavaFX e portar isso para JavaFX mobile direto ou trabalhar via Netbeans para depois portar;
  • Modelo MVC pode ser implementado: Model (dados e sua lógica), View (Rich UI) e Controller (regras de processamento).

Para maiores detalhes e exemplos: http://javafx.com/samples

Linguagens de criação de scripts: opções para a JVM – Simon Ritter


Finalizando o primeiro dia (ufa!) o lema foi: Languages everywhere. Para o JDK7 é imprescindível saber o poder das linguagens dinâmicas e as mudanças que elas trarão. No caso são 4 que se destacam, ou melhor, são as que realmente são levadas em conta: Groovy, Ruby, Scala e Clojure.

Mas porque o número excessivo de linguagens? Liberdade de escolha e diferentes linguagens resolvem problemas de tipos diferentes. Java + todas elas + JVM : muitos poderes! (domain specific languages).

Abaixo um resumo de cada uma delas:

GROOVY

  • Linguagem OO;
  • Sintaxe é muito similar a Java, além de ser compacta e concisa;
  • Groovy herda classes Java e implementa interfaces Groovy ;
  • Permite closure e sobrecarga de operadores (-, +, * ou /), uma “máxima” das linguagens de script;
  • Integração com Java via JSR223;
  • Use groovy quando precisar de novas features que Java não tem pois os códigos se aproximam muito;
  • Meta object protocol – MOP (provê comportamento dinâmico para groovy);
  • Livro indicado: Groovy in Action (Dierk Konig).

RUBY

  • Imperativo, funcional e reflexivo (suporta muitos paradigmas programacionais);
  • Excelente suporte a metaprogramação e reflexão;
  • Suporte a continuação (“congela” um ponto e pode voltar a um anterior);
  • Tudo em ruby é objeto;
  • Tudo é chamada de método (obj.fred é o mesmo que obj.send(:fred));
  • Métodos podem ser invocados com ou sem parênteses.

SCALA

  • Puramente orientada a OO e tudo é objeto;
  • Scala não permite overload do operador true;
  • Array index é acessado por () e não [];
  • Não tem pré ou pós incremento (i++ ou ++i);
  • Arrays são mutáveis (ao contrário de Java);
  • Scala não suporta membros staticos (usar singletons no caso!);
  • Scala não requer construtor (pode ser definido implicitamente num código anonimo e se quiser fazer overload pode usar this).

CLOJURE

  • Modelada em Lisp;
  • Linguagem functional;
  • Funções são stateless;
  • Todos os dados são imutáveis;
  • Tem algumas complicações pois é uma linguagem onde se deve conhecer “onde se colocar as chaves, parênteses, ou chaves”.

A “sacada” é estar por dentro do JDK7 que vai dar suporte a linguagens dinâmicas de forma mais aberta (InvokeDynamic bytecode – JSR292).

Conclusão do dia 1

Como não podia deixar de ser, uma “avalanche” de informação…rs. Apesar de já ter visto muitos dos termos apresentados em outros eventos, sempre é bom revê-los por outras pessoas e com outras explicações. O primeiro dia foi de bom grado para mim, até uma camisa da Sun eu ganhei 🙂 . E a volta para casa mais tranqüila…rs.

Amigos leitores, essa foi a primeira parte do meu relato desse evento. Agradeço desde já os que deram uma passada por aqui e publicarei o mais breve possível a parte 2 da história.

Até logo!

Por um Android mais livre

Artigo retirado do site GuiadoHardware.net.

Jonathan Corbet
26/10/2009

Toward a freer Android
Autor original: Jonathan Corbet
Publicado originalmente no:
lwn.net
Tradução: Roberto Bechtlufft


logo

As plataformas para celulares baseados em Linux não passam de distribuições especializadas. Como acontece com outras distribuições, o sucesso ou o fracasso das plataformas para telefones depende delas conseguirem atender às necessidades de seus usuários. O Android é uma plataforma de grande destaque no momento, resultado da entrada de mais dispositivos portáteis no mercado e também das ações tomadas pelo Google em relação às distribuições derivadas dessa plataforma. Está claro que no momento o Android não atende às necessidades de todos os seus usuários, mas há mudanças em andamento que podem melhorar essa situação.

A poeira levantada pelo Google ao embarreirar o mod Cyanogen para telefones com o Android já baixou. Não dá para contestar a afirmação do Google de que o Cyanogen estava redistribuindo software proprietário de formas não permitidas pela licença. Mas várias pessoas contestaram o bom senso do Google; afinal, esses aplicativos podem ser baixados de graça em outros lugares, e só podem rodar em telefones que já vieram com uma cópia incluída. Logo, impedir sua redistribuição não traz muitas vantagens (se é que traz alguma) ao Google, e essa atitude foi um balde de água fria nas comunidades de entusiastas que promoviam o Android e tentavam aperfeiçoá-lo. Agora essas comunidades estão tentando se reagrupar e continuar com seus trabalhos, mas as regras do jogo mudaram.

Há tempos, Jean-Baptiste Queru tem sido o representante do Google mais amigo da comunidade; é evidente que ele passa bastante ajudando os outros desenvolvedores a trabalhar com o Android. Agora ele é a peça central de uma tentativa de transformar o AOSP (ou “Projeto de Código Aberto Android”) do Google em um projeto merecedor desse nome. Jean-Baptiste descobriu (meio atrasado, diga-se de passagem) qual é um dos principais obstáculos para quem deseja contribuir com a plataforma: a dificuldade de botar para rodar as alterações feitas por essas pessoas.

    O alvo principal do Android são os telefones. Isso significa que, no fundo, no fundo, permitir que os desenvolvedores façam sua parte implica em grande parte em permitir que o Projeto de Código Aberto Android seja usado em telefones. E não estou querendo dizer apenas que deve ser possível compilar e inicializar o Android neles, mas sim que é preciso que ele possa ser utilizado em um telefone no dia a dia. E no momento, isso não é possível. A variedade de aplicativos é muito limitada, nem todos os aplicativos funcionam e há algumas probleminhas esquisitos no sistema.
    Também não faz sentido esperar que todos os contribuidores tenham que aplicar o mesmo conjunto de patches manuais para obter um estado funcional básico. O certo seria o Projeto de Código Aberto Android funcionar de primeira em hardware mais difundido.

Qualquer um que já tenha tentado compilar e instalar o Android sabe que isso não é o que acontece hoje. Parte do problema está no enorme tamanho e complexidade da plataforma Android como um todo; e não há muito que se possa fazer nesse sentido. Mas até os donos daquele modelo de telefone voltado para os desenvolvedores do Android (o Android Developer Phone, ou ADP1), que obviamente esperavam poder desenvolver aplicativos para seus telefones, têm que conseguir um conjunto de componentes proprietários e incorporá-los ao pacote todo. Sem falar no problema dos aplicativos proprietários. Um Android totalmente livre não tem mapas, gmail e agenda, nem os aplicativos do Android Market ou os back-ends de sincronização que mantêm o sistema atualizado com a nave-mãe. Não dá para se virar com uma versão dessas em um telefone usado no dia a dia.

De acordo com Jean-Baptiste, é bom começar pelo hardware em que o Android funciona com facilidade: o ADP1, obviamente. Depois que os problemas com o hardware forem superados, pode ser uma boa ideia começar a conversar sobre os aplicativos que estão faltando. Mas até que os desenvolvedores possam criar com facilidade uma versão que rode em um telefone de verdade, não faz muito sentido se focar em objetivos maiores. Com a iminente chegada do AOSP 1.0, parece que a etapa preliminar está prestes a ser concluída.

Não deve ser tão difícil resolver os outros problemas. Se o aplicativo do gmail não for disponibilizado, dá para ler email por IMAP — e isso pode inspirar alguns a aperfeiçoar o aplicativo de email duro de engolir que vem com o Android. Há muita gente interessada em utilitários gratuitos para mapas, incluindo ferramentas como o AndNav, que tem potencial para superar o programa de mapas do Google. O AndNav funciona com dados do OpenStreetMap e faz navegação curva a curva, algo que a ferramenta do Google provavelmente nunca será capaz de fazer. O SlideME é oferecido como substituto gratuito ao Android Market. E por aí vai.

A parte mais difícil talvez inclua as ferramentas que exigem sincronização com os serviços do Google; esses protocolos nem sempre são abertos. Já ficou claro que o Projeto de Código Aberto Android, hospedado no Google, não vai hospedar software desenvolvido para protocolos que tenham sofrido engenharia reversa. Logo, se o Google continuar se recusando a disponibilizar os back-ends do gmail, da agenda e do Android Market, esses aplicativos simplesmente não serão suportados nas versões livres. É claro que nada impede a implementação de aplicativos que se sincronizem a serviços hospedados em outros lugares.

Outra área em que a presença do Google se faz notar no projeto é na licença:

    A (L)GPL 3 está completamente fora de questão — a indústria de celulares tem tanto medo dela que todo o ecossistema do Android seria prejudicado se código com essa licença entrasse no Projeto de Código Aberto Android.

A GPL 2 talvez possa ser permitida em componentes novos, mas dado o esforço que o Android vem fazendo para evitar software licenciado por ela, acho que vai ser difícil.

Quem procura por um projeto mais independente pode se interessar pela Open Android Alliance, que está tentando criar uma versão totalmente gratuita do Android, sem a participação do Google. A página do projeto (hospedada, ironicamente, no Google Code) afirma que os novos trabalhos serão licenciados sob a GPL 3. Parece que os desenvolvedores da OAA não estão atados à GPL 3, mas certamente há desenvolvedores que gostariam de ver alguma licença de copyleft ser usada. Se o Google não ajudar e eles tiverem que reimplementar os aplicativos, dizem eles, o certo é que o Google não possa usar o código deles e distribuí-lo em outros aplicativos proprietários.

A Open Android Alliance tem vários desenvolvedores que supostamente estão trabalhando em diversos aspectos desse problema. Mas parece que ele não têm uma lista de discussão e nem disponibilizam código algum para download. O projeto nasceu recentemente, e sua viabilidade a longo prazo ainda não pode ser determinada.

O que está claro é que as pessoas levam a sério a ideia do “telefone aberto”. Não basta jogar um monte de código em um servidor git online; muita gente quer esmiuçar os dispositivos que possui. O Google talvez esteja começando a perceber isso, embora venha tendo problemas para equilibrar a pressão da comunidade de desenvolvedores, das operadoras de celular, dos fabricantes de hardware e de seus próprios advogados. Ainda não ficou claro se essa percepção vai se traduzir em um nível de abertura suficiente no projeto Android, mas parece que as coisas estão tomando o caminho certo.

Pelo visto, a possibilidade do Linux “dominar o mundo” no mercado de telefones está ao nosso alcance. Mas quais distribuições Linux vão participar desse sucesso? Há vários telefones com o Android por aí, mas há um número ainda maior baseado em outras distribuições Linux e na plataforma LiMo. Em breve (talvez não tão “em breve” quando alguns de nós desejariam) haverá telefones com o Maemo para nós brincarmos, e não seria de se surpreender se telefones com o Moblin aparecessem num futuro não muito distante. Algumas dessas plataformas vão se sair melhor do que outras no mercado. E é bem provável que a plataforma mais aberta, que atraia o maior número de desenvolvedores interessados, seja a vencedora.

Créditos a Jonathan Corbetlwn.net
Tradução por Roberto Bechtlufft <info at bechtranslations.com.br>

Symbian Vira Open-Source

Mais um SO para celulares “aderindo” a “onda open source”. Será que há fôlego para competir com o Android? Notícia retirada do fórum Under-Linux.

O Symbian, sistema operacional que já foi no passado adotado por vários fabricantes de celulares, está sendo liberado via licença open source.

Dia 21/10 a Symbian Foundation anunciou que estaria liberando acesso ao kernel (EKA2) e o seu respectivo kit de desenvolvimento sobre a EPL (Eclipse Public License). Segundo a Symbian Foundation, com este já são 16 componente Symbian (e este o mais importante) publicados em open source.

Kit Completo

O kit completo de desenvolvimento de aplicações está sendo fornecido sem custo. Esse kit pode ser baixado do site Category:Kernel & Hardware Services – Symbian Foundation e é composto de, entre outros:

  • Kernel open source e seus pacotes complementares
  • Ambiente de simulação e testes
  • Bibliotecas complementares

O Futuro dos Celulares e o Open Source

Dentre os principais fatores que os usuários usam para selecionar um telefone celular, a disponibilidade de aplicativos é um dos mais importantes. Mais importante, por exemplo, que a resolução da câmera embutida ou a disponibilidade de Blue Tooth.

E a facilidade de desenvolvimento de novas aplicações é um benefício que o os sistemas open source podem dar aos fabricantes de celulares. Isso é um dos fatores que explicam porque cada vez o mundo dos celulares é tomado pelos sistemas open source.

A Nokia, que adquiriu o Symbian, já anunciou que vai focar seu uso nos telefones e smartphones de nível médio e investirá no Maemo para os telefones e equipamentos de mais alto nível.

Para quem não sabe, o Maemo é um sistema operacional para celulares baseados no GNU/Linux. E também para não deixar ninguém esquecer, o Google Android também é um sistema operacional para celulares baseado em Linux.

Saiba Mais:

[1]EPL RELEASE OF MICROKERNEL DEMONSTRATES PROGRESS TOWARDS OPEN SOURCE GOA
[2]The Home Of The Maemo Community