RSS .92| RSS 2.0| ATOM 0.3
  • Home
  • Artigos
  • Publicações
  • Apresentações
  • Interviews
  • Livros
  • Contact
  • About
  • A importância do open source profissional

    May 18th, 2009

    Continuando o tema do meu artigo anterior, agora quero falar sobre a importância do open source profissional.

    Na última quinta-feira eu fui na palestra do Bruno Borges no RioJUG, sobre Apache Camel. A palestra em si foi bem legal, pois eu já conhecia um pouco do Apache Camel e pude ver algumas coisas a mais. Mas o ponto específico que eu quero abordar é um comentário que o Bruno fez, que diverge da minha postura em relação a open source.

    Ele comentou que tenta sempre utilizar produtos Apache, evitando produtos open source que tenham vínculo com alguma empresa, como JBoss, SpringSource, entre outras. Não me recordo do motivo exato, mas a razão principal que ele explicou é o fato da Apache Software Foundation ser uma fundação composta de pessoas, em vez de ser uma empresa com fins comerciais.

    Eu tenho uma postura diferente da dele em relação a open source. Eu gosto muito e tenho um respeito enorme pela fundação Apache. Já usei inúmeros produtos Apache e certamente continuarei usando por muito tempo. Entretanto, já usei vários produtos JBoss e vários componentes do Spring, e acho muito importante e saudável a existência dessas empresas.

    A história do movimento open source tem vários elementos “românticos” e “filosóficos”, e essa característica ainda é muito presente em várias comunidades hoje em dia. Entretanto, com o crescimento do Linux, Java, Python, Ruby e outras tecnologias, existe hoje um mercado enorme de trabalho e negócios em torno do software livre.

    O surgimento desse mercado naturalmente trouxe a participação de muitas empresas que vivem de software livre atualmente. Sei que há pessoas que enxergam open source e capitalismo como coisas opostas, mas na minha opinião essa visão é míope. Open source é um modelo de desenvolvimento de software e oferta de produtos e serviços. A busca do lucro é o que move nossas empresas, e isso não é diferente para quem atua com software livre.

    O surgimento das empresas profissionais open source foi importantíssimo para o amadurecimento das tecnologias e dos profissionais. Se o movimento open source continuasse restrito ao meio acadêmico, o nível de competição no mercado de software seria muito menor, e o avanço tecnológico teria sido bem mais lento.

    Além disso, minha postura profissional é de tentar sempre entregar os melhores resultados para os clientes e para a empresa em que trabalho. Em algumas situações pode ser mais adequado usar open source, em outras pode ser necessário usar software proprietário. Temos que nos adequar às necessidades dos clientes, em vez de esperar que eles se adeqüem às nossas preferências.

    No meu ponto de vista, empresas como JBoss e SpringSource contribuíram e contribuem muito no processo de profissionalização do software livre. A existência delas criou um mercado fortíssimo em torno do software livre, e eu só tenho a agradecer por isso.


    As diferentes culturas open source - Ubuntu x Debian

    May 18th, 2009

    Eu sempre gostei muito de open source, e durante a maior parte da minha carreira trabalhei com open source em vários níveis. Com freqüência eu penso sobre vários aspectos da cultura open source, e recentemente tive contato com 2 coisas em particular que eu gostaria de destacar. Falarei sobre uma delas nesse artigo, e sobre a outra no artigo seguinte.

    A primeira delas diz respeito à diferença de filosofia entre o Ubuntu e o Debian. Eu uso Kubuntu em casa há quase 3 anos. É a minha distribuição preferida, depois de já ter usado várias desde 2003, quando comecei a usar Linux em casa.

    Na sexta-feira chegou na Concrete o meu laptop para uso diário, um Dell Vostro 1510, e nesse fim de semana eu instalei nele o Debian Lenny e configurei tudo que eu precisava para já começar a trabalhar com ele na segunda-feira. Instalei o Debian porque ele foi definido como distribuição padrão da empresa, então tive que abrir mão do Kubuntu.

    O Kubuntu é baseado no Debian, então a grande maioria das coisas não muda entre os 2. Contudo, como diz o ditado: “O diabo está nos detalhes”. As notáveis diferenças entre o Debian e o Kubuntu são as coisas que o Kubuntu facilita demais, como configuração de conexão wireless, drivers multimídia do teclado, entre outras coisas. Nesses detalhes você consegue perceber claramente a diferença de cultura, pois o Debian tem uma postura quase religiosa quanto ao uso de softwares que não sejam “totalmente open source”.

    Já no Ubuntu, a postura é de usar open source ao máximo, mas facilitando a vida dos usuários. Assim, quando você precisa de um driver ou componente proprietário, o Ubuntu te avisa que não é totalmente open source, mas já prepara tudo para que você tenha o mínimo de aborrecimento. Isso faz toda a diferença, pois muita gente (como eu) quer usar um desktop Linux que “simplesmente funcione”.

    Quando eu comecei a usar Linux em casa eu gostava de fuçar e conhecer cada detalhe, como aprendizado mesmo. Isso foi ótimo para mim, e certamente me ajuda muito profissionalmente. Porém, hoje meu foco é outro, e eu quero que minha máquina “simplesmente funcione”, sem ter que estudar para configurar coisas cotidianas. O Ubuntu ganhou uma fatia enorme dos usuários Linux porque oferece isso. Já o Debian te oferece ricas aulas sobre o “pensamento verdadeiramente open source” e sobre os detalhes das entranhas do Linux. Mas a contrapartida é que você vai ter que estudar muito pra fazer coisas que no Ubuntu são triviais.

    Cada um tem a sua própria visão e postura sobre open source, e devemos respeitar as diferentes formas de pensar. Eu particularmente me identifico muito mais com a visão “open source profissional”, sobre a qual falarei no próximo artigo.


    Windows 7 ou KDE 4?

    May 14th, 2009

    Eu ainda não vi o Windows 7, mas soube que ele tem algumas coisas parecidas com o KDE 4. Um pessoal lá na Austrália fez uma pesquisa interessante. Eles levaram um note com KDE 4 nas ruas de Sydney e mostraram para as pessoas como se fosse o Windows 7. O vídeo está logo a seguir.

    É bem legal ver a reação das pessoas. Muitas gostaram muito do KDE 4, e disseram que é bem mais fácil do que o Windows Vista. Dá para perceber um nível razoável de insatisfação com o Vista nas críticas deles, o que para mim é bem natural. Eu odeio o Windows Vista, acho o Windows XP muito melhor. Felizmente eu uso Linux o tempo todo, então é ótimo ver a evolução do KDE.


    Torcer pro Rubinho é como torcer pro Botafogo

    May 10th, 2009

    Como bom fã de Fórmula 1,  assisti hoje de manhã à quinta corrida da temporada, realizada na Espanha. Eu já imaginava que o Button ganharia a corrida, mas essa temporada está totalmente imprevisível, então nada é garantido.

    Logo na primeira curva, o Rubinho ultrapassou o Button e conquistou a liderança da corrida. Como ele tinha mais combustível que o companheiro de equipe e o circuito dificulta as ultrapassagens, fiquei animado com a possibilidade de que ele finalmente ganhasse pela primeira vez no ano.

    Entretanto, mais uma vez os fatos mostraram que torcer pro Rubinho é como torcer pro Botafogo. Desde o começo você sabe que ele não vai ser campeão. Depois de tantos episódios frustrantes, você sabe que acreditar é pedir para se frustrar de novo. Entretanto, alguns momentos fazem você ter esperança de que a vitória é possível, e você fica empolgado com a possibilidade.

    Com o desenrolar dos acontecimentos, sempre ocorre alguma coisa e o adversário ganha. No caso do Rubinho, pela segunda corrida seguida - sem explicação lógica - ele fez uma parada a mais que o Button, que terminou a corrida na frente. Na corrida passada no Bahrein, essa parada a mais do Rubinho deixou-o no quinto lugar em vez de um possível terceiro ou quarto lugar. Dessa vez, uma estratégia igual à do Button teria dado a vitória ao Rubinho.

    O estranho é que além de ter feito uma parada a mais, as paradas não foram coerentes. A explicação para 3 paradas era minimizar o tempo com pneus duros. Pô, dava pra ter feito só umas 5 voltas com pneus duros, e mesmo assim talvez a vitória fosse pro Rubinho.

    Após a segunda parada do Button, era pro Rubinho ter umas 10 a 12 voltas com total condição de abrir vantagem suficiente para a vitória. As 2 últimas paradas do Rubinho foram bem depois de ele saber da mudança de estratégia do Button. Ele podia tranqüilamente abastecer de forma que o último trecho fosse bem curto, e que a vantagem fosse suficiente para ganhar a corrida. Isso ficou óbvio para mim, e creio que para muitas outras pessoas.

    Não sei bem explicar o que ocorreu com ele nessas últimas 2 corridas. Não sei se é uma reedição disfarçada do que ocorria na Ferrari. De qualquer forma, o Button é claramente mais piloto do que ele nesse momento, então não creio que essas manobras façam muita diferença no cômputo final.

    Eu, um rubro-negro convicto, descobri que na Fórmula 1 sou botafoguense. É impressionante a semelhança entre as sensações vividas pelos torcedores do Rubinho e do Botafogo. Eu sempre achei o Rubinho bom o suficiente para ser campeão da Fórmula 1. Ele é melhor que o Villeneuve e acho que deve ser do nível do Damon Hill. Entretanto, assim como o Botafogo, ele é o piloto do quase. Tantas vezes ele QUASE conseguiu.

    Apesar de tantas frustrações, vou continuar torcendo por ele. Os botafoguenses também não desistem depois de perderem tanto. Ainda bem que pelo menos no futebol eu torço pelo Flamengo :)


    Slideshow com jQuery

    April 28th, 2009

    No meu projeto atual eu tive que montar um slideshow para ser o destaque principal da Home do site. O site terá 4 pilares principais, e o objetivo deste slideshow é ficar alternando entre o destaque diário de cada pilar. Eu ainda preciso fazer alguns ajustes de conteúdo, mas a implementação está bem próxima do que será o definitivo.

    Eu construí esse slideshow usando um plugin do jQuery chamado s3slider. A estrutura do slideshow em si era parecida com o que eu precisava, mas eu tive que customizar um bocado o HTML e CSS do exemplo dele. Foi um ótimo exercício, porque eu tive que lidar muito com transparências dos elementos, e isso é uma coisa que varia um pouco de um browser pro outro, e deu um certo trabalho pra acertar.

    Para vocês verem que maravilha é o jQuery, o slideshow funcionou de primeira no Firefox 2 e 3, Safari, Google Chrome, IE 6 e 7. No Opera ele não ficou “tão suave”, mas acho que dá pra aceitar esse pequeno “defeito” :)  A questão de lidar com as transparências eu tive que tratar, porque é CSS. Mas o javascript do slideshow, God Bless jQuery!

    Slideshow com jQuery

    Como o site ainda não foi para produção, eu removi todo o conteúdo que podia identificar o site, e coloquei alguns conteúdos ilustrativos no lugar. Com isso, troquei a imagem de publicidade pelo escudo do mais querido, e coloquei alguns textos aleatórios que me vieram à cabeça agora há pouco.

    Espero que vocês não se incomodem também de eu ter colocado meus carros para deslocamento no jardim de casa. Eram as fotos que tinham o tamanho adequado, então deixei elas mesmo :)

    Clique aqui para ver o slideshow funcionando aqui no meu site. Clique aqui para baixar o zip com os arquivos do slideshow.


    Dicas de estudo para se tornar um desenvolvedor web produtivo

    April 27th, 2009

    Um amigo meu me pediu umas dicas de estudo para se tornar um desenvolvedor web produtivo e com boa empregabilidade. O ideal para ele é ter como base a plataforma Java, mas sem ficar restrito a Java. Talvez isso possa ser útil para outras pessoas também, então colocarei as dicas a seguir.

    Framework web Java

    Considerando o critério empregabilidade, é fundamental conhecer razoavelmente Struts 1.x. Eu creio que poucos projetos hoje em dia sejam iniciados usando o Struts 1.x, mas a quantidade de aplicações em produção com esse framework é enorme, e durante um bom tempo essa realidade ainda se manterá.

    Depois do Struts 1.x, nenhum outro framework web Java conseguiu adoção semelhante, então é difícil recomendar uma opção mais moderna que garanta alguma coisa. É provável que a melhor opção “moderna” em termos de empregabilidade seja Java Server Faces, mas não me sinto bem em recomendar que ninguém estude JSF. Se alguém quer seguir na linha do JSF, eu recomendaria o JBoss Seam, do qual ouvi boas avaliações, mas nunca usei.

    Dos frameworks web Java mais recentes, o meu preferido é o Spring MVC 2.5.x. O importante da versão 2.5 em diante é que os controllers suportam anotações para configuração, em vez dos XMLs monstros que eram a opção anterior. A maioria dos frameworks web está seguindo numa abordagem RESTful de arquitetura, o que me agrada também. O Spring MVC é um dos que está fazendo isso, e com uma abordagem legal.

    Além disso, todos os componentes do Spring acabam te “seduzindo” a usar outros componentes dele, pela conveniência e pela qualidade dos mesmos. Então se você usar o Spring MVC, é muito provável que use a injeção de dependências, o controle transacional, talvez o web flow, entre outras coisas.

    Frameworks web da “nova geração”

    Qualquer desenvolvedor web hoje em dia TEM OBRIGAÇÃO de olhar pelo menos um entre Django, Grails e Ruby on Rails. O ideal mesmo é avaliar os três e ter um deles como opção principal. Eu já conheço legal o Grails e estou evoluindo rápido com o Django. Em algum momento esse ano eu dedicarei um bom tempo avaliando e fazendo algo relevante com Ruby on Rails também.

    Pode parecer que leva um tempo enorme para conhecer os 3, mas isso não é verdade. Os 3 são extremamente produtivos e têm muitas características semelhantes. Quando você começa a utilizar um deles já tendo experiência com outro, a curva de aprendizado fica muito rápida.

    Um aspecto muito legal do aprendizado desses frameworks da “nova geração” é que você tem contato com outras formas de fazer software (para quem tem um background Java), outras comunidades, e várias idéias interessantes que te farão um programador melhor em qualquer linguagem ou plataforma. Se você ainda não conhece nenhum dos 3, não perca mais tempo e escolha um para começar. E de preferência conheça os outros em seguida também :)

    HTML, CSS, Web Standards

    Estamos em 2009. Embora ainda vejamos muitos sites bisonhos que só funcionam com o IE, se você é um desenvolvedor que se preza você precisa conhecer bem HTML, CSS e os web standards. Na verdade, fazer o site funcionar no IE 6 por exemplo é secundário. Você precisa aprender primeiro a gerar HTML e CSS válido de acordo com as normas da W3C, que garantem padrões de qualidade e interoperabilidade entre browsers. Leia de cabo a rabo todos os tutoriais referentes a essas coisas no W3Schools. É muito rápido estudar por lá, e é uma ótima referência depois.

    Depois que você conhecer isso, um pouco de prática na escola norueguesa de software fará suas aplicações rodarem no IE 6 também :)

    Javascript

    Ainda há pessoas que escrevem javascript na unha, mas acho que elas são cada vez mais raras. Temos hoje uma oferta enorme de bibliotecas javascript para resolver todos os problemas comuns dos desenvolvedores web. Eu era um fiasco em javascript antes de conhecer o jQuery, mas há um bom tempo eu gosto MUITO de javascript, e minha produtividade no client-side melhorou absurdamente.

    O jQuery tem uma abordagem que eu acho excepcional. Temos 3 aspectos claramente distintos para tratar em uma página web: Estrutura (HTML), Estilo/Visual (CSS) e Comportamento (Javascript). Se você fizer tudo direitinho e usar o jQuery, essas 3 coisas ficam totalmente desamarradas.

    Você não precisará colocar nenhuma declaração de estilo na estrutura (leia-se: sem CSS inline). A definição do comportamento fica totalmente por fora da estrutura. A beleza do jQuery está em aplicar todo o comportamento da página de uma maneira não-intrusiva, e com uma abordagem muito limpa. Ah, e o javascript funcionará em todos os browsers sem você ter que tratar disso explicitamente. Um sonho, não é mesmo? :)

    Há várias outras opções, e não estou defendendo a idéia de que se use apenas uma. Eu uso o jQuery para tudo que posso, e até hoje não precisei de outra biblioteca, mas vá em frente e experimente algumas opções até encontrar o que lhe atender melhor.

    Plugins legais do Firefox

    Firebug

    Além do jQuery, outra descoberta que mudou minha opinião e gosto por client-side foi o Firebug. Ele ajuda MUUUUUITO na criação do HTML/CSS das páginas, pois você consegue inspecionar de forma fácil o conteúdo e o estilo, e aplicar mudanças imediatas sobre o que está vendo. Depois de acertar as coisas pelo Firebug, você simplesmente aplica as mudanças no HTML/CSS originais e continua implementando sua página. Além disso, ele te permite debugar javascript e analisar as requisições HTTP detalhadamente. Eu já o utilizo há pouco mais de 1 ano, e ele contribuiu muito para meu amadurecimento no client-side, e me dá muito mais produtividade.

    Web Developer

    Um companheiro freqüente do Firebug é o Web Developer. Ele te permite inspecionar detalhadamente uma porção de coisas na sua página, como informações de todas as imagens, todos os formulários, estilos, entre outras coisas. Além disso, permite a manipulação de cookies, valida HTML/CSS/Javascript, e tem muitas outras funcionalidades úteis. É indispensável para trabalhar com web, assim como o Firebug.

    Screengrab

    É muito comum termos que mostrar uma página para outras pessoas, e nem sempre elas têm acesso à nossa máquina. Para facilitar isso, podemos usar o Screengrab, que é semelhante a um Print Screen, mas salva o conteúdo completo da página como uma imagem. Isso é bem melhor do que o Print Screen, pois pega apenas a área útil da página (sem pegar barras do Firefox e barra de tarefas) e pega toda a área útil. As regiões da página que precisam ser “roladas” para visualização também são incluídas na imagem, o que é certamente o desejado.

    NoScript

    O NoScript é um plugin bem incômodo para uso em geral. Ele bloqueia a maioria dos javascripts e você precisa ficar liberando a execução de scripts toda hora. Quando não estou desenvolvendo eu sempre deixo ele desligado.

    Entretanto, para desenvolver ele ajuda em algumas situações. Por exemplo, você pode precisar desabilitar alguns scripts específicos da sua página para testar alguma coisa, ou testar se a página funciona sem scripts. Ou então você pode ter uma situação como uma recente minha.

    Eu tive que customizar um plugin do jQuery que faz algumas animações, e aí o HTML da página ficava mudando o tempo todo. Eu precisava customizar o HTML/CSS de vários “instantes” da animação, mas era impossível fazer isso com a animação rodando. Para resolver isso, eu usei o NoScript para interromper os scripts exatamente no trecho da animação que eu precisava mudar o HTML/CSS. Com isso, eu conseguia um HTML estático que eu podia mexer pelo Firebug, e consegui trabalhar tranqüilamente nas customizações que eu precisava fazer.

    Conclusão

    Deixei algumas opiniões e dicas sobre algumas coisas de desenvolvimento web, mas é óbvio que eu também tenho muita coisa a aprender. Se alguém discordar de alguma opinião minha ou quiser acrescentar sugestões, estejam convidados a participar :)  Além disso, se alguém tiver mais dicas de extensões do Firefox para desenvolvimento web, eu sempre estou interessado.


    Será que o bonequinho vê os filmes??

    April 26th, 2009

    Ontem à noite eu fui ao cinema, e vi o pior filme da minha vida no cinema (na TV eu já devo ter visto 1 ou 2 piores), um filme chamado Tony Manero. Coloquei o link para a avaliação do filme pelo Bonequinho do jornal “O Globo” aqui do Rio, no qual vocês podem constatar que o bonequinho aplaude de pé!!!

    Tudo bem, a culpa foi minha. Eu vou com freqüência aos cinemas de Botafogo, e como há 4 cinemas próximos, muitas vezes eu deixo para escolher o filme na hora. Para meu azar, o único filme que estava para começar quando eu cheguei era o Tony Manero, e lendo que o bonequinho aplaudia de pé, decidi ver esse mesmo.

    O impressionante é que no pôster do filme constavam 2 premiações como melhor filme e melhor ator, nos festivais de Havana e Varsóvia. A premiação de melhor ator eu consigo até conceber. Se o papel do ator era representar o sujeito mais repugnante e desagradável possível, ele conseguiu, pois o contexto do filme já inspirava irritação. Mas eu puder perceber que praticamente todas as pessoas saíram da sala revoltadas com o péssimo filme, então que raios de festivais são esses?!?

    Na crítica do bonequinho a frase que sintetiza a avaliação é a última: Decifrar o personagem cabe ao espectador, que é brindado com uma atuação antológica de Alfredo Castro e convidado a apreciar este filme brilhante, feito na medida para quem tem a mente aberta e o estômago forte.

    Calma lá meu camarada! Eu não fui brindado com o ácido que você anda tomando! E se o filme foi brilhante eu imagino que cenas exóticas o companheiro vê pelas ruas. Mas ele acerta quando fala da mente aberta (na verdade ela tem que estar VAZIA!) e do estômago forte.

    Pode ser que eu simplesmente seja muito tapado e não tenha enxergado o filme deslumbrante que o bonequinho viu. Mas serei suficientemente esperto para nunca mais olhar o que o bonequinho está falando.


    Bruno Pereira is Digg proof thanks to caching by WP Super Cache!