Arduino

Grande parte de minha carreira, os últimos 10 anos, tem sido dedicados ao desenvolvimento de firmware numa grande empresa brasileira. Citando a Wikipedia, firmware é o conjunto de instruções operacionais programadas diretamente no hardware de um equipamento eletrônico. É armazenado permanentemente num circuito integrado (chip) de memória de hardware, como uma ROM, PROM, EPROM ou ainda EEPROM e memória flash, no momento da fabricação do componente. Muitos aparelhos simples possuem firmware, entre eles: controle-remoto, calculadora de mão, algumas partes do computador, como disco rígido, teclado, cartão de memória, muitos instrumentos científicos e robôs. Outros aparelhos mais complexos como celulares, câmeras digitais, sintetizadores, entre outros, também possuem um firmware para a execução de suas tarefas.

Não há fronteiras rígidas entre firmware e software, pois ambos são termos descritivos bastante livres. Contudo, o termo firmware foi originalmente inventado para contrastar com software de alto nível que poderia ser alterado sem a troca de um componente de hardware, e o firmware está normalmente envolvido com operações de baixo nível muito básicas sem as quais um dispositivo seria completamente não-funcional.

Entre os projetos mais legais desse tipo em que trabalhei estão listening stations, impressoras térmicas (incluindo uma impressora fiscal e toda a sua complexidade), verificadores de preço de supermercado e outros mais. Todos foram desafiadores e com eles aprendi muito, fosse gerenciamento de pilha ou escrevendo sistemas para possibilitar a alocação dinâmica de memória. Tão ou mais desafiadores quando aplicações Java de alto desempenho ou web sites em Ruby e Rails.

E foi numa conversa sobre Ruby e Rails que levei um soco no estômago, quando fui questionado se em algum dos hardwares que eu havia desenvolvido eu tinha usado o processador Arduino. Eu, honestamente, nunca tinha me interessado pelo assunto visto que Arduinos são kits para aprendizado, não processadores, e naquele momento não tive a mínima idéia do que responder.

Depois disso comecei a olhar com mais interesse para as plaquinhas italianas. Não há ali nenhuma mágica, pelo contrário, é um hardware bastante simplório: processador de 8 bits e um chip FTDI que faz toda parte de USB. Mas o grande lance é a maneira como os conectores estão dispostos, possibilitando encaixar (como um LEGO) outras placas (os chamados Shields) e assim criar utilidade para o conjunto.

Pesquisando rapidamente pela internet encontrei “Shields” com displays gráficos poderosos, ethernet, zigbee e até GPS. Mas todos são extremamente caros. O Arduino em si, vendido por aí em média por cem reais, é caro (e comprando pronto perde-se o grande barato, que é fazer o seu do zero).

Parafraseando um amigo meu, o Alberto Fabiano, dizer que o Arduino é o futuro é como dizer que carrinho de rolimã é o futuro da indústria automobilística. Arduino é um kit para aprendizado que pode ser usado como base para projetos eletrônicos simples. Não é o futuro e, principalmente, não é um processador (se você acha isso, honestamente estude mais, pois está passando vergonha por aí).

Tirando o marketing, eu acho sensacional termos um hardware desses, disponível para compra e uso livre por hobbistas pelas possibilidades que ele abre. Imagino a quantidade de projetos simples que todo professor Pardal, Tony Stark ou Bruce Wayne enrustido ou inibido por um ferro de soldas poderá criar, mas não vejo muito mais do que isso.

E você caro entusiasta, não espere ver o Arduino em sua forma crua ser usado em hardware comercial. Muita gente irá ganhar dinheiro com ele, principalmente o pessoal que o vende como “revolução”, mas nada além disso. Desenvolver hardware é muito mais do que acender LEDs ou fazer um motor girar. Esse é um extasiante primeiro passo que todos devem dar, mas nada além disso.

Post update (25/08/2010):

Fiz algumas modificações no post, pois algumas partes davam a entender algo diferente do que quis dizer. Esclarecendo: não sou um velho chato reclamão, não acho o Arduino besteira e nem perda de tempo, só não podemos o deixar fora do contexto OSHW, esse sim o lado revolucionário da história.

O cliente tem sempre razão?

Semana passada um cliente me pediu para colocar um site no ar. Um site em Rails, simples, e eu optei por hospedar em uma empresa brasileira. Segui o tutorial do provedor para adicionar a receita de deploy na minha aplicação e, após o famoso cap deploy, recebi um erro de dependências.

O site, antigo, usa a versão 2.3.11 do WillPaginate, que ainda chamava mislav-will_paginate. Solicitei ao suporte desse provedor que instalasse a gem em questão, de maneira clara e transparente como pode ser visto abaixo:

Preciso que sejam instaladas as seguintes gems para mim:

- mislav-will_paginate (2.3.11)
- authlogic (2.1.3)
- bcrypt-ruby (2.1.2)

Eis a resposta que recebo:

Prezado Cliente,

O senhor pode fazer o upload da aplicação para o servidor seguindo o tutorial em …

Reli a minha solicitação inicial dúzias de vezes para ver se eu não havia sido claro o suficiente. E tentei de novo:

Acredito ter sido claro em minha mensagem. Segui as instruções deste tutorial e recebi os erros apresentados na minha mensagem inicial, indicando a necessidade de instalar as gems listadas por mim.

Peço que as instale e me retorne. Gostaria de colocar o site no ar este final de semana e dependo apenas disso.

No mesmo dia fui informado de que as gems foram instaladas. Eu, todo pimpão, fui lá e cap deploy de novo. E novamente o problema com o WillPaginate.

Ainda com problemas. Vcs não instalaram:

- mislav-will_paginate (2.3.11)

Aguardo retorno.

E veio o retorno:

Prezado Cliente,

No acesso via ssh demos o comando gem list e o resultado foi:

(longa listagem de gems intaladas)

Todas estas gems estão instaladas, inclusive will_paginate (2.3.14).

Ok, eu escrevi em grego. Ou em russo, ou em algum idioma que o rapaz do suporte não conhece. Naquele momento pensei em mudar de provedor, mas sou brasileiro e não desisto nunca, então tentei outra vez (como na música do Raul):

Ok, mas a gem que quero é a MISLAV-will_paginate versão 2.3.11, como mencionei desde o começo. Use o comando abaixo:

$ sudo gem install mislav-will_paginate -v=2.3.11 –no-ri –no-rdoc
Password:
Successfully installed mislav-will_paginate-2.3.11
1 gem installed

E terá:

$ gem list –local | grep “mislav-will_paginate”
mislav-will_paginate (2.3.11)

E o que recebo em troca?

Prezado Cliente,

A gem mislav-will_paginate não existe mais; ela é chamada apenas will_paginate agora. O senhor pode observar o link da Gem no rubygems.org:

http://rubygems.org/gems/will_paginate

Desisti. Migrei a aplicação para o Heroku e estou felizão lá.

Mobilidade a la Microsoft

Não vejo, a um bom tempo, nada feito pela Microsoft voltado ao mercado mobile ter algum resultado decente. Exemplo mais recente foi o lançamento a dois meses do Microsoft Kin, alardeado em todo o mundo e com alguns mais exaltados os chamando “iPhone Killers”. Pois bem, depois de vendas pífias e de uma redução de preços que beirou os 50% o produto oficialmente morreu em 60 dias.

Eu já tive um dispositivo móvel com Windows e fui muito feliz com ele, mas acho que eles perderam o bonde a alguns anos. O dispositivo em questão era um HP Jornada que, na época, dava uma surra nos concorrentes monocromáticos Palm e Psion. Mas hoje não compraria nada com o ícone do Windows.

O iPhone veio para mostrar que não precisamos de alguns recursos computacionais nos celulares. Sua interface simples de usar, intuitiva e poderosa deixou claro a todos qual deveria ser o caminho a seguir, e tudo o que veio depois do iPhone tem essas características embutidas.

Eu, por exemplo, tenho um Nokia n95 8GB. É um excelente celular, mas possui alguns recursos que a maior parte dos humanos não tem a menor ideia de como usar, sendo o exemplo mais gritante a multitarefa. Meu pai não precisa disso, e isso quer dizer que a maior parte da humanidade não precisa.

A ideia da Microsoft, um celular voltado ao mercado jovem com acesso as redes sociais, parecia uma ideia boa, mas qualquer um que já tenha acessado a internet com um iPhone ou um Android sabe que é possível ter uma experiência de qualidade numa tela pequena. O iPhone, por exemplo, possui um browser fantástico e as possibilidades que o multitoque possibilitam o tornam intuitivo e usual.

Por fim, que o Microsoft Kin descanse em paz com outros produtos da empresa, como o Windows Me e o Windows Vista. Espero que a Microsoft não desista de lançar produtos desse tipo, pois concorrência é o que move o mercado.

Vamos crucificar o Dunga?

Em 10 minutos lendo os jornais vi dúzias de críticas ao Dunga. Claro que os jornalistas estão todos unidos e revoltados com o capitão da seleção, que está certo e fez o que tinha que fazer. Agora, com a derrota, vão crucificá-lo?

Dunga peitou uma empresa gigantesca que possui o monopólio da informação no Brasil. Foi coerente e nem mesmo a vitória o pouparia do escárnio. A derrota então? Os urubus de plantão deviam estar com textos prontos, possivelmente com um nome que não despertasse suspeita, tal qual o Extra e seu anúncio com a eliminação do escrete canarinho.

Felipe Melo talvez já mereça alguns comentários que não farei aqui, afinal como eu disse tomar cartão amarelo em amistoso contra a Tanzânia é uma proeza que só um cara capaz de marcar um gol contra e ser expulso numa jogada bisonha (isso para não falar no seu posicionamento no segundo gol do Brasil) conseguiria. PVC estava certo em pergunta a ele durante uma entrevista: “Felipe Melo, você é jogador?”.

Agora começa a farra de 2014. Vão construir estádios com dinheiro público e abandonar após o evento, como as obras do Pan? Bem provável, e infelizmente isso e a imprensa em geral começam a mostrar que sim, aqui definitivamente é o Brasil.

Enquanto isso no Japão o rapaz que perdeu o pênalti que eliminou o país da copa ganha honrarias de herói.

Dunga e o desenvolvimento de software

Alguns dias atrás o Brasil todo viu o técnico da Seleção ofender ao vivo um repórter da Rede Globo de televisão durante a entrevista coletiva após o jogo. Dunga chamou o repórter de “cuzão”, entre outros impropérios, um termo usado para designar alguém que, na hora do confronto, foge.

A história é mais do que isso. A Rede Globo atropelou a autoridade do técnico, que proibiu entrevistas com jogadores fora do horário estabelecido pela FIFA, e foi falar direto com o chefe dele, que autorizou. Chefe esse que contratou Dunga para evitar nesta seleção o oba oba que ocorreu em 2006, com um time que tinha tudo para ganhar mas deu mais atenção a entrevistas, tiaras e meias.

O que aconteceu com Dunga é mais comum do que podemos pensar, afinal quem nunca passou nervoso com esse tipo de situação que levante a mão. Sempre tem alguém que aparece para mudar as coisas quando o projeto está encaminhado, quando as coisas vão bem.

Dunga, desconsiderando os palavrões, mandou bem. Proibiu a tal “exclusiva” e peitou a pessoa que queria o sacanear. Mostrou quem manda e o grau de seriedade esperado de um profissional que ocupa um cargo tão importante quanto o seu, cobrado por praticamente todos os brasileiros. Segundo dizem ameaçou pedir as contas, o que seria um soco no estômago do Ricardo Teixeira.

Hoje, após o jogo contra Portugal, vê-se por que Dunga deve ficar. Escalou o time perfeitamente, com Nilmar no lugar de Robinho e substituiu Felipe Melo na hora exata. Tem feito um bom trabalho e mostrado resultados, mas será cobrado caso as coisas não dêem certo. Dunga é um profissional vencedor, campeão do mundo com a Seleção Brasileira em 1994, mas também é um profissional que pagou pelos erros coletivos da seleção em 1990 (a chamada “Era Dunga”). Na área de desenvolvimento de software é fácil encontrar “Dungas” por aí, profissionais competentes que definham no meio de uma estrutura ruim, problemática.

Dunga aprendeu a lição com as derrotas de 1990 e de 1998. A seleção de 1994 era um grupo tão unido, tão coeso, que entrava em campo de mãos dadas, como uma grande corrente. Não havia espaço para estrelismos, para “ajeitadas de meia”. O time jogava junto, unido, em prol do resultado. A seleção de Dunga vai nesse caminho, jogando junto para obter o resultado.

Eu já vi projetos fracassarem por que os desenvolvedores não se preocupavam com o resultado, mas sim com outras coisas. Recentemente entrei num projeto que estava naufragando e fiquei abismado com a situação do mesmo: feito em Rails, com HAML e SASS, MongoDB e uma série de novas tecnologias. Alguns plugins usados no projeto eram tão novos que nem documentação direito tinham. Bugs eram uma constante e perdia-se muito tempo tentando fazer as coisas simples funcionarem.

Em uma primeira conversa com a equipe percebi que o objetivo do time não era ver o site no ar, mas sim aprender coisas novas. O comentário geral era que deviam pensar na carreira, e que queriam usar tecnologias quentes. Concordo, mas para um projeto que tem prazo deve-se sempre pesar quanto tempo será necessário para aprender as novas tecnologias, e se elas realmente terão o resultado esperado.

Após expor minha visão do projeto fui visto como um carrasco retrógado fadado ao desaparecimento. Um dos desenvolvedores deste cliente me chamou de velho e eu, no meio da saraivada de balas, propus a tal desenvolvedor um teste: se ele fizesse um site simples, um blog, em meio período usando as mesmas tecnologias poderíamos seguir naquele caminho, do contrário seria do meu jeito.

Ele topou, e após o almoço sentou-se na máquina, abriu o GEdit e o prompt e começou a trabalhar. Enquanto conversava com os outros desenvolvedores as vezes olhava de soslaio o que ele fazia, e lá estava o Google aberto e dúzias de abas no Firefox. Óbvio, estava perdido, pesquisando em fóruns e blogs o que fazer. Foi quando ele levantou-se e me chamou para conversar.

Foi franco, disse que achava inútil usar arquivos erb e afins se “todo mundo” estava migrando para o HAML, mas que dessa forma não conseguiria cumprir os prazos, nem do blog nem do projeto da empresa. Mais do que isso, disse que ele quem havia apostado nessas tecnologias e que realmente estavam perdidos, por isso que as coisas não avançavam.

Terminamos por substituir todos os plugins beta e afins do projeto por outros estáveis e já consagrados. Voltamos ao bom e velho MySQL (pois o projeto exigia um banco de dados relacional) e fizemos um estudo de HAML/SASS para facilitar a vida do pessoal que estava começando. Eu praticamente não fiz nada além de colocar o time para jogar junto, de unir a equipe e mostrar-lhes qual o motivo de estarem ali.

Dunga faz o mesmo. Mostra que o único caminho para a seleção é o título, qualquer outro resultado transformará os jogadores em derrotados eternos, com pouca ou nenhuma chance de rendição. Ele teve sua chance em 1994 e mostrou resultado. Ergueu a taça e gritou para quem quisesse ouvir o que ele pensava. A seleção é uma empresa, e o título o objetivo. Se todos trabalharem juntos tem tudo para dar certo, do contrário teremos um “novo 2006”. E quem está na coordenação deve fazer como Dunga: mostrar o caminho e remover qualquer obstáculo que impeça o grupo de chegar a seu objetivo.

Next Page →