Minhas impressões – Arduino no IFSP: 4ª reunião – 19/03/11

Caros leitores desse blog,

No sábado participei da 4ª reunião do grupo Arduino no IFSP, no próprio Instituto Federal de Educação Tecnológica de São Paulo (a.k.a CEFET-SP, ETFSP, Federal e outros nomes afins). Para aqueles que queiram saber mais detalhes de quais atividades são desenvolvidas e qual o propósito do grupo indico a leitura do post “Arduino no IFSP: estudo, diversão e conhecimento“, contido nesse mesmo blog e escrito por mim.

Pretendo nesse post enumerar algumas coisas que presenciei por lá, o encontro de número 4 do grupo foi bastante proveitoso 🙂

Panorama

Sábado às 12h estava marcada a 4ª reunião do grupo Arduino no IFSP, na própria instituição que dá nome ao grupo. Pela thread da lista de discussão a previsão era de uma presença de público bem legal para um sábado, muitas pessoas estavam animadas para comparecer.

Tivemos presença de membros dos cursos técnico, tecnólogo, engenharia, mestrado, professores (do próprio instituto e do SENAI) e entusiastas (dentre eles o criador da placa Severino, o Adilson Akashi).

Cheguei ao local por volta das 13h e já haviam membros trabalhando em confecção de placas, discussão de projetos usando Arduino e demos de projetos de alguns membros com mais experiência no grupo (Felipe Flores, Allyson Rodrigues e Rafael Melo) sendo apresentadas. Todas as pessoas, independente do nível de conhecimento e/ou aprendizado com Arduino puderam aprender algo útil e levar informação nova para casa, pra mim esse foi o maior e está sendo o maior êxito das reuniões. #WIN 🙂

Demos de projetos apresentados

  • Controle de modos de lavagem de uma máquina via Arduino + Display LCD (Allyson Rodrigues)

Esse é um projeto que o Allyson Rodrigues, formado em Tecnologia em Sistemas Eletrônicos, vem tocando para implementação na própria empresa na qual ele trabalha. O objetivo é controlar vários modos de lavagem, e dosagem de componentes químicos a serem usados em cada lavagem via Arduino e display LCD, como modo de interface. Na foto acima o Prof.º Ricardo Pires mostrou exemplos para o pessoal presente de trechos de código e um pouco da API do Arduino usada.

  • Análise de movimento com acelerômetro e Processing, com envio de dados via ZigBee (Felipe Flores)

Esse é um projeto bastante interessante, guiado pelo Felipe Flores (em conjunto com o Rafael Melo), onde o objetivo é capturar as informações de posição espacial de um acelerômetro e enviá-las via comunicação sem fio (usando ZigBee) para o Processing (linguagem de programação baseada em Java com IDE, para criar ambientes gráficos e facilitar a integração com projetos eletrônicos). É possível visualizar as mudanças da posição do acelerômetro por um cubo 3D RGB. Uma das intenções desse projeto é futuramente servir como modelo para um sistema de monitoração de capacidade motora de deficientes, por exemplo. Mas para isso é preciso sincronizar mais de um acelerômetro e fazer a modelagem do membro a ser analisado em outra plataforma. O começo é promissor, achei bem interessante 🙂

Ecossistema Arduino e outros

Um dos pontos a ressaltar é que durante esse encontro não presenciei apenas o uso do Severino nas bancadas. Me deixou muito satisfeito ver que o pessoal levou outros modelos de placas, baseadas no projeto Arduino (além do Duemilanove que é o “clássico”), para trocar experiência sobre plataformas além do Severino, que a priori foi nossa escolha como projeto de baixo custo para indicar para uso no grupo. Abaixo algumas plataformas que vi:

  • Brasileirino (criado pela Globalcode, mas não sei se ainda é fabricado, há muito tempo não via um exemplar desses…rs): foi levado pelo Helton, Prof.º do SENAI e doutorando na USP. Foi a primeira reunião presencial que o Helton pôde estar presente e ele ficou bastante animado com as idéias. Pretendemos em futuro próximo ampliar a troca de conhecimento entre SENAI e IFSP, no que diz respeito a Arduino 🙂

  • MSP430 (Texas Instruments): Em conjunto com um amigo e outros alunos de Engenharia do Mackenzie fizemos a aquisição desse kit, mas ainda não chegou aqui no Brasil (comprei duas unidades). Tive contato então pela primeira vez, e para minha surpresa, neste encontro do grupo.

O William Antunes da Maia, aluno do tecnólogo de sistemas eletrônicos participou de um HandsOn da Texas Instruments sobre esse kit: ao fazer o curso ele ganhou o kit, um livro e conhecimento de como lidar e programar com ele (o valor do curso foi de R$150). O valor real do kit se comprado pela internet é de apenas $4.30, mais o custo de envio para o Brasil (por isso entrei na lista de pedido coletivo do Mackenzie 😉 ).

Você me pergunta: se a Texas vende esse kit, que seria um “rival” do Arduino a um custo muito baixo, então ele é “mil maravilhas”? A resposta é não. Para usar o kit é preciso ter uma licença de uma IDE proprietária da Texas e programas escritos usando linguagem C não podem ultrapassar o tamanho de 2K. Frente a esses fatos o Arduino ainda é o vencedor da disputa, mas é sempre ótimo estar em contato e ter conhecimento dessas novas plataformas de desenvolvimento de hardware 😉

Presença ilustre: Adilson Akashi, o criador do Arduino Severino! 🙂

Há algum tempo o Adilson Akashi, criador da placa Severino, faz parte da nossa lista de discussão e já desmontrava interesse em comparecer em uma de nossas reuniões. Mesmo sendo um ex-aluno da instituição encontrava na burocracia uma barreira para conhecer o trabalho de nosso grupo. Graças ao trabalho do professor Ricardo Pires e para nossa surpresa ele apareceu nesse nosso encontro de sábado 🙂

Foi muito bom poder trocar idéias, experiências de uso do Severino, conhecimento de técnicas de construção de layouts e truques de uso de Arduino com ele. Ele foi super gente boa, atencioso e se prontificou a ouvir as dúvidas de todos, e participou ativamente das atividades do dia. Muito bom foi ouvir as histórias e a vivência dele com a eletrônica, como conheceu o Arduino, como auxiliou na melhora da implementação e a sua atuação nos fóruns.

O bacana foi que na hora me surgiu a idéia de fazer uma entrevista com ele, e ele aceitou de bom grado 🙂 Para quem quiser ouvir o áudio na íntegra, ele se encontra abaixo, vale a pena ouvir as opiniões e experiência do Adilson Akashi:

Os presentes na reunião tiveram o privilégio de ver ao vivo o primeiro protótipo do Severino, feito pelo próprio Adilson, com a inscrição “Preliminary Beta Version”. Foi muito legal ver um hardware histórico, que cativou o trabalho do nosso grupo. Abaixo uma foto que tirei do “Severino número 1”:

Sessão de gravação de bootloader em Severinos

Perto do final da tarde o Felipe Flores, com auxílio do Prof.º Ricardo Pires e Adilson Akashi, fez uma sessão/demonstração de gravação de bootloader em Arduinos. Caso você compre um chip da ATmel para Arduino você precisará gravar um setor de boot antes de inserir os sketches (programas finais). O pessoal nas primeiras reuniões fez a parte de montagem, e nessa reunião gravamos bootloaders, portanto muitos saíram com os Severinos prontos para uso 🙂 Nas próximas reuniões acredito que entraremos de vez no modo programacional. Podemos fazer sessões de DOJO 😉

Conclusão

Essa quarta reunião do grupo foi proveitosa para todos: as pessoas que estavam lá para corroer as primeiras placas de Severinos, os que já estavam com as placas montadas, os que já puderam sair com elas 100% funcionais e todos por trocarem idéias e concepções acerca de projetos usando Arduino.

Os que sabiam mais compatilhavam de peito aberto as experiências com aqueles de menos experiência, enquanto esses não tinham vergonha ou timidez de indagar e buscar informações. É interessante ver que ao mesmo tempo cada reunião nos traz um grupo heterogêneo em níveis de conhecimento, temos sempre um grupo super homogêneo em termos de gana de saber, esse é o ponto mais importante.

Pela primeira vez pessoas de fora do IFSP participaram, desde o criador da placa Severino até o Helton, professor do SENAI, que prometeu prosperar com Arduino na instituição na qual ele trabalha, e trazer novos membros para o grupo, aumentando a integração entre as instituições. Isso fortalece o senso de comunidade e contribuição para com o conhecimento e mútuo.

Coloquei as fotos da reunião na minha conta do Picasa, confiram lá. Quem tirou fotos também envie para mim 😉

Espero que tenham gostado desse relato, e sintam-se a vontade para indagar sobre qualquer dúvida ou interesse em participar e fazer desse grupo. Acima de tudo, façamos o Arduino  cada vez mais difundido, seja como ferramenta auxiliadora no ensino ou como hobby 😉

Até mais!

Anúncios

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!

[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!

[DIVULGAÇÃO] – 8º Encontro do Grupo de Usuários Ruby de SP (GURU-SP)

Divulgo para os interessadas em tecnologias relacionadas a Ruby e Rails mais um evento/reunião/encontro gratuito que acontecerá no dia 10/04/10. Será o 8º Encontro do Grupo de Usuários Ruby de SP (GURU-SP). Para mais informações confiram abaixo a notícia retirada do InfoQ.

O Grupo de Usuários Ruby de São Paulo (GURU-SP) fará mais um encontro no dia 10/04(sábado). Esse será o último encontro do grupo antes do evento Ruby on Rails no mundo Real.

O encontro contará com duas palestras de 40 minutos que serão divulgadas em breve e dessa vez será aberto um espaço para Lightning Talks de 5-10 minutos. É uma oportunidade interessante para você mostrar para a comunidade algum projeto, biblioteca, site relacionado com Ruby que tenha feito.

Esse é o oitavo encontro do grupo, para conferir como foram os anteriores acesse a wiki do GURU_SP.

A empresa Surgeworks já confirmou também apoio e fornecerá o coffe break.

Se sua empresa também quiser colaborar com o crescimento da comunidade Ruby e pode contribuir com algo, deixe um comentário que entraremos em contato.

Local:

O encontro será realizado no auditório da Caelum, próximo ao metrô Vila Mariana.

Rua Vergueiro, 3187, cj 84

Ao lado do metrô Vila Mariana

Mapa

Inscrição:

Para participar do encontro basta colocar seu nome no formulário.

O encontro deve ir até 13:00 e depois teremos o famoso #HoraExtra para socializar e confraternizar.

Se tiverem dúvidas, deixem comentários aqui no post ou entrem no grupo de discussão do Guru-SP ou no site oficial do grupo.

Minhas impressões – 7º Encontro do Grupo de Usuários Ruby de SP (GURU-SP) – 13/03/10

Caros colegas,

Na manhã de hoje estive participando do 7º Encontro do Grupo de Usuários Ruby de SP (GURU-SP), ocorrido em um auditório “próximo ao metro Santa Cruz” (mais abaixo a explicação), conseguido pelo pessoal da Caelum (via Anderson Leite), na Vila Mariana. Abaixo vou relatar as minhas impressões do evento.


Introdução e Panorama

Esse foi mais um dos sábados que pensei: poxa, poderia estar dormindo e descansando, aproveitando pra acordar tarde…Mas não, mais uma vez acordei as 7h00 rumo a mais um encontro de usuários Ruby (vai ser Nerd assim longe viu!… 🙂 ). No final, perder “alguns” fins de semana de vez em quando vale a pena: a busca pelo conhecimento é indescritível!

“Viagens” a parte, vamos ao que interessa !

Não tive muitas dificuldades para localizar o local, tirando a caminhada de 1100 números do início da rua até o prédio (onde ficava o auditório do encontro) + 150/200 metros da Avenida da saída do metrô (20~25 minutos de caminhada com notebook nas costas…). Na chegada ao local não tive dificuldades para encontrar o auditório e me instalar. Poucas pessoas estavam presentes até aquele momento, mas as instalações já estavam OK. No evento, como um todo, estiveram presentes cerca de 25 a 30 pessoas, que no final acabou ficando na média dos encontros do grupo.

O cronograma para o encontro era:

  • Palestra1: Por que Vim? – Willian Molinari (a.k.a PotHix);
  • Palestra2: HPricot – Jonas Alves;
  • Bate papo sobre as novidades do GURU-SP.

Abaixo um resumo sobre os tópicos anteriormente listados.

Palestra 1: Por que Vim? – Willian Molinari (a.k.a PotHix)

Willian Molinari nessa palestra mostrou ao público um pouco sobre esse tão famoso editor, que muitos conhecem mas poucos sabem usar de forma avançada, muito pelas “dificuldades” de adaptação (desmistificadas na apresentação). Pelo menos eu gosto do conceito do Vim e acho o mesmo muito interessante (!). A apresentação subdividiu-se nos seguintes pontos:

  • Filosofia de programação no Vim;
  • Comandos básicos;
  • Modos de edição;
  • Qual o melhor modo de usar;
  • Como customizar;
  • Killer commands;
  • Bons plugins para desenvolver com facilidade (em Ruby, é claro 🙂 );
  • Principais  vantagens/desvantagens.

Abaixo as informações mais importantes:

  • Existem 4 modos de edição no Vim: visual, inserção, comandos, normal;
  • Em qualquer modo existem variação de abrangência/ação quando usam-se comandos com letras minúsculas ou maiúsculas;
  • Modo visual – comandos disponíveis: “V” (para selecionar linhas) ou “v” (para selecionar caracteres);
  • Modo inserção – “i”, “a”, “o” ou “I”, “A”, “O” (escrever caracteres antes, depois ou na próxima linha, respectivamente);
  • Modo de comandos:

1 –  ” :! ” : permite executar comandos do terminal, como “ls”, “grep”;
2 – “:set wrap” (quebra a linha) e “:set nowrap” (não quebra as linhas);
3 – “:%s/arg1/arg2/g” : substitui o argumento1 pelo argumento2 em todo documento;
4 – “:w!” : salva e sai do arquivo;
5 – “:q!” : sai do arquivo e não salva mudanças;
6 – “:wqa” : sai e salva todos os arquivos abertos no Vim;
7 – “ZZ” : famoso “Zalva e Zai” (o mesmo que “:wqa”).

  • Modo normal:

1 – Navegação e busca de palavras em arquivos: “?” e “/”;
2 – Uso de setas de navegação: “h”, “j”, “k” e “l”;
3 – Navegação entre palavras: “w”, “e”, e “b”;
4 – Navegação entre começo e fim de linha: “0”, “^” e “$”;
5 – Motions: “f”(ind) e “t”(o) + um caracter de uma palavra para onde queira ir;
6 – Alteração: “yy”(ank) e “p”(aste), vulgo “copiar e colar”;

  • Vim tem suporte a “buffer de arquivos”: pode-se abrir mais de um arquivo e usa-se o “ls” para escolher o arquivo (bufExplorer) ;
  • Vertical split (“Vs”), Horizontal split (“:split”), Tab (“:T”) e Macros (“q”, “@” e “@@”) são tópicos avançados e poderosos;

Abaixo estão listados os plugins mais interessantes para os programadores Ruby que usam Vim, todos acessíveis via vim.org:

Outros plugins (diversos): vimpress, ragtag, endwise, IndexedSearch.

Fontes de estudo? Acesse os Vimcasts. Leia o Vimbook. Estude arquivos  “.vimrc” (arquivo de configuração do Vim. O Molinari oferece o próprio arquivo para download na página do GitHub dele). Acompanhe as dicas do @vimtips no Twitter. Leia o VimTutor.

Observações: Saiba que não será fácil aprender Vim! Portanto estude, pratique e treine sua digitação, pois os resultados só vem na prática.

Ufa! Só ficou faltando o link para a apresentação do Molinari. Caso seja disponibilizada, depois irei atualizar essa parte do post.

[Atualizado em 14-03-10 – Eis o link da apresentação do PotHix: http://bit.ly/95aqmI].

[Atualizado em 15-03-10 – Eis o link do vídeo gravado pelo Hugo Borges da apresentação do Willian Molinari: http://blip.tv/file/3347875]

Parada para coffee break agora! Hora do networking e aguardo para a próxima palestra…

Palestra2: HPricot – Jonas Alves


Jonas Alves trabalha na WebGoal a 1 ano e é rubista desde 2008. Trouxe a público o seguinte cenário, para exemplificar a sua apresentação: um cliente precisava coletar dados da internet, mas isso era feito manualmente e demandava muito tempo e esforço, e a qualidade das informações poderiam ser comprometidas por erros humanos. Era preciso automatizar o processo. Eles testaram as seguintes ferramentas:

  • PHP: DOMDocument (problema: limitado);
  • Java: HTMLParser (problema: muito verboso);
  • Ruby: HPricot (solução[!]: código limpo e mais fácil de usar).

De todas as opções, o Hpricot se destacou pelo seu poder e simplicidade de uso na extração de dados de websites, por meio de divs. A extração de dados da página fica muito mais fácil com o uso do plugin Firebug, para Firefox.

Fora esses pontos, a apresentação seguiu-se com uma demonstração de como construir um extrator de dados de um blog com Hpricot. Jonas disponibilizou os arquivos da apresentação e da demo em sua página do GitHub.

Eu, durante a apresentação, achei outro exemplo interessante para complementar a informação passada: http://www.lednerd.com/2007/04/20/extraindo-dados-com-ruby-e-hpricote/

Fora isso só achei o palestrante um pouco nervoso durante as explicações, mas no final deu tudo certo. Parabéns ao mesmo pelo conteúdo passado!

[Atualizado em 15-03-10 – Eis o link do vídeo gravado pelo Hugo Borges da apresentação do Jonas Alves: http://agaelebe.blip.tv/file/3348060/]

Hugo Borges – Bate papo sobre as novidades do GURU-SP


Hugo Borges passou os informativos sobre as discussões que estão ocorrendo entre os membros do grupo, visando um melhor planejamento e periodicidade das atividades. E as novidades são:

  • Encontros mensais – agora acontecem uma vez a cada 4 semanas, com duração de 3 a 5 horas. Dois encontros já estão confirmados: 03/04 e 01/05, na Caelum;
  • Existe um arquivo público para os interessados discutirem os formatos dos encontros. Acessem: http://bit.ly/gurusp7;
  • Os formatos dos encontros podem conter: palestras, mesas redondas , dojos, projetos, horas extra, etc;
  • Os projetos atuais do grupo são: tradução do RubyLearning (Hugo Borges é o líder) e tradução da Rails Magazine (Anderson Leite é o líder e estou participando 🙂 ). Em futuro próximo poderão existir projetos de gems, jogos, contribuições em outros projetos, plugins, etc;
  • Próximo evento: Ruby + Rails no mundo real 2010;
  • Desconto na compra de livros da editora O’Reilly com código do GURU-SP (“DSUG”): 35% na compra de livros impressos e 45% em e-books;
  • Palestras não aprovadas para o Ruby + Rails no mundo real 2010 serão apresentadas nos próximos encontros do grupo. É importante frisar que as duas palestras desse encontro fazem parte das não aprovadas para o evento de Maio (não por falta de qualidade, é lógico!).

Conclusão

O encontro começou as 9h00 e terminou perto das 12h30, antes do esperado, mas cumprindo o cronograma. Após isso houve a #horaextra, onde o pessoal sai para o almoço e beber alguma coisa, tudo regado a Ruby/Rails, troca de idéias e networking, é claro.

Tenho alguns prós e contras para adicionar:

Prós:

  • Infra-estrutura boa (wifi, tomadas, ar condicionado, água e café);
  • Os assuntos abordados em ambas as palestras não foram de cunho “avançado”, portanto tanto os mais experientes quanto os inexperientes puderam aproveitar.

Contras:

  • Não é “próximo ao metro Santa Cruz” (para os que se locomovem com transporte público);
  • O projetor multimídia, infelizmente, atuou no modo “preto e branco” em ambas apresentações, prejudicando a visualização dos códigos.

Bom, acredito que seja isso. Caso qualquer informação nova venha a surgir atualizo o post.

Até mais!

[DIVULGAÇÃO] – Abertas as inscrições para o evento “Ruby + Rails no mundo real 2010”

Pessoal,

Estão abertas as inscrições para o evento “Ruby + Rails no mundo real 2010”, evento organizado pelo pessoal do GURU-SP. No ano passado estive presente com o pessoal da empresa na primeira edição, e posso dizer que foi boa a experiência (os interessados podem lê-la aqui nesse link). O evento ocorrerá no mesmo local do ano passado, e com preço acessível.

Abaixo mais informações, retiradas do site Tempo Real Eventos:

  • Data: 29 de Maio de 2010, sábado, das 8h30 às 18h00;
  • Local: Century Flat Paulista – R. Teixeira da Silva, 647, Paraíso – São Paulo – SP – CEP: 04002-033. Tel: 11-3882-9977;
  • Estacionamento: no próprio local do evento, R$ 10,00 pelo período do evento;
  • Alimentação: no próprio local do evento, valor: R$ 29,00 [na vizinhança existem outras opções que serão fornecidas no dia aos interessados];
  • Valor das inscrições:
FASE 1
R$ 69,00
08/03 a 09/04
FASE 2
R$ 89,00
10/04 a 30/04
FASE 3
R$ 109,00
01/05 a 25/05
FASE 4 ***
R$ 139,00
26/05 a 29/05
*** As inscrições da ÚLTIMA FASE só poderão ser realizadas no local do evento ***

Estarei presente e espero vocês lá!

São Paulo – SP
29 de maio
sábado das 9h00 às 18h00