Minhas impressões – Campus Party 2011 – Dia 4 – 20/01/11

Veja também:

Olá caros amigos leitores,

Eis que chegamos ao 4º dia da Campus Party, mais da metade do evento já transcorreu e nos aproximamos da reta final. Abaixo vai o resumo rápido do que eu vi nesse quarto dia.

Panorama

Nesse quarto dia tudo ocorreu sem problemas graves, incrível! Não houveram quedas de energia e internet, para felicidade de todos 🙂 Me programei para assistir duas palestras, uma de JavaScript e a re-ascensão no cenário atual de desenvolvimento e outra sobre a Wikileaks e liberdade de informação. No resto do tempo aproveitaria a feira e a internet 😉

Confira os resumos das palestras abaixo.

Palestra: JavaScript: agora é sério – Luciano Ramalho

O Luciano Ramalho, muito conhecido na comunidade Python brasileira, trouxe para o público uma visão de como o JavaScript está em reascensão entre as linguagens, inclusive ganhando crédito com ele mesmo. As facilidades e suporte do HTML5, navegadores web (até do IE9, vejam só :-p ), o crescimento das plataformas móveis entre outros transformaram JavaScript numa opção muito “atraente” para aplicações baseadas em RIA.

Para introduzir o assunto para o pessoal, ele deu uma introdução acerca da linguagem (desmistificação do nome JavaScript, fundação do padrão ECMAscript, entre outros pontos). O artigo na Wikipedia acerca do JavaScript (em inglês) é aceito como uma das melhores referências iniciais sobre o assunto, até mesmo pelos acadêmicos.

Como foi desenvolvido pelo Netscape e pela fundação Mozilla, então é comum que as novidades, updates e suportes novos sejam testados e lançados primeiro no Firefox. Para quem é desenvolvedor essa é uma informação importante. O padrão suportado pela maioria dos navegadores é o ECMAScript3, mas a versão mais atual é o ECMAScript5.

Para quem é oriundo de linguagens do paradigma OOP, poderá encontrar alguns percalços para entender o paradigma de programação funcional (presente nas funções de primeira classe) e a tipagem fraca (muito observada na análise de validação de condições booleanas) de JavaScript, por exemplo. Uma crítica construtiva foi feita acerca disso: nos centros universitários do Brasil é comum o ensino da linguagem Java, em sua maioria (juntamente com C/C++ em outras). Os alunos não tem contato com outros paradigmas de programação. Seria interessante, para aquele que conhece Java, aprender outra linguagem funcional ou com elementos de programação funcional (importância do Programador Poliglota).

Iniciativas ligadas ao JavaScript, como o HTML5, Canvas, Node.JS e outras, fizeram JavaScript renascer e retomar importância no cenário da programação moderna. Por isso o título da palestra.

Para os interessados em discutir seriamente esse novo momento da linguagem o próprio Luciano criou o grupo JSPro, no Google Groups, para discussões avançadas sobre essas novas tecnologias.

Livros indicados? Dois:

Acessem também a tag JavaScript do Delicious do Luciano, #ficadica.

Abaixo os slides apresentados:

Visita as tecnologias da Área Expo

Aproveitei o hiato do horário do almoço e começo da tarde para visitar estande por estante da área expo. Eu e o Fabrício Campos fomos ver as novidades relacionadas a tecnologia por lá. Os mais bacanas foram o simulador de F1 da AMD, um desktop ligado a 5 TV’s (com resolução fina de 6000×1600) para jogar Street Fighter 4 (usando a tecnologia Eyenfinit) e o Kinect, que eu ainda não tinha visto em ação. Todos são muito interessantes, diversão na certa!

Para quem tiver oportunidade de comparecer como visitante: a programação de apresentações dos projetos “Campuseiros empreendem” e “Campuseiros inventam” está na área expo, com acesso livre ao público. Muitas idéias e startups estão apresentando projetos lá, venha conferir!

Para quem gosta de apetrechos “nerds” a LinuxMall está com um estande vendendo de tudo (verei se no último dia de evento compro uma camiseta…rs). O Terra está com a rádio Sonora aqui e umas picapes para DJ’s, depois irei para fuçar, dizem que tem uma balada silenciosa com fones de ouvido :-p O estande da Vivo está com alguns modelos de Tablet com Android para “teste drive” (ZTE, Dell e Samsung), apesar de eu ainda não curtir a idéia do tablet, vale pelo conhecimento da nova tecnologia.

Para os interessados em presenciar essa atmosfera do evento é um passeio legal (não deixando de ser nerd) para o fim de semana 😉 #ficadica

Debate: Toda informação deve ser livre? – Sergio Amadeu (UFABC), Fabio Zanini (Folha de SP), Marcelo Trasel (PUC-RS), Daniela Silva (Esfera)

A Wikileaks executou vazamento de documentos secretos dos mais variados países. Constrangeu governos e abriu um novo debate sobre os limites da liberdade de informação na era digital: tudo deve ser divulgado? Deve existir transparência completa? Sites que vazam informações sigilosas são aliados ou inimigos da democracia? Em cima das indagações desse preâmbulo, os debatedores formularam respostas e levantaram informações e teorias para explicar esse fenômeno.

No mundo tivemos uma boa parte da mídia apoiando a Wikileaks e divulgando o material proveniente dela de tempos em tempos, como El País (Espanha), The Guardian (Inglaterra), Globo e Folha de SP (Brasil).

Um dos documentos pioneiros que fez a Wikileaks sair do anonimato para o conhecimento do público comum foi sobre o acordo comercial antipirataria (Acta), um acordo para facilitar os membros das indústrias de direitos autorais e patentes dos EUA, algo que já estava sendo “tramado” a dois anos antes. O vídeo do helicóptero americano abatendo inocentes e 2 jornalistas da Reuters na guerra do Iraque foi “o fim da picada”.

Dentro desse panorama temos alguns confrontos para se pensar:

* Poder dos ativistas X poder da mídia tradicional – com o alcance da Internet, a maior interatividade do público com a informação e a facilidade de mobilização, a rede é tão poderosa (ou mais) quanto a mídia tradicional (que na maioria das vezes é apoiada pela máquina do estado);
* Quebra da infra-estrutura principal do site da Wikileaks X Levantamento de novos nós e endereços na rede (distribuição descentralizada de informação de todos os documentos, via torrent);
* Liberdade de expressão ambígua: Wikileaks X Falha de SP X Lula é minha anta (livro do Diogo Mainardi);
* Ditaduras do capital bloqueando as contas do Assange/Wikileaks (uso irregular do poder) X crimes políticos e burocracias judiciais para quebrar sigilo financeiro X DDOS (ataque ou forma de protesto?);
* Poder da rede distribuída de conteúdo e democracia virtual X Poder das operadoras de rede para a Internet nas camadas físicas (cabos e backbones) e lógicas (proxies) + interesses dos estados.

Os jornalistas da mesa revelaram que as matérias que saem no Globo e Folha de SP são feitas em parceria com o pessoal da Wikileaks. Discussões conjuntas são feitas para formatação e produção de conteúdo a ser divulgado, relativo aos documentos vazados (lógico, os de interesse de todas as partes).

A frase que marcou a apresentação pra mim, e que faz sentido pra todos os leitores tenho certeza, é:

“Nos dias de hoje o difícil não é falar, o difícil é ser ouvido.”

A comunidade, a rede de usuários e a democracia internética são os meios que nos permitem ser ouvidos.

Eu gostei bastante dessa palestra, deu pra ouvir coisas bem interessantes, ótimos pontos de vista e gerou muitas perguntas. Uma das perguntas foi minha ao pessoal da mesa, no fim do debate: o próprio EUA não pode estar sendo “beneficiado” e usando tudo isso como argumento para aumentar o cerco na internet? Em nenhum momento eles disseram “Não, tudo mentira, calúnia!”. Aceitaram tudo até agora calados… Assange é herói ou vilão nesse jogo de interesses? Quem é a Wikileaks na verdade?  #conspirationfeelings

E pra minha surpresa essa é uma das perguntas que um o Marcelo Trasel faria a Assange na entrevista do próximo mês para a revista Carta Capital 🙂

Participe de uma petição, divulgada pelo Sergio Amadeu acerca da liberdade de expressão e o direito à informação, contra a perseguição ao Wikileaks, ao FALHA de S.Paulo e ao CMI.

Conclusão

Com o saldo de quatro dias sinto que está sendo bem interessante seguir uma trilha mais voltada pra assuntos não-técnicos aqui na Campus Party (empreendedorismo, liberdade de informação, licenciamento de software, redes sociais, etc). Mas os assuntos técnicos também tem seus lugares (Node.JS foi bacana, TV Digital, Android, etc.).

Espero que tenham gostado. Amanhã divulgo o dia de sexta.

Até mais!

Minhas impressões – Campus Party 2011 – Dia 3 – 19/01/11

Veja também:

Caros colegas

Eis que 3 dias de evento já se passaram, estamos próximos da metade do período de Campus Party 2011. Aqui estou eu novamente para relatar as novidades do terceiro dia de evento. Espero que gostem, será bem curto 🙂

Panorama

Esse terceiro dia, de acordo com minha agenda seria de poucas palestras (na verdade uma única do meu interesse…rs) e bem mais uso do computador, interação com a área Expo e pra conhecer a Campus Party como um todo.

Palestra Startup: As não-lições do Silicon Valley


O objetivo da palestra era “desmistificar” o Silicon Valley, mostrando que lá não é  O “lugar perfeito” para os empreendedores. Não basta você viajar para a Califórnia com uma idéia na cabeça, um plano de negócios e você voltará para o Brasil com um aporte de dinheiro e suporte a sua Startup. O pessoal da ResultsON, que esteve no Vale do Silício deu exemplos de quais são os erros e problemas mais comuns no Vale e como o Brasil pode aprender com eles. Não há um modelo perfeito para conseguir entrar lá, e ainda mais: sem o famoso QI (quem indica) você não consegue horário para falar com qualquer investidor, ressaltando cada vez mais o conceito de networking.

A cultura empreendedora nos centros universitários americanos (Stanford e outras universidades do Vale do Silício, por exemplo) é feita para formar empreendedores e idéias úteis para a sociedade. Aqui no Brasil temos uma propagação de cultura limitadíssima a respeito do assunto: nossas universidades mantém o mote de formar engenheiros para o mercado.

No momento estamos vivendo um momento único de oportunidades, que o empreendedorismo digital nos proporciona. O Brasil é um dos países onde há maior criatividade em termos de soluções baseadas em redes sociais, e o reflexo disso são os futuros investimentos e a chegada do Silicon Valley aqui em curto prazo 🙂

Abaixo algumas frases que marcaram a palestra, achei bem importante esses pontos de vista.:

“Há falta de investidores no Brasil que falem a linguagem dos empreendedores. É preciso haver uma re-educação de algum dos lados”.

“Precisamos de mais pessoas fazendo empreendedorismo de alto risco, “indo pro pau”.

A palestra, rapidamente, já está disponível no site da ResultON. Confiram abaixo o vídeo no youtube:

Amigos e GTUG-SP

Encontrei aqui na Campus Party o Bruno Moraes, do GTUG-SP. Gente boa, trocamos idéias a respeito dos projetos do grupo (novo site, sessões de coding dojo, etc.). Sentimos falta de mais membros do GTUG presentes até o momento aqui no evento, para quem sabe fazermos uma reunião. O Renato Santos, Renato Mangini (GTUG-BH), Gustavo Uchoa e o Wesley,  ainda não apareceram…

Fizeram companhia aqui durante o dia de ontem o André Pantalião, Daniel Bronzeri (acampando como eu) e Roberto Elvira.

Que-Fala! e a fama do Bronzeri

O projeto Que-Fala! do Daniel Bronzeri para o Campuseiros Inventam está dando o que falar por aqui, ele está dando entrevista a “torto e a direito” (próximas serão para Gazeta, Globo e Terra) 🙂 Foi um dos selecionados para a fase classificatória, bem repercutido por todos que participam da competição, e candidato a finalista.

Para quem não conhece vale a pena dar uma olhada nos slides:

Conclusão

Dia bom de Campus Party, estou cada vez mais ambientado ao local, as pessoas (apesar de muito estranhas…pude ver o quanto eu NÃO SOU TÃO NERD :-p ), a má organização e as falhas de rede (ontem não caiu a energia, mas teve queda parcial da rede para algumas mesas do campus).

Amanhã tem a parte 4, até mais!

E não deixem de acompanhar as novidades que coloco via Twitter, Picasa e Youtube.

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):

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:

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:

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:

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:

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:

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!

Apresentação sobre “Os seis chapéus do pensamento”

No 8º encontro do GURU-SP, no qual estive presente e hei de escrever um report, aprendi acerca do assunto “os seis chapéus do pensamento”, via Rafael Rosa. Fiquei empolgado com o assunto e além de fazer a aquisição do livro (coisa que o Rafael  não indicou, mas fiz mesmo assim…rs) montei uma apresentação para repassar o conteúdo pro pessoal da empresa onde trabalho (Voice Technology). Abaixo coloco o link da apresentação no slideshare:

Caros leitores: qualquer opinião ou dúvida fiquem a vontade para falar!

P.S. : Fiz a apresentação há 3 horas atrás e o pessoal gostou bastante do conteúdo! A idéia de fazer mais lightning talks na empresa, aparentemente, foi bem aceita e com bom público. Só queria deixar o agradecimento, novamente, ao Rafael Rosa pela “luz”!

Minhas impressões – 1º Bate Papo do SP-GTUG (Globalcode – 03/03/10)

Caros colegas,

Vou escrever um pouco acerca das minhas impressões do 1º Bate Papo do SP-GTUG, ocorrido na Globalcode em 03/03/10. Estive presente em mais esse evento/encontro de pessoas interessadas nas tecnologias do Google. Se você quiser saber mais sobre o SP-GTUG, leia acerca do 1º encontro do SP-GTUG, ocorrido no ano passado (Agosto/2009).

Introdução

Após a primeira reunião do grupo, ocorrida no mês de Agosto/2009, houve um “hiato” em termos de organização de eventos e geração de conteúdo relativos as tecnologias Google, seja no blog do grupo, lista de discussão ou apresentações públicas. Graças aos incentivos, força de vontade e senso de organização do Paulo Fernandes, no começo desse ano foi organizado o 2º encontro do SP-GTUG, também na Globalcode em 06/02/10.

No 2º encontro os membros (alguns novos e outros remanescentes da primeira reunião) rediscutiram as estratégias do grupo, novos colaboradores e como incentivar a geração de conteúdo. Eis que uma das idéias que surgiu foi de organizar “bate papos”, que no final acabam sendo como os minicursos da Globalcode: membros que forem capacitados em alguma tecnologia do Google e se sentirem confortáveis em pesquisar e explicar, fazem uma apresentação para um público alvo interessado. Chegamos ao acordo que, a cada “bate papo”, 2 temas (2 palestras com 1h30 cada) seriam apresentadas e o assunto discutido com o público.

Com base nisso, foi marcado o 1º Bate Papo do SP-GTUG (!). Os assuntos do primeiro bate papo (e os “sortudos” que teriam a honra da estréia) foram:

  • Google AdWords, com Eric Gomes;
  • Opensocial, com Róbson Dantas.

Abaixo um pequeno resumo sobre as palestras.

Google AdWords – Eric Gomes

Eric Gomes, que é especialista em AdWords e já trabalha na área, trouxe a público um overview simples e direto sobre essa tecnologia. O AdWords nada mais são do que anúncios, encontrados em forma de link e presentes em ferramentas de busca (vulgo Google) de acordo com as buscas de um usuário (por meio das palavras  chave). Outros locais que podemos visualizar esses anúncios são  Youtube, Orkut, Gmail, Maps, etc. Favor não confundir AdWords com AdSense!…rs.

Alguns termos mais técnicos (e mais importantes da apresentação) sobre AdWords foram abordados, como:

Não é a toa que as propagandas perfazem, praticamente, o total do valor da renda arrecadada pelo Google, que é de cerca de 97% (Para mais informações ver esse post com os números do Google).

Quer saber mais do assunto? Veja os links abaixo:

Opensocial: aplicações e conceitos – Robson Dantas

“In particular, we’ve identified Robson Dantas (site) as an OpenSocial Guru for consistent demonstration of technical expertise and community involvement.” (Opensocial Google Group).

Para falar sobre OpenSocial nada melhor do que um Guru do Opensocial (como foi definido pelo próprio Google!), ou seja, Robson Dantas. Para não complicar (rs), vou transcrever a definição de Opensocial da Wikipédia:

O Google OpenSocial é uma plataforma do Google baseada em HTML convencional e Javascript. Uma API (Interface de Programação de Aplicativos) aberta [1] que permite que desenvolvedores criem widgets (aplicações ou add-ons) para rodar dentro de redes sociais [2] que aderirem à plantaforma OpenSocial. As redes sociais que já aderiram são o Orkut, MySpace, Friendster, LinkedIn, hi5, XING, Plaxo, Ning, Oracle, Viadeo e SalesForce[3].

O Robson passou para os presentes um panorama do desenvolvimento e oportunidades que podem ser aproveitadas nas redes sociais do Brasil e do mundo. Alguns números interessantes sobre esse nicho são:

  • Mais de 85% dos internautas usam redes sociais, seja Orkut, Facebook, Sonico ou outras;
  • No Orkut: 22 milhões de usuários. Acesso: 28 visitas ficando 496 minutos/mês.

Podemos explorar esse nicho desenvolvendo um ambiente formado por: Opensocial + aplicativos + criatividade (simples, sociais, atrativos e “virais”). Trazendo para a realidade temos alguns cases de bastante sucesso, como Buddy Poke, Mafia Wars e Farm Ville.

Alguns termos mais técnicos (e mais importantes da apresentação) sobre Opensocial foram abordados, como:

  • Opensocial API;
  • Conhecimentos que um desenvolvedor precisa ter: HTML, Javascript e outra linguagem (Java, PHP, Python, etc.);
  • Ferramentas a serem usadas: Firebug, Opensocial plugin, Sandboxes, Partuza, Shindig, OSDE;
  • Demo: Shindig + Opensocial e gadget “Hello World”;
  • Visão de mercado: desenvolvimento de plataformas de mídia, jogos online e aplicativos sociais (inclusive no próprio Google!).

Quer saber mais do assunto? Veja os links abaixo:

Conclusão

O encontro reuniu por volta de 20 a 25 pessoas, uma média considerável para um horário das 19h as 22h de uma quarta feira. E já teve 2 palestrantes de muito bom nível em sua primeira edição!

Espero que outros bate papos possam acontecer, e mais “especialistas” e interessados se disponham a apresentar. Mas, é importante ressaltar: nem só de apresentações viverá o grupo! Temos em mente que precisamos de mais colaboradores criando conteúdo no blog, participando dos eventos, enviando dicas na lista de discussão e oferecendo outras localizações para as reuniões do grupo (quando o auditório da Globalcode estiver ocupado).Participe da lista de discussão do SP-GTUG e dê sua opinião também!

Mais uma vez fica o agradecimento (e acredito que dos demais também) ao Paulo Fernandes de dar o “pontapé inicial” nessa iniciativa de angariar “sangue novo” para o grupo e estar organizando os encontros. Agradecimento também vai para a Globalcode, que pela terceira vez em três encontros (rs) cede o espaço gentilmente ao grupo.

Agora alguns avisos para os possíveis novos encontros (e bate papos). Já existem pessoas interessadas em apresentar alguns temas relacionados as tecnologias do Google. Abaixo listo alguns:

* Deise Garrido – Adsense

* Rodrigo Ribeiro (Isso mesmo: o “paguá” que escreve esse post…rs) – Android

* Paulo Fernandes – Overview de algumas tecnologias Google (a definir)

* Fabio Gama – Open Social, Maps, AppEngine

* Octavio Turra – Wave, Chrome

* Fernando Masanori – Python no AppEngine

Portanto não perca os “próxmos” capítulos! Interessado em participar? Venha discutir conosco! Acesse: http://groups.google.com/group/sp-gtug

Bem, por enquanto é só! Espero ter sido claro com as palavras e ter passado conteúdo útil com este post.

Até mais!

Dojo com Program-ME e Arduino na Globalcode – 10-12-09

Como diz o ditado: “antes tarde do que nunca” 🙂

Com um pouco de atraso vou divulgar aqui algumas informações a respeito da minha participação no Dojo com Program-ME e Arduino, que aconteceu no dia 10 desse mês (a uma semana exatamente) na Globalcode (Unidade São Paulo). Por lá tive a felicidade de encontrar um companheiro de trabalho (Alex Moraes), que também é interessado em programação, novas tecnologias e participa do grupo de Ruby da Fatec-SP.

A questão é: o que é um dojo (mais precisamente coding dojo) ?

Vou usar como referência um texto retirado da página do Coding Dojo UFSC:

Segundo o http://codingdojo.org/: “Um Coding Dojo é um encontro onde um grupo de programadores se reúne para trabalhar em conjunto em um desafio de programação. Eles estão lá para se divertir, e, através de uma metodologia pragmática, melhorar suas habilidades de programação e de trabalho em grupo.”

O Coding Dojo tem algumas regras básicas:

  • Desenvolvimento guiado por testes: Antes de fazer qualquer implementação, deve ser escrito um teste, que ao passar indica que a implementação está correta.
  • “Passos de bebê”: Se um teste não está passando, você deve escrever o código mais simples possível que faça o teste passar. Quando for escrever um novo teste para o mesmo método, escreva um teste que teste só um pouquinho a mais da funcionalidade desejada.
  • Pair programming: A programação é feita em duplas. Cada dupla tem um piloto e um co-piloto. Ambos pensam em como passar no teste atual, mas só o piloto digita. Cada par tem por volta de 5 a 10 minutos no seu turno. Quando esse tempo acaba:
    • O piloto volta para a platéia
    • O co-piloto assume o lugar do piloto
    • Um novo co-piloto vem da platéia
  • Todos devem entender: O piloto e o co-piloto devem sempre explicar em voz alta o que estão tentando fazer para solucionar o problema. Qualquer um na platéia pode pedir explicações se não entender algum raciocínio.
  • Três fases: Um Coding Dojo sempre está em alguma dessas 3 fases, dependendo do estado dos testes:
    • Vermelha: Pelo menos um teste não está passando. A dupla da vez deve se concentrar em fazer o teste passar. A platéia não deve falar nessa fase, para não atrapalhar piloto e co-piloto.
    • Verde: Os testes acabaram de ser rodados e todos estão passando. Essa é a hora de quem está na platéia dar sugestões para melhorar o código.
    • Cinza: O código foi modificado de acordo com as sugestões, mas a bateria de testes ainda não foi rodada. Deve-se evitar fazer grandes modificações no código nessa fase.

Qual o objetivo desse codingo dojo (Retirado da página de notícias da Globalcode)?


Neste Dojo, os participante deverão implementar uma aplicação que simulará o antigo brinquedo eletrônico conhecido como Genius.A simulação deverá gerar as seqüências de cores usando LEDs para um jogador interagir fisicamente com aplicação através de botões coloridos para repetir a seqüencia aleatória apresentada. O algorítimo deverá então captar essas ações e identificar se a seqüência realizada pelo jogador está correta ou não.

Durante este evento, com a participação especial do Felipe de Almeida Rodrigues (Fratech, ou “cover” do Martin Fowler, rs) e pelo Alberto Spock Lemos (Dr. Spock), que participaram de um DOJO no Linguágil, você aprende aplicar TDD e Pair Programing ao revesar na escrita do código a cada 7 minutos com outros participantes. Portanto, o problema deverá ser resolvido “ao vivo”.

Participando,  voce aprende técnicas ágeis de desenvolvimento, uma linguagem de programação, conhece o Program-ME e o que é computação física.

A minha opiniao do evento

O meu interesse em participar desse minicurso veio da palestra “Robótica Open Source – Vinícius Senger & Paulo Carlos dos Santos”, que aconteceu no OpenTDC 2009, onde finalmente consegui ver ao vivo as coisas acontecendo. Planejo, em futuro próximo, adquirir um kit desses para “brincar”…rs.

Achei legal a experiência e primeiro contato com o Arduino e os meios de programação do mesmo. Os instrutores trouxeram uma nova maneira de “fazer minicursos”: não é só uma pessoa falando durante 3 horas seguidas de um assunto, sem haver interação com o pessoal. São as mesmas 3 horas de interação, diversão, mão-na-massa e descobertas de momento acerca do assunto que foi abordado. Esse foi o ponto principal: todos participaram e fizeram o minicurso! (até eu tive meus 14 minutos, como co-piloto e piloto 🙂 )

Abaixo coloco algumas fotos tiradas por mim no evento (em algumas está Alex Moraes, no seu momento “co-piloto”):

Ao final do minicurso, Felipe e Dr. Spock disseram ao público que há a intenção de serem feitos mais dojos na Globalcode, de Arduino (é claro) e de outros assuntos. Portanto aguardem mais informações.

O Dr. Spock (que também escreve em seu blog sobre Arduino) já publicou dois artigos sobre esse dojo, inclusive com o código final gerado pelo pessoal do minicurso, alcançando o objetivo do projeto. Para conferir, acesse:

Bom, por enquanto é só e agradeço desde já aqueles que deram uma passada no meu blog e fizeram a leitura.

Até a próxima e aguardem as novidades!!

Apresentações – Sun Tech Days 2009/2010

Recebi esse email a poucos minutos atrás. Para os que não puderam estar presentes no Sun Tech Days 2009/2010 em SP (e para os presentes também) eis as apresentações do evento, disponibilizadas para os participantes. Acredito que seja interessante para todos. Eis abaixo o email:

Clique aqui, caso não visualize o e-mail corretamente.
Nesta oitava edição no Brasil, o Sun Tech Days 2009
foi um sucesso!

Com a presença de James Gosling, o “Pai do Java”, o Sun Tech Days reuniu desenvolvedores, estudantes, arquitetos, parceiros e formadores de opinião.

Foram dois dias de muita tecnologia, conhecimento, participação, inovação
e – por que não? – muita diversão!

Obrigado por sua participação, você ajudou a fazer a diferença neste evento.

Se quiser saber mais sobre a Sun Microsystems, nossos produtos e soluções, acesse www.sun.com.br.

Clique aqui para ver as palestras apresentadas este ano.

Esperamos encontrá-lo(a) em nossos próximos eventos!

Sun Microsystems

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!

Uma breve introdução sobre Lean

P.S. : “Pinçado” do Cantinho do Agile 🙂