Valeu a Pena? Parte 1 – Software Livre

Muita gente hoje me conhece como “Marlon do EncomendaZ”. Ou o cara que fez aqueles programinhas para Android. Já ouvi até “MarlonZ”. Ah! E também já teve “O cara do Alfred”. Esta “fama” vem de programas e bibliotecas que eu criei. Acho engraçado que nunca me perguntaram: valeu a pena? Ou até uma pergunta do tipo “tá rico?”. Vamos lá! Quero tecer alguns comentários a respeito destes programas que criei, se valeu a pena, se estou rico, se vou continuar neste caminho e se indico isto a outros. Pensei inicialmente em criar um único post, até o momento que percebi que estava ficando muito grande e cansativo. Resolvi quebrá-lo em dois ou três posts. Este primeiro fala do “Marlon Software Livre”.

“The Purpose, Mr. Anderson!”. – Agent Smith

Papo sincero, reto e direto. Meu propósito quando resolvi criar coisas livres era bem simples: eu queria ser reconhecido. Eu queria aparecer. Simples assim. Sem meias verdades, sem hipocrisias. Eu gostava das ideias do Software Livre. Eu abraçava elas. Mas havia um propósito oculto e que ficou escondido em mim por um tempo. Depois, resolvi sair do armário (opa!): não era só por ideais. Era uma atitude absolutamente normal de qualquer ser humano. Um pouco de egoísmo. De querer aparecer. Chamar a atenção. De ter seu trabalho reconhecido. De que as pessoas percebam que você é útil e lhe parabenizem por isso.

Alcancei meu propósito? Acredito sinceramente que sim. Meus projetos me deram uma certa projeção local e alguma externa. Obviamente, não foram nada de excepcionais. Não eram super projetos como um Apache da vida. Mas, ganhei respaldo de que era um bom programador. De que era um cara interessado e de atitude, afinal, criar e manter “coisas” livres é complicado. Acredite. E o networking ajudou a propagar estas ideias. Pessoas próximas me conheciam pelos projetos que fiz. E repassavam para as pessoas próximas a elas e por aí vai.

“No princípio criou Deus os céus e a terra.” – Bíblia, Gênesis.

Minha história começou com o VeículoZ, um programa para PalmOS que servia para você controlar os gastos com seu carro. A repercussão foi sensacional. Recebi dezenas de e-mail com sugestões e, principalmente, elogios. Foi muito bom. Depois fiz a versão Windows Mobile deste mesmo programa. Tudo sob a licença GPLv2. Depois vieram outros pequenos projetos que criei mais como motivação para aprender uma tecnologia, como o InvestimentoZ, AuctionX, Alfred Library e DemoDroid. Ajudei em outros projetos abertos também. Cheguei a dar uma força pro @oreio em uma ideia dele (sobre CSS, não lembro agora).

O VeículoZ PalmOS hoje tem cerca de 1400 downloads e foi publicado em 2007. A versão Windows Mobile tem quase 1300 downloads e foi publicado em 2009. A biblioteca Alfred tem cerca de 500 downloads, contando todas as versões. A atual conta com mais de 100 downloads até hoje. Mas isto porque o Alfred é muito usado com Maven e este “download” nunca é contado. Para mim, são resultados sensacionais. Pense comigo. Eu sou um desenvolvedor de “fundo de quintal”. Trabalho no Serpro todos os dias, 8 horas. E não, meu caro! Não sou um nerd que não faz sexo e só vive com a cara no monitor. Sou casado e filhos estão por vir. E curto muito beber cerveja com amigos. Vou para todos os jogos do Bahia em Pituaçu. Além de shows de Rock and Roll (estarei no Rock in Rio!). 🙂

Aqui fica uma dica que valeu muito a pena para mim. Você quer aprender uma nova tecnologia? Pode ser Java, Ruby, Sockets, WebServices… seja lá o que for, faça um projeto de escopo pequeno, bem definido, crie um repositório no Google Code e trabalhe em cima dele. Depois, tenha um blog, publique lá os resultados de seus estudos e deixe livre o seu projeto de estudo. Pode acreditar, você terá, algum dia, um retorno. Mesmo que não tenha, seu projeto estará lá. Pronto para consultas futuras. É melhor do que você fazer um projeto tosquinho e manter ele só no seu HD. Quando você faz algo que sabe que outras pessoas verão, você se empenha mais. E acaba aprendendo mais com isso.

Valeu a pena?

Percebo que são poucas as pessoas que tem interesse, vontade ou tempo para fazer coisas como eu faço: programas, bibliotecas, escrever artigos, dar (ó o respeito rapá!) palestras e cursos… De fato, este não é meu ganha pão. Ainda tiro muito pouco dinheiro com isto. Para piorar, a maioria do que faço está sob licença livre. Falando em licença livre, vem a primeira pergunta: vale a pena criar coisas livres (ou opensource)? Curto e grosso: sim. Toda experiência que tive como desenvolvedor opensource me fez mudar minha visão sobre este mundo. Não o vejo mais com os mesmos olhos. Não é mais esse mundo de fantasia que eu pensava. Mas isto é assunto para outro post.

Vale a pena porque interagi com pessoas legais. E porque conheci na vera como as coisas funcionam. Fiz contatos interessantes. Criei um bom networking também. E meus projetos fizeram as pessoas me verem com outros olhos. Um cara que gosta do que faz: PROGRAMAR, DESENVOLVER, CRIAR, VIAJAR NA MAIONESE e por aí vai. Dinheiro? Zero. Para falar a verdade, nunca pensei em ganhar dinheiro com meus projetos livres. Nem com propaganda, nem com nada. Meus interesses eram os que citei acima. Só isso. Juro! O principal é o aprendizado. Aprendi tecnologias novas. Tenho uma experiência legal de como funcionam algumas coisas sobre o mundo SL. Foi muito positivo e gratificante ter todos estes projetos livres.

Iniciativa é bom. “Fechativa” é tanto quanto!

E acabei percebendo que por ter estes projetos divulgados e terminados acabava que as pessoas me procuravam para ajudá-las em suas ideias. E isto simplesmente porque sou um cara que tem a iniciativa e a “fechativa”. Eu gosto de começar um projeto e termina-lo. Se eu não o termino, é porque eu realmente não tinha todo aquele interesse. Mas eu tenho uma taxa boa de conclusão. Na maior parte do que faço, eu tenho interesse e chego até o fim. As pessoas gostam disso. Só não conseguem praticar o mesmo. Vejo muita gente com ideias legais. Cheios de empolgação. Alguns tem a iniciativa. Pouquíssimos tem a “fechativa”. A tal “fechativa” é importantíssima, meus caros. Quando não terminamos um projeto, sempre fica aquele sentimento de fracasso. De que faltou alguma coisa. De que seu próximo projeto está fadado a falhar também.

Você pode fechar seu projeto e perceber que não acabou da forma como você queria. Que não teve a repercussão que esperava. Eu já tive essa sensação. Mas ter terminado o projeto foi gratificante. Eu tentei. Consegui chegar até o fim, só que infelizmente as coisas não saíram como eu esperava. Só isso. Sem frustrações. Tem outro detalhe importante para que eu tenha tanto interesse assim: programar é uma diversão para mim. E não tenho a mínima vergonha de dizer que eu sou um PROGRAMADOR. Dane-se essa ideia de que programador é peão. De que o importante é ser chamado de “Analista de Sistemas”. Blergh!

E eu?

E você? Quer saber se eu acho que você deveria trilhar caminho parecido com o meu? Vamos lá. Se a interação com as pessoas não lhe empolga, então desista. Se você não fica com lágrimas nos olhos quando recebe (deixe disso!) um elogio por um aplicativo, então desista. Se a falta de tempo é sempre sua desculpa, então desista. Se você não gosta de programar e nem tem interesse em aprender, então desista. Se tudo o que escrevi até aqui não faz o mínimo sentido para você, então desista.

Alfred 1.1.0

Uma rápida chamada aqui no blog para a disponibilização da versão 1.1.0 da biblioteca Alfred! Acessem o site do Alfred para mais novidades. É só isso! 😛 Aliás, vou aproveitar então para dar uma puxada na orelha dos que usam o Alfred mas não dão feedback! Vamos lá galera, se gostam e usam, retornem pra gente. Mandem mensagens, e-mails, postem no blog e coisas do tipo. Vamos lá! Quanto mais gente contribuindo, mais vamos pra frente!

Dados Abertos

Enquanto escrevia o Alfred, me deparei com alguns problemas para criar determinados utilitários. O primeiro foi o utilitário de Correios. Para minha completa tristeza, e até mesmo estranheza, os dados não são abertos. Pior, os Correios tentam proteger as informações de CEP para evitar que outras pessoas o obtenham através de “outros métodos”. Tudo bem, pensei, talvez seja apenas esta empresa a fazer isto.

Que engano! Praticamente todas as esferas do governo não fornecem meios padronizados, ou pelo menos práticos, para se obter os dados que deveriam ser públicos. E quando digo práticos e acessíveis, não quero dizer uma página HTML formatada com os dados. Estou falando de Webservices, XML, JSON e coisas do tipo. Consultar o endereço por CEP é só um exemplo bem simples. Mas imagine se todas as informações passíveis de se tornarem públicas estivessem acessíveis aos desenvolvedores! Imagine o cruzamento fenomenal de informações que poderia ser feito. Porque não publicar de forma acessível os dados sobre roubos de carros na Internet? Em conjunto com as informações de CEP cada desenvolvedor poderia criar uma aplicação própria para monitorar como andam as condições nas ruas.

E se os Correios liberassem as informações onde se encontram todas as caixas postais de forma mais fácil? Você poderia combinar esta informação com o Google Maps e fazer um aplicativo simples que apenas diria ao usuário de um iPhone se no lugar onde ele está tem alguma caixa postal próxima. Imagine nas infinitas possibilidades se os dados dos censos realizados pelo IBGE (aqueles passíveis de serem publicados) estivessem acessíveis através da internet por um Webservice livre e aberto. E todas são informações que não colocam em risco a segurança nacional. Não ferem a privacidade de ninguém. São apenas informações que deveriam estar disponíveis de forma acessível e “legível” para um computador.

Mas, eu vou além. As empresas em geral, não vou dizer apenas as brasileiras, também deveriam aderir a esta onda. Porque o Submarino não fornece um WebService que me permita apresentar seus produtos da forma como eu quiser? Eu detesto aqueles banners ridículos que eles disponibilizam. As montadoras de carros também poderiam aderir de alguma forma. Todas as empresas de comércio eletrônico também. Perceba que a Submarino precisou fazer seu próprio aplicativo iPhone. Para mim, bastaria para eles disponibilizar uma API de acesso aos dados de seus produtos. Muitos aplicativos para iPhone, Android e Windows Mobile surgiriam naturalmente.

E eu pensava que eu era louco por ter estas ideias. Mas, para minha completa felicidade, descobri que não sou o único. Na minha recente presença no Consegi 2010 conheci o @alegomes, gente fina e que, após saber que faço “parsing” de HTML para obter dados dos Correios, me informou que já existe uma iniciativa semelhante mundo à fora. Então, para aqueles que se interessam pelo assunto, vejam este link e acessem o documento que está disponível lá. Mais legal ainda, veja que na Inglaterra já existe algo assim, trata-se do http://data.gov.uk/. Fica, então, mais um pensamento: será que o Governo de um País não poderia se beneficiar fortemente desta prática? Será que o próprio governo do país não poderia tirar proveito desta rede de desenvolvedores que iriam lhe auxiliar com diversos tipos de aplicativos? E também da análise dos dados!

Será que eu estou sonhando? Qual sua opinião a respeito? Deixa nos comentários aí!

BR-Linux e Alfred

Agradeço ao Augusto Campos, do BR-Linux, pela publicação da notícia que enviei sobre a biblioteca Alfred. Diversos desenvolvedores já entraram em contato sugerindo mudanças e com críticas muito construtivas.

Para quem quiser ver a notícia original, acesse o link http://br-linux.org/2009/alfred-biblioteca-de-utilitarios-para-java/. Para quem ainda não conhece a biblioteca, acesse http://code.google.com/p/alfredlibrary/.

Alfred – Biblioteca de Utilitários para Java

Cansado de procurar na internet por código de validação de e-mail? E conversão entre unidades de medida? Como converto celcius em fahrenheit? E como converto de libras para real brasileiro? Calma! Seus problemas se acabaram! Usando o maravilhoso Alfred, você terá tudo isto muito facilmente! Alfred é uma biblioteca de utilitários em Java. Todo aquele código chato, que você invariavelmente precisa mas nunca tem à disposição.

São muitas classes e diversos métodos utilitários:

  • Tem conversão entre unidades monetárias;
  • Conversão entre unidades de temperatura;
  • Conversão entre Bases Numéricas (Hexadecimal, Binário, etc);
  • Conversão entre unidades de Comprimento;
  • Conversão entre unidades de armazenamento;
  • Validação e formatação de CNPJ;
  • Validação e formatação de CPF;
  • Utilitários para Coleções;
  • Cálculo de Frete por Sedex, Sedex10, etc;
  • Formatação de CEP e obtenção de endereços por CEP;
  • Cálculos com Datas;
  • Validação de E-mail;
  • Leitura de arquivos CSV;
  • Formatação de Telefones;

E muitas outras coisas. E o Alfred está sempre crescendo e se tornando um mordomo melhor! Deixando a propaganda de lado, deixe-me explicar mais formalmente do que se trata esta ideia. Como já deu para perceber, é apenas uma biblioteca em Java, sem qualquer dependência externa (nenhum jar externo precisa ser usado). São dezenas de utilitários para você usar. Quer ajudar? Ótimo, mande-me um e-mail que conversaremos. Quer usar em seu projeto comercial? Tranquilo! Alfred é LGPL.

Quer saber onde baixar? Ah sim, estava quase esquecendo!  Acesse http://code.google.com/p/alfredlibrary/.