sexta-feira, 28 de junho de 2013

Configuração do WiFi no Raspberry Pi (Debian 6)

Esta "carretinha" pra moto chama-se WiPi, que é homófona do módulo WiFi do Raspberry Pi, o Wi-Pi.

No TDC2013 em Florianópolis comprei meu primeiro Raspberry Pi, juntamente com o módulo WiFi. Tudo rodou perfeitamente, mas acredito que levei muito mais tempo do que gostaria para configurar o módulo WiFi (Wi-Pi) no Debian 6. Foram quase 2 horas de trabalho, e vários sites diferentes mostrando formas de configuração diferentes. Mas consegui.

Para os impacientes, segue abaixo a receita de bolo. É só copiar e colar no terminal do seu Raspberry Pi com Debian 6. Basta alterar o MEUSSID e a MINHASENHA pelo SSID e senha do seu WiFi, respectivamente. Lembre-se de depois reiniciar o seu Raspberry Pi.

Pra quem quiser saber o que está acontecendo, a "mágica" acontece com o wpa_supplicant, que é uma daemon que conecta o seu módulo WiFi em diferentes APs (Access Points) dependendo do SSID encontrado.

A linha wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf do arquivo /etc/network/interfaces informa que você quer conectar no AP através do wpa_supplicant, e o arquivo /etc/wpa_supplicant/wpa_supplicant.conf contém as informações de SSID e senha. Você pode informar quantos blocos network={} desejar. Eu mesmo criei um bloco para conectar no AP da minha casa e outro bloco para conectar no AP do meu escritório.

IMPORTANTE: não se esqueça de reiniciar o Raspberry Pi após alterar as configurações. ifup/ifdown ao menos não funcionaram comigo.

segunda-feira, 3 de junho de 2013

Minha passagem pelo TDC2013 Florianópolis


Muito feliz. Este é o sentimento que tenho para descrever como me senti após participar do TDC2013 em Florianópolis.

Confesso que minha experiência na participação em eventos não é vasta, e participo do TDC em Florianópolis apenas pela segunda vez. Mesmo assim descobri que cada evento possui uma atmosfera diferente. Um evento não é somente as palestras, as pessoas, as guloseimas, as festas. Um evento é o conjunto da obra. É aquela velha estória que diz que o todo é maior que a soma das partes.

Este ano pela primeira vez ocupamos o Oceania Convention Center na Praia dos Ingleses. Se o ano passado a impressão era que tudo estava meio "apertado", este ano a certeza é a de que o TDC encontrou o lugar adequado.

Acredito que o que me deixa realmente satisfeito é poder participar de uma comunidade. É por encontrar, rever e conhecer pessoas maravilhosas como +Yara Senger+Vinicius Senger+Bruno Souza+Otávio Gonçalves de Santana+Bruno Borges+Jomar Silva+Elias Nogueira+Aldrin Leal+Klaus Boeing+Michel Graciano+Manoel Pimentel+Rodrigo Cândido da Silva+Marcondes Maçaneiro+Neto Marin+Marcelo Quinta e várias outras pessoas fantásticas que um evento como este vale a pena. Acompanhado de muito camarão e a vista da praia, melhor ainda.

Pude ainda contribuir com 3 palestras, nas trilhas Java University, JavaEE e Arquitetura. Espero que tenham sido proveitosas aos que assistiram. Abaixo segue o link com os slides no Speakerdeck.

https://speakerdeck.com/yanaga/entrega-continua-continuous-delivery
https://speakerdeck.com/yanaga/jpa
https://speakerdeck.com/yanaga/artesanato-de-software

segunda-feira, 13 de maio de 2013

Ter um filho, escrever um livro e...


Plantar uma árvore! Há um ditado popular que diz que para ter uma vida realizada basta "ter um filho, escrever um livro e plantar uma árvore". Não necessariamente nesta ordem, já que o que importa é o conjunto da obra. Filhos já tenho dois, e finalmente escrevi o primeiro livro. A árvore ficará para depois...

Confesso que achei que seria mais fácil. Escrevi o livro a convite do EAD do CESUMAR para a disciplina de Banco de Dados. Banco de Dados não é exatamente a minha área de atuação, mas é algo com que inevitavelmente acabo trabalhando no cotidiano.

Inúmeras horas de esforço, muitas noites dormindo muito pouco e várias palavras depois surgiu o resultado. A quem teve a oportunidade de lê-lo, espero que tenha sido proveitoso. Sempre fica a sensação e o desejo de ter feito um trabalho melhor. Infelizmente a pressão do tempo me obrigou a termina-lo, mas ainda bem que foi assim: caso contrário nunca teria fim.

Este foi um livro que os meus compromissos profissionais me obrigaram a produzir; mas com esta experiência espero poder ainda este ano ao menos iniciar um outro projeto: escrever um livro por puro prazer. Aos poucos venho desvencilhando-me de várias outras atividades para tentar fazer algo que há anos está no meu desejo. Espero que consiga. Quem sabe daqui a um ano posso ter algo melhor pra compartilhar com vocês.

terça-feira, 7 de maio de 2013

Eu não acredito (mais) em super heróis...


Há cerca de 3 anos tenho passado pelo momento profissional mais delicado da vida até então. Muita coisa aconteceu, muitas reflexões se passaram e agora que a trajetória volta a se tornar uma ascendente posso compartilhar um pouco das duras experiências que tive.

Durante muito tempo acreditei que para ter sucesso em algo bastava ser muito bom naquilo. O sucesso seria consequência. Entretanto, ser bom naquilo que faz pode te ajudar muito sim, mas de nada vai lhe adiantar se ninguém souber disso. Descobri que tão importante quanto ser bom é permitir que os outros saibam o quão bom você é. Não que eu o seja, mas como diz o ditado, "galinha que não põe ovo vai pra panela". O importante é cacarejar. Mesmo que o seu ovo não seja lá essas coisas...

Senti também que o meu idealismo sobre software livre, métodos ágeis, código bem feito, artesanato de software etc poderiam transformar o mundo. E, tolo ou não, continuo acreditando nisso. Mas descobri que sou humano, e para atender minhas necessidades mundanas preciso de algo chamado dinheiro. Percebi que enquanto eu não tiver dinheiro suficiente para sustentar o meu mundo, não conseguirei mudar o mundo de ninguém.

Sinto-me também um perfeccionista. Mas ser perfeccionista é muito diferente de ser perfeito. E dói muito descobrir pela experiência que quanto mais vivo, menos "perfeito" eu me torno. Também não que um dia eu o tenha sido, mas perceber que a distância entre você e o seu ideal aumenta não é algo agradável. Acredito também que não tenha me tornado pior: só a visão da realidade é que se tornou menos embaçada.

Durante um bom tempo também me senti um hipócrita. Por conveniência, falta de dinheiro ou de tempo muitas vezes disse SIM quando deveria ter dito NÃO. E continuo afirmando que dizer NÃO é bom, pois as vezes em que o fiz valeram a pena. Também prometi prazos que não pude cumprir, criei código do qual não me orgulho, atualizei sistemas sem os devidos testes... E sofri as consequências de cada uma destas atitudes. Já me auto-flagelei e sofri o suficiente com isso. Hoje não mais.

Hoje não acredito (mais) em super heróis. Hoje ainda tenho as pessoas que admiro, mas não acho que alguém possa ser um "super herói". Pelo menos não o tempo todo. Hoje creio que todos, por melhor que sejam, precisam de um "alter-ego" humano. E como todo humano, erram. Eu, particularmente, erro demais. Novamente não que possa ser herói de qualquer coisa, apenas tenho minhas convicções e ideais. Nestes, continuo acreditando. E os continuarei defendendo e divulgando. E errando muito mais.

Aprendi que a vida não é decidida entre o certo e o errado. E que ninguém pode estar "certo" o tempo todo. Se vocês acreditam que fazendo software melhor, estarão participando de um mundo melhor, parabéns. Vocês já estão na jornada do artesão de software. E mais do que dar os passos certos, o importante é estar no rumo certo. E se vocês fraquejarem e errarem pelo caminho, não se sintam mal. Vocês não estarão errando sozinhos..

Boa jornada! Mas tenham dinheiro pelo menos para as passagens, caso contrário não chegarão a lugar algum...

sábado, 4 de maio de 2013

Não, o problema não é a linguagem. O problema é você.

Sim, o problema é você.
Nos últimos meses tenho lido e presenciado um volume considerável de programadores reclamando das linguagens de programação com que trabalham. Acho justo, já que como disse Bjarne Stroustrup, existem somente dois tipos de linguagens de programação: aquelas das quais as pessoas reclamam, e aquelas que ninguém usa. ("There are only two kinds of languages: the ones people complain about and the ones nobody uses").

Mas darei nome aos bois: tem muito programador Java por aí querendo migrar para linguagens como Ruby ou Scala só porque em Java "é muito difícil fazer isso ou fazer aquilo". Nada contra migrar de linguagem. Eu até gosto de estimular a diversidade, pois considero que na jornada para se tornar um artesão de software é necessária essa ecleticidade de conhecimento. O problema é o motivo.

Ruby (ou Scala, ou coloque sua linguagem favorita aqui) tem closures. Java não tem (ainda, diga-se de passagem). Ou qualquer outro motivo parecido. Daí eu pergunto: você realmente sabe o que é uma closure? Sabe usar e pra que serve? E estas perguntas valem também pra qualquer motivo.

É uma questão de bagagem. Ao invés de tentar procurar uma linguagem melhor, o verdadeiro objetivo é como conseguir ser um programador melhor. Perdoem-me, mas muitos dos quais ouvi essas coisas programam mal. Muito mal. E não é "achismo". É a experiência de ter programado junto. Outra parte não posso afirmar que programa mal, pois não tenho esta experiência. Mas onde há fumaça...

Escolha uma linguagem e fique com ela. Até ficar bom. Não importa qual. Quão bom? Bom o suficiente pra perceber suas limitações em saber o que realmente está fazendo. Afinal de contas, pense como empregador: você prefere alguém que é ruim em várias linguagens ou alguém que é no mínimo "meia-boca" numa única? Vale uma reflexão, mesmo que seja pequena...

Pois no final de tudo uma linguagem de programação é apenas uma ferramenta que lhe permite expressar suas ideias. Se você não possui ideias (ou possui ideias ruins) e não sabe expressá-las corretamente, qualquer linguagem serve: Algol, Fortran, Cobol, C, Java, C#, Ruby, Scala ou Clojure. Você não vai conseguir usar nenhuma mesmo...

domingo, 19 de agosto de 2012

Redfoot JUG agora no Google Groups



Desde a fundação do Redfoot JUG em 2004 hospedávamos nossa lista de discussão na infraestrutura do java.net. Somos muito gratos por todo o tempo em que pudemos utilizar os serviços da CollabNet e agora do Kenai.

Mas as coisas evoluem, e é certo afirmar que o Google Groups evoluiu bem mais do que o Kenai que nos hospedava até então. Através de uma enquete democrática no nosso grupo, fizemos uma votação pela migração e tivemos 12 votos a favor, e quase 300 abstenções (que são as pessoas que não responderam ao meu e-mail).

Hoje, dia 19/08/2012 adicionei todos os e-mail da lista antiga através de convites no nosso novo grupo de discussão no Google Groups. Confesso que foi uma tarefa bem trabalhosa, pois não há nada que possa automatizar, e tanto no Kenai quanto no Google Groups eu só consigo manipular 10 e-mails de cada vez. O bom disso tudo é que eu estou quase craque em responder captchas, pois acho que foram quase 50 um atrás do outro.

No decorrer desta semana creio que todos os realmente interessados no nosso grupo aceitem os convites e eu possa desativar enfim a antiga lista.

Quem tiver interesse em se inscrever no grupo, pode acessar o grupo em https://groups.google.com/d/forum/redfoot-jug

sábado, 30 de junho de 2012

Validação do CNS (Cartão Nacional de Saúde)


Durante a semana que passou tive que implementar um código para validar o número do CNS (Cartão Nacional de Saúde), que passará a ser obrigatório a todos os brasileiros. O próprio site do SUS apresenta um exemplo em Java (e em outras linguagens).

Utilizei o código de exemplo, mas na minha opinião ele está tão mal feito que isso passou a manhã inteira me atormentando. Fiquei tentando me convencer de que "você tem um prazo para cumprir, o importante é funcionar", mas não consegui. Logo depois do almoço tive que refazê-lo. O relevante é que se você analisar o código para verificar "o que ele deve fazer", ao invés do "como fazer", perceberá que é algo extremamente simples. Passei de 93 linhas para as 15 abaixo.

Código bem-feito:

O projeto que contém este código, os testes e outras benesses está disponível em https://github.com/insula/opes

Para quem tiver curiosidade em saber como é o código original no site do SUS, segue abaixo. Mas cuidado! Pode causar náuseas e vômitos. Se tiver estômago forte, pode seguir adiante...

Código "normal":