Blog do Rodrigo Carvalho

Tecnologia, música e liberdade

Curso Music of The Beatles - Como foi

Seguindo a série de artigos sobre cursos musicais do site Coursera, é a vez de falar como foi o curso “The Music of The Beatles”. Com certeza um curso sobre a maior banda de todos os tempos é obrigatório para qualquer amante de rock n’ roll! Você é “metaleiro true” e odeia os Beatles? Antes de fechar a janela, leia este meu pequeno resumo para saber porquê você deve fazer este curso :)

Em busca de um Github para músicas

Este ano estou voltando a me dedicar à música, depois de alguns anos inativo. Montei uma banda e, como já falei aqui, estou fazendo diversos cursos online no Coursera (dois deles já terminei e já publiquei reviews aqui e aqui).

Novo tema visual!

Depois de muito tempo (provavelmente anos) insatisfeito com o visual “retrô” do blog e testando diversos temas para tentar deixá-lo mais moderno, finalmente consegui um tema que consegue reunir todas as qualidades que procurava. Um tema minimalista, sóbrio, que oferece boa legibilidade e que aproveita bem o espaço em tela.

Cursos online de música gratuitos

O Coursera é um site que oferece diversos cursos online de forma totalmente gratuita. Existem cursos de praticamente todas as áreas, como por exemplo biologia, economia, computação e direito. O melhor de tudo é que são cursos ministrados por algumas das melhores universidades do mundo! Ano passado fiz alguns cursos voltados para a área de computação e foram bem interessantes.

Mas foi no final do ano passado que fizeram um anúncio que realmente me deixou muito feliz: o Coursera fechou uma parceria com a Berklee College of Music! Para quem não conhece, ela é considerada uma melhores universidades de música do mundo e onde nasceu a banda Dream Theater. De lá para cá, vários outros cursos de música foram adicionados ao catálogo:

Cursos de música no Coursera

Clique para ver no site

 

Para quem, além de músico (ou aspirante a músico), é desenvolvedor de software, no curso “Survey of Music Technology” os alunos terão oportunidade de escrever programas de computador para fazer música.

Já fiz minha matrícula em quase todos os curso da lista. O “Introduction to Digital Sound Design” começou esta semana e ainda dá tempo de se matricular e acompanhar!

Transferência de arquivos do Linux para o Android sem complicações

Desde que comprei meu celular novo, com Android 4, passei a ter muitos problemas para transferir arquivos para ele através do Linux. O problema é que, a partir da versão 3 do Android, a transferência de arquivos via cabo USB é feita utilizando o protocolo MTP, que traz a vantagem de não bloquear o cartão SD. Ou seja, você não precisa parar de ouvir música no celular para transferir mais músicas! No entanto, a implementação atual do MTP do Linux não tem uma compatibilidade muito boa com a implementação do Android – às vezes funciona e às vezes não.

Cansado desta situação, resolvi encontrar uma solução e acabei encontrando algo muito melhor: o AirDroid. Ele é um aplicativo móvel que carrega uma aplicação web no próprio aparelho e que você pode acessar de um navegador do seu computador! Além de transferir arquivos dá para fazer muito mais com ele, como pode ver na tela abaixo.

Tela do AirDroid

Resumindo: procurava uma solução para resolver meu problema de transferência de arquivos via cabo USB para o Android e acabei com uma solução muito mais completa. E, o melhor: sem precisar mais de cabos! Realmente o AirDroid virou o mais novo aplicativo Android essencial para mim :)

Atualização: O Ubuntu, a partir da versão 13.04, já vem com suporte ao protocolo MTP compatível com o Android nativamente.

Produtividade no desenvolvimento Android: testando o AQuery e o RoboGuice

Como último estágio antes da retomada do desenvolvimento da nova versão do aplicativo da Revista Espírito Livre, resolvi testar dois frameworks que prometem mais produtividade e código mais limpo para suas aplicações Android. O objetivo dos testes é escolher um deles para utilizar na próxima versão do aplicativo.

O primeiro será o AQuery, componente que provê uma API ao estilo do framework Javascript JQuery, tornando o código mais compacto e expressivo.

O segundo será o RoboGuice, uma extensão do framework Java de IOC Google Guice com funcionalidades específicas para o mundo Android.

Para os testes, utilizarei a primeira versão do aplicativo da REL. Segue um trecho de código do aplicativo original para servir como comparativo:

AQuery

Antes de tecer qualquer comentário, segue abaixo como ficou o código original portado para o AQuery:

Pontos positivos

  • Conforme prometido, o código ficou realmente mais compacto e expressivo. É possível fazer muitas configurações num mesmo objeto com apenas 1 linha de código sem perder a legibilidade.
  • O uso de interface fluente é muito positivo e grande responsável pelo código enxuto e limpo.
  • Pelo que vi na documentação, o tratamento de XML e Json parece bastante poderoso, apesar de não ter utilizado.

Pontos negativos

  • O componente ainda é um pouco limitado no que se refere a abrangência das funcionalidades do Android e, basicamente, se limita a configurar componentes visuais.
  • O uso do AQuery em apenas algumas partes do código, o torna despadronizado e estranho, pois uma parte fica com cara de Java e outra não. O ponto acima torna este problema mais evidente, pois o uso da API é pequeno em relação ao restante do código.
  • Comparado ao RoboGuice, ele não é tão maduro, pois é uma biblioteca mais jovem e ainda nem atingiu sua versão 1.0. Apesar do fato de não ter chegado na versão 1.0 não significar que o componente tem muitos bugs, é comum ocorrerem quebras de API antes do lançamento desta versão.

RoboGuice

Vamos partir agora para o teste do RoboGuice. Veja como o código original ficou com a utilização do framework:

Pontos positivos

  • O código de interface gráfica fica um pouco mais limpo, mas não muito.
  • Ele é um framework de injeção de dependências completo para sua aplicação móvel! Não cabe a este artigo falar das vantagens disso, mas traz grandes possibilidades de melhorar o código.
  • Possui diversas funcionalidades (nem todas foram exploradas no teste), sendo algumas que mais me chamaram atenção:
  • Injeção de todo o tipo de objetos do Android, além dos componentes de interface, como Activity, Context e Application;
  • Processamento de tarefas assíncronas (AsyncTask);
  • API de logging melhorada;

  • Parece ser uma API madura, além de se basear no Guice que é bastante maduro.

Pontos negativos

  • A documentação da versão atual (2.0) está muito pobre ainda. Documentação completa só para a versão 1.1.
  • Algo que nem é muito relevante é a certa complexidade para conjugar seu uso com o ActionBarSherlock. O problema é que ambos exigem que suas Activity’s estendam suas próprias classes, mas Java não tem herança múltipla para poder herdar de ambas. Mas isto foi fácil de solucionar, pois já existe código pronto para resolver o problema.

Conclusão

Avaliadas as duas opções, decidi por utilizar o RoboGuice em meus futuros projetos. Ele é bastante poderoso e trará grandes vantagens para a qualidade do código e para a produtividade no desenvolvimento. O que eu fiquei mais impressionado com o framework foi a quantidade de recursos úteis que ele dispõe.

Não explorei a fundo tudo o que o RoboGuice poderia me proporcionar, pois exigiria uma refatoração completa de uma aplicação que será jogada fora. Isto não significa que o RoboGuice seja intrusivo no código, mas porque ele reforça boas práticas de programação.

Se você discordou de alguma avaliação minha ou tem alguma coisa a acrescentar, utilize a sessão de comentários logo abaixo para compartilhar comigo!

Veja também:

Resenha: RESTful Web Services Cookbook

Recentemente mudei de emprego e tenho trabalhado num projeto de um web service REST. É um meu primeiro projeto utilizando este estilo arquitetural, mas eu sempre tive muito interesse nele.

Como estava sem nada para ler, resolvi comprar um livro que pudesse me ajudar no meu trabalho além de abordar um assunto que há muito tempo estava querendo me aprofundar: um livro sobre REST.

Foi então que encontrei os livros “RESTful Web Services Cookbook” e “REST in Practice“, ambos com excelentes notas e comentários na Amazon. Decidi começar os estudos pelo primeiro, por sua abordagem mais prática que seria mais útil para ser aplicado num projeto em andamento, e é sobre ele que irei escrever.

Capa do livro "Restful Web Services Cookbook"Estrutura do livro

O RESTful Web Services Cookbook, como o nome diz, é um livro de receitas (“cookbook”) com soluções para problemas comuns no desenvolvimento de web services REST. É um livro ideal para você ter ao lado de sua estação de trabalho para fazer consultas sobre tópicos bastante específicos.

A cada receita, o autor descreve um problema e sua solução de forma sucinta e objetiva. Em seguida, ele discute a razão da solução ter sido escolhida, exemplifica sua implementação e, em muitas vezes, dá alternativas. Sendo assim, o leitor além de ter um guia para aplicação rápida de soluções, também terá a oportunidade de entender profundamente a solução e, assim, reforçar seu conhecimento da tecnologia.

Didática

A didática do autor é excelente, sempre explicando cada tópico de forma bastante clara. Apesar deste ser um típico livro para consultas, a leitura do início ao fim (como estou fazendo) é bastante prazerosa.

Outro ponto muito positivo é que ele não se prende à teoria. Ele explica que existem situações onde a solução mais “RESTful” não é a ideal para o cliente que utiliza o serviço e dá as soluções alternativas, dizendo os prós e os contras de cada uma.

Conclusão

Ainda não terminei o livro (estou no finalzinho), mas já tenho plena capacidade de recomendá-lo para qualquer pessoa que esteja trabalhando com web services REST (independenta da tecnologia utilizada). Este é aquele livro que você irá consultar quando encontrar uma situação um pouco diferente do mundo perfeito da teoria e precisa de uma abordagem mais prática.