terça-feira, 25 de agosto de 2009

Assinatura de feeds por assunto, no blogger

Uma informação últil para os leitores que acompanham este blog e/ou assinam meus feeds: talvez, algumas pessoas se interessem apenas por um ou outro dos assuntos que eu escrevo e queiram acompanhar somente o que falo sobre estes assuntos. O blogger, que hospeda o meu blog, provê uma solução para isto. Supondo que você só queira ler o que tenho escrito sobre livros, você pode assinar somente o feed http://blog.paulojeronimo.com/feeds/posts/default/-/Livros. Então, mais um exemplo para fixar: tudo o que eu escrevo sobre Python pode ser lido pelo Google Reader (por exemplo) através do acesso a URL http://blog.paulojeronimo.com/feeds/posts/default/-/Python para obtenção do feed.

Livros

Algumas vezes sou perguntado sobre os últimos livros que li ou que estou lendo, técnicos ou não técnicos. Tenho boas lembranças das últimas pessoas que me fizeram esta pergunta pessoalmente a alguns meses atrás: Danilo Bardusco e Guilherme Chapiewski, da Globo.com. Então, resolvi escrever este post apenas para divulgar que agora, toda vez que eu estiver lendo algum livro que eu considere relevante, ele terá o rótulo Livros. Eu atualizei os meus posts anteriores, quando eles citaram algum livro que li, incluindo este rótulo.

domingo, 23 de agosto de 2009

O Fator Gente Boa

Hoje comprei e começei a ler o O Fator Gente Boa, a tradução do The Likeability Factor de Tim Sanders e que me chamou a atenção pelo título.

O autor fala sobre o poder da simpatia para cativar as pessoas e crescer profissionalmente e explica como você pode elevar o seu Fator-GB (Gente Boa) ;-). Até o momento eu li os três primeiros capítulos (são seis ao todo): O que é o carisma; A antipatia não funciona; A simpatia funciona. Estou gostando desta leitura e por isto resolvi divulgá-la neste blog. Neste livro aprende-se um pouco mais sobre o quanto a simpatia e o carisma são necessários no trabalho e fora dele. A linguagem utilizada é clara, didática e enriquecida por vários estudos realizados sobre estes assuntos comprovando a eficácia do uso da simpatia em várias situações.

O que me levou a comprar e ler este livro? Bem... Eu confesso que não sou um exemplo de pessoa muito simpática, mas admiro profundamente pessoas que tem esta característica. E justamente por isto, tenho procurado melhorar sob este aspecto e aprendido muito a respeito, no trabalho e fora dele. Eu posso dizer que, em vários momentos, já fiquei tentado a escrever posts neste blog que seriam no mínimo "pouco elegantes" como diria meu amigo Helder Moreira que inclusive já me ajudou a evitar este tipo de comportamento. E realmente, apenas pela leitura dos capítulos iniciais deste livro, já posso perceber pontos que eu devo melhorar. Fora do ambiente de trabalho, uma pessoa de minha convivência que sabe ser extremamente simpática e carismática é minha sogra. Com tanta gente com problemas com sua sogra, eu a considero como uma segunda mãe. A simpatia e a autenticidade são duas características encontradas nela que atraem pessoas.

Mas voltando ao livro...

É fácil perceber que quando vendedores se vêem cercados pela concorrência, acabam se comportando de forma mais simpática e afável, não é verdade? Imagine que você tem um cargo de chefia e precisa decidir quem vai assumir aquele projeto especial que você vai coordenar. Por mais que queira se cercar de profissionais talentosos, você dará a vaga àquele que lhe é mais simpático. Isto é quase uma regra! A Booth Research fez um estudo para uma empresa de recolocação profissional que demonstra que a decisão de quem fica e de quem sai depende basicamente de quanto os supervisores gostam ou não de seus colaboradores. As coisas funcionam assim nestas situações: "Pessoas que não conquistam a simpatia de quem está no comando são sempre as primeiras a ser dispensadas. Não basta fazer um bom trabalho. É preciso encontrar maneiras de aumentar seu carisma". A simpatia tem a mesma importância na vida pessoal. Pesquisas mostram que pessoas simpáticas têm casamentos mais sólidos.

A antipatia por outro lado é como um lixo tóxico. Insultar alguém é o mesmo que envenenar a atmosfera com produtos químicos. Gritar com uma pessoa é como entupi-la de agentes poluentes. É verdade que, ao se comportar desta forma, você pode conseguir o que deseja rapidamente - por puro medo. Entretanto, não é preciso ser um gênio para saber que a antipatia troca um benefício imediato por um problema futuro. E hoje em dia, mesmo pessoas desagradáveis e antipáticas estão percebendo que seu dinheiro pode comprar várias coisas, menos afeto e lealdade.

Pessoas simpáticas despertam o que há de melhor nos outros. As pessoas são mais generosas com quem as tratam bem. A recíproca é verdadeira. Eu me recordo de um fato interessante que acontece aqui no Rio de Janeiro em algumas lanchonetes da rede Big Bi. O caixa da lanchonete, ao ser agraciado com a gorjeta de algum cliente, grita: "Caixinha!" ou "Caixinha gorda!" se a gorjeta for poupuda. Então, todos os funcionários da lanchonete pronunciam, em coro, um sonoro "Obrigado!!!!". Este simples fato parece motivar outras pessoas que escutam o agradecimento para que elas também ofereçam uma gorjeta. Nada melhor do que um coral de vozes lhe agradecendo por algo não é mesmo? Este gesto, junto com a atenção dispensada pelos funcionários, estimula a simpatia dos clientes.

Pessoas simpáticas são reconhecidas. Quase todo mundo tem a capacidade de nos ensinar algo, seja o pai, um sócio ou um amigo. Mas sua qualidade como professor dependerá de sua capacidade de cativar as pessoas. Seja na sala de aula, em casa ou no trabalho, se você for simpático, alcançará reconhecimento.

Pessoas simpáticas obtêm melhores resultados. Na luta contra o estresse diário, a simpatia ajuda a criar um contínuo feedback positivo - ou seja, os sentimentos positivos que você evoca em outras pessoas voltam para você, criando um incentivo constante e um antídoto para as tensões diárias da vida. Seja na linha de montagem ou na sala da diretoria, o desempenho melhora em ambientes positivos. As pessoas simpáticas não apenas dão conta do trabalho como motivam os demais a alcançar os mesmo resultados. Um líder agradável e atencioso faz com que a equipe se empenhe ao máximo.

Pessoas simpáticas superam os desafios da vida. Alcançam um progresso extraordinário na carreira. Embora seja difícil competir com quem possui nível superior ou uma ampla rede de contatos, tudo fica mais fácil se a pessoa tiver carisma.

Pessoas simpáticas são mais saudáveis. A auto estima é um dos principais motivos de as pessoas simpáticas serem mais saudáveis que às antipáticas. E uma boa auto-estima está associada a traços de personalidade como magnetismo pessoal. Pelo fato da simpatia trazer reciprocidade, isso aumenta nossa auto-estima e nos ajuda a lidar melhor com o estresse.

Alguns textos que encontrei sobre Tim Sanders e/ou seus livros aqui no Brasil:

E só uma dica para quem se interessou por este livro: eu o comprei por R$ 9,90 numa promoção do Extra da Tijuca. Livrarias que anunciam este livro o vendem por R$ 19,90.

quinta-feira, 13 de agosto de 2009

Porque migrar do JDK 5 para o 6?

Eu acredito que este post possa ser útil para equipes Java que atuam no desenvolvimento ou no suporte de aplicações para esta plataforma e que desejam justificar uma migração de versão do JDK em ambientes mais conservadores ou que exijam um grande esforço para esta tarefa. Muitas empresas que trabalham com tecnologia Java talvez ainda não tenham realizado este processo e meu objetivo aqui é apenas dar alguns motivos e referenciar alguns documentos que talvez ajudem a justificar uma troca do J2SE 1.5 para o Java SE 6.

O documento JDK 6 Adoption Guide (da Sun) é um guia para desenvolvedores Java que criaram aplicações que estão sendo executadas no J2SE 1.5 e estão considerando uma atualização para a plataforma Java SE 6. Ele apresenta as mudanças relativas a API, a código construído no J2SE 1.5 que não compila no Java SE 6, a dependências em relação a mecanismos de implementação, a APIs que estão caindo em desuso, a palavras chaves e novas funcionalidades. Em seguida, cobre mudanças na forma em que a plataforma Java SE é mapeada para o ambiente de implantação, incluindo instalação, configuração e a disponibilidade de serviços. Por último, fala sobre questões interessantes e avançadas para desenvolvedores que irão suportar o desenvolvimento de aplicações no JDK 6 construindo ferramentas que irão trabalhar em conjunto com ele.

O Java SE 6 Performance White Paper por sua vez, é um guia para os avanços na performance e na escalabilidade das aplicações de aplicações no Java SE 6 que demonstra vários benchmarks e o impacto destes avanços. Ele apresenta os diversos avanços em tempo de execução obtidos através de otimizações de performance nas primitivas de sincronização, na compilação, no coletor de lixo, no mecanismo de ergonomia e no tempo de inicialização. Também fala das novas plataformas suportadas e por fim dá dicas sobre como se aprofundar mais nos aspectos relativos a performance, melhores práticas, documentação, ferramentas, FAQs e exemplos de códigos.

Além dos avanços relativos a performance, várias novas ferramentas foram incorporadas ao Java SE 6 visando o gerenciamento de uma JVM, a monitoração da performance e o diagnóstico de problemas. Tais ferramentas, suas características e aprimoramentos no Java SE 6 são resumidas neste post de Mandy Chung. Dentre as ferramentas citadas neste documento, estão o jconsole, o jhat, o jmap, o jstack e o jinfo. Com o JDK 6, não é mais necessária a passagem de nenhuma opção na inicialização de uma aplicação para que estas ferramentas possam atuar na JVM desta. Além disto, a Atach API possibilita a criação de suas próprias ferramentas. O JDK 6 também traz significantes avanços na habilidade de se diagnosticar problemas de memória. A VM HotSpot provê a a habilidade de se requisitar um heap dump sob demanda a partir da ferramenta jmap, assim como também de maneira programatica. A ferramenta de análise de memória (jmap) adicionada ao JDK 6 possibilita a navegação sob os dados obtidos no heap dump. O OutOfMemoryError é um erro conhecido de programadores Java que, a partir do JDK 6, passa a obter um melhor suporte em seu diagnóstico. Este erro agora inclui um stack trace de onde ocorreu a falha. Outro avanço é a opção -XX:+HeapDumpOnOutOfMemoryError que diz a VM HotSpot para gerar um heap dump quando uma alocação de memória no heap ou na geração permanente não puder ser ocorrer. Além disto, a opção -XX:OnOutOfMemoryError=<comando> foi adicionada para que você possa especificar um comando a ser executado quando um OutOfMemoryError ocorrer. Para quem está executando aplicações Java num Solaris, também é possível agora, utilizar o DTrace para obter mais informações a respeito do comportamento de uma JVM 6 neste S.O. Alguns outros detalhes sobre as novas características de monitoração e de gerenciamento incluídas no Java SE 6 podem ser encontrados no documento Java SE 6 Monitoring and Management Enhancements. Dois guias para um aprofundamento na resolução de problemas no Java SE 6 são o Troubleshooting Guide for Java SE 6 with HotSpot VM e o Troubleshooting Guide for Java SE 6 Desktop Technologies citados na página Troubleshooting Java SE. Eles são úteis para que você possa obter detalhes sobre os procedimentos de uso das novas ferramentas incluídas no JDK 6, tanto para a solução de problemas na VM HotSpot quanto na ocorrência de problemas em aplicações gráficas para desktop.

O VisualVM (<jdk>/bin/jvisualvm), também é uma das novas ferramentas disponibilizadas a partir do Java SE 6. Ele é uma ferramenta visual que integra várias ferramentas de linha de comando do JDK e características de profile. Projetado para o uso tanto em tempo de desenvolvimento quando de produção, ele amplia a capacidade de monitoração e de análise de performance para a plataforma Java SE. Este vídeo apresenta algumas de suas características.

Em resumo, o JDK 6 é realmente superior ao 5 no que diz respeito aos aspectos performance, gerenciamento, monitoração e diagnóstico de problemas. Testes atuais também já começaram a indicar que o JDK 7 (ainda não lançado) chega a ser até duas vezes superior ao JDK 6, quando se trata do processamento aritmético e de arrays.

sexta-feira, 7 de agosto de 2009

Como tornar o Windows do seu trabalho melhor?

Como tornar o Windows do seu trabalho melhor? A resposta curta: instale um produto de virtualização e rode um Linux! Quer uma outra alternativa? Utilize o cygwin! :-)

Este post é para explicar os motivos que me levam a utilização de softwares de virtualização nos desktops que uso para trabalho, em meus contratantes. Antes de prosseguir na leitura deste post, leia este artigo sobre virtualização caso deseje ter um melhor embasamento sobre este assunto.

Uma regra comum em várias empresas é: Windows nos desktops e Linux nos servidores. E eu já fui e sou contratado por empresas aonde esta regra é aplicada. A questão é que eu já utilizo Linux a muitos anos. E atualmente, o Linux está tão maduro em termos de desktop que, no meu entendimento, não há porque não utilizá-lo neste ambiente a não ser pelo fato do aprisionamento que determinados softwares impõe e/ou pela diretriz da empresa.

Desde que trabalhei como funcionário da Brasil Telecom, em Brasília em 2002, começei a utilizar softwares de virtualização para me sentir mais confortável no trabalho e utilizar ainda menos o Windows e os softwares que os contratantes acreditam serem mais práticos ou eficientes para mim. Na época, eu utilizava o VMware e a virtualização, me abriu um caminho sem precedentes para isto pois, desta forma, eu conseguia manter o desktop com os softwares padronizados pelo contratante e, mesmo assim, ser feliz utilizando o Linux e os softwares que gosto e que me tornam mais produtivo em diversas atividades. Pelo uso da virtualização, eu inicio meu Linux de dentro do Windows, instalo os programas que preciso e os que gosto, e tenho controle total da minha máquina virtual (VM). Com esta solução, eu acredito não estar saindo dos padrões do contratante e nem perdendo produtividade já que eu sou mais rápido desenvolvendo minhas tarefas no Linux e, para utilizar a virtualização num desktop Windows, eu não preciso de modificar nada nele. O Windows irá ficar lá, só servindo de hospedeiro (Host) para uma VM através de um software de virtualização. Quando eu precisar de utilizar algum software do contratante, ele estará lá. E ultimamente, exceto pelas pessoas que tem restrições ao uso de software livre, ninguém tem motivos para não utilizar o VirtualBox, que é o produto que tenho instalado nos desktops de contratantes, quando necessito de virtualização em Hosts Windows.

Sob o ponto de vista de um administrador que precisa se preocupar com a segurança, o VirtualBox é apenas mais uma aplicação instalada no Windows. E, pelo fato de eu estar acessando a rede do contratante através de uma NAT interna entre o Host (Windows) e a VM (Linux), todas as regras de segurança aplicadas a esta rede são observadas já que o IP utilizado para acessar qualquer computador é o do Host. O VirtualBox também possibilita que eu tenha um IP válido na rede da corporação e/ou que haja um IP interno no Host que seja de uso exclusivo para a comunicação entre o Host e a VM formando uma rede privada entre ambos. Mas esta configuração é utilizada somente caso seja preciso estabelecer uma conexão do Host para a VM pois, no caso da conexão partir desta para o Host, o acesso via NAT já está pronto e configurado.

Outro aspecto importante para mim, na utilização de uma VM é a questão da portabilidade da mesma. Eu, em muitas situações, levo trabalho para casa. Realizo configurações na VM fora do meu ambiente de trabalho e as trago prontas no outro dia. Seria mais complicado e lento eu ter que acessar remotamente a rede do contratante e fazer este trabalho. Além disto, grande parte do meu trabalho atual está relacionado ao desenvolvimento de scripts e ao acerto de configurações de servidores. Minha máquina virtual é o laboratório que utilizo para a realização de experiências e é fácil fazer uma cópia de uma VM e retoná-la a um estado consistente, caso ocorra algum erro. Executar uma VM em outro Host não altera em nada a VM e esta característica é ótima para a portabilidade de um ambiente inteiro de trabalho.

Hoje em dia, vários processadores suportam recursos de virtualização. E este é também o caso do processador instalado no desktop do meu contratante. Isto torna ainda mais rápida e eficiente a execução da VM. O desktop atual que utilizo em um contratante, possui 2GB de memória e um processador AMD 64 com o suporte a algumas características que tornam ainda melhor o uso da virtualização. E eu aproveito estas características para extrair o máximo desta máquina. Outra forma de não quebrar as regras do contratante e, mesmo assim, ter a liberdade para utilizar o Linux é realizando a instalação do mesmo em outra partição (ou num disco externo) e utilizar dual-boot. Desta forma, o Windows fica ali, quietinho. O problema desta abordagem é que, quando preciso utilizar algum software daqueles que só rodam no Windows, eu preciso reinicializar a máquina ou instalar o software de virtualização no Linux e tornar o Windows uma VM. Esta é uma boa saída, mas exige configurações no Windows. A virtualização acaba com o problema do dual-boot, quando os software necessários conseguem rodar tranquilamente, com a memória alocada para a VM. E este é o inconveniente da execução de programas numa VM: pode faltar memória. Seria interessante que meu desktop de trabalho neste contratante tivesse mais memória pois, desta forma, tudo o que rodo no Windows poderia também ser executado no Linux ao mesmo tempo, na VM, sem preocupações a este respeito.

Em um de meus contratantes, um projeto que estou desenvolvendo é uma VM Linux para o ambiente de desenvolvimento de aplicações Java. Como eu já utilizo virtualização no desktop que uso, este projeto já existe e esta praticamente pronto nesta VM, atendendo aos requisitos da equipe de desenvolvimento e contendo as ferramentas mais utilizadas por ela no ambiente Windows (grande parte Java). Nos cursos que ministro eu levo outra VM Linux já preparada com tudo o que será necessário para o treinamento. E veja o custo disto em termos de instalação/configuração de ambiente do Cliente: apenas a instalação do software de virtualização nas máquinas do laboratório e a cópia da VM. Todo o restante, já está pronto. E, em se tratando de uma equipe de desenvolvimento, os ganhos com a utilização de uma máquina virtual padronizada são claros.

Para concluir então, a virtualização para mim é excelente solução. Ela me deixa muito contente em poder utilizar o meu Linux sem efetuar alterações significativas nos ambientes de meus contratantes.