14 May
Ultimamente, pelo que tenho visto, o sonho da maioria dos programadores é trabalhar para a Google, ao lado de algumas das maiores mentes do planeta. Mas, enquanto não é possível realizar esse sonho (afinal, mestrado e doutorado são demorados), podemos acompanhar diversas palestras promovidas pela Google, os Google Tech Talks. Preparei uma pequena (será mesmo?) lista com alguns dos Tech Talks mais assistidos que eu consegui encontrar. Clique em DESC para ver uma breve descrição da palestra e no nome da palestra para assisti-la.
Agile Retrospectives: Making Good Teams Great (DESC)
How Open Source Projects Survive Poisonous People (And You Can Too) (DESC)
Should Google Go Nuclear? Clean, cheap, nuclear power (no, really) (DESC)
Open Source Developers at Google Speaker Series: Camino (DESC)
Advanced Topics in Programming Languages: A Lock-Free Hash Table (DESC)
Energy Crisis Management: New technology enables alternative energy applications (DESC)
Competing On The Basis Of Speed (DESC)
Haiku: The Operating System (DESC)
7 Habits For Effective Text Editing 2.0 (DESC)
Alternate Reality Games and Perplex City Season 2 (DESC)
Mobiles, The Digital Divide, And Google (DESC)
7 Ways To Ruin A Technological Revolution (DESC)
Compiling Dynamic Languages (DESC)
An Inside Look At Google China (DESC)
How To Recruit, Motivate, and Energize Superior Test Engineers (DESC)
Se você acha muito interessante algum Google Tech Talk que não esteja na lista acima, coloque um link para ele nos comentários.
Posts Relacionados:
13 May
Outro dia estava voltando para casa de trêm, quando ouvi uma discussão muito interessante. Dois homens com entre 25 e 30 anos estavam conversando sobre Software Livre. Mais especificamente, sobre a distribuição linux Ubuntu, que um deles tinha instalado em seu micro, gostado, e agora fazia propaganda para o outro. Achei aquela conversa realmente inusitada. Até aquele momento eu não tinha notado até onde o software livre já tinha chegado.
Para mim, Software Livre (mesmo com toda a divulgação) ainda era algo que estava muito distante do dia-a-dia das pessoas. As vitórias obtidas até agora pelo movimento não pareciam atingir em massa as pessoas. As pessoas ainda querem algo “bonitinho”, mesmo que funcione muito mal (ou nem funcione).
O movimento sempre pensou muito mais na qualidade do software do que em sua aparência. Eu (estudante de computação), acho genial poder fazer tudo que eu queira com o meu micro sem nem mesmo aproximar-me do mouse. Amo teclas de atalho e aliases. Mas e uma pessoa que usa o micro apenas para fazer planilhas e acessar a internet? Por melhor que seja o lynx (que já me ajudou muito), ele deixa a desejar no quesito gráfico. Então, o que fazer? Temos o firefox, rodando sobre o X. Maravilha. Isso resolve a maioria dos problemas. Basta juntar o OpenOffice ou o BrOffice e praticamente tudo está resolvido. Noventa porcento das tarefas diárias de uma pessoa (que não depende do micro para viver) já pode ser realizada.
Mas qual o problema então? O problema é exatamente chegar a esse ponto. Mais precisamente, chegar ao ponto em que você tem o X rodando e um bom gerenciador de janelas (O meu preferido é o blackbox, mas nesse caso me refiro ao Gnome ou KDE). Eu concordo com a filosofia de que é muito melhor mastigar abelha do que beber mel. Acredito que isso nos leva a uma maior compreensão das ferramentas que estamos usando (inclusive as eventuais ferroadas que você vai tomar na boca). Mas isso exige muito do usuário - e não são todos dispostos a isso. Como eu disse, a maioria das pessoas apenas deseja fazer as planilhas de sempre e acessar a internet.
Mas como elas não estão nem um pouco interessadas em ferroadas, não irão fazer nada que exija mais do que responder a perguntas simples como “Em que pasta gostaria de instalar o aplicativo Y?” e apertar um botão escrito “próximo”. Por isso, é necessário que o Software Livre também possua essa face. E o Ubuntu é a distribuição linux que melhor compreendeu este problema. O antigo Mandrake (que se fundiu ao Conectiva, gerando o Mandriva) fazia a intalação sozinho, mas realmente não era uma distribuição linux muito agradável (além de demorar milênios para ser instalado).
O Ubuntu, por sua vez, além de fazer a instalação toda praticamente sozinho (inclusive o particionamento do disco rígido), é uma das distribuições linux que melhor detecta o seu hardware. Esse poder é tanto que, quando eu não sei a especificação de um determinado hardware, eu simplesmente inicializo o micro pelo LiveCD do Ubuntu e vejo qual é. Toda essa facilidade promovida pela distribuição é uma verdadeira pérola para o movimento. Com ele, qualquer pessoa pode simplesmente começar a adentrar no mundo do software livre, que ainda está muito afastado do cotidiano da maioria da população. Depois de instalar linux pela primeira vez, ele começa a ter um maior contato com todo o movimento, a ponto de passar a fazer parte dele e não ser apenas mais um espectador externo que pensa “Estou muito velho para aprender isso…”.
Acredito que todo o movimento do software livre pode aprender com os passos do Ubuntu. O Software Livre DEVE ser de alta qualidade, mas não devemos esquecer que também pode ser bonito. O Beryl e o Compiz são exemplos disso, também. Nem sempre o melhor é escolhido. Na verdade, na maioria das vezes o mais bonito é escolhido. E isso é ainda mais forte no mundo do software livre, que, para muitos, é algum tipo de “tecnologia incompreensível que apenas geeks e técnicos sabem como usar”.
Posts Relacionados:
12 May
Há algum tempo atrás analisamos no nosso blog algumas das extensões mais interessantes para o Firefox. Uma das mais interessantes é o Greasemonkey que permite inserir códigos nas páginas visitadas, adicionando funcionalidades no mesmo. Abaixo estão os scripts que atualmente uso:
Wordpress.com Random Post: Permite que você, depois de logado no WordPress.com, acesse um post aleatório de uma blog hospedado neste site através de uma opção na barra acima do site. Muito útil para acessar conteúdos antigos de blogs e poder analisar se eles são interessantes para a leitura.
Jasper’s Google Reader Subscribe: Com este script, você verá um pequeno icone no canto de toda página que tiver um link para RSS. Com um clique, você é levado ao seu Google Reader para se inscrever nesse RSS.Caso você já assiste esse RSS uma marca irá aparecer mostrando este fato. Muito útil para leitores de blogs.
Google Fool: Este é um script brincalhão. Na verdade muitos dos autores desse blog ficaram assustados com ele… Ele permite que você faça uma “pergunta” ao Google e ele de a resposta. Na verdade você digita /resposta/ e o que ele mostra na tela é uma frase pré-determinada. Você continua a frase do jeito que bem entender e faz a pesquisa. A pesquisa será da resposta dada, surpreendendo os espectadores.
Google Auto Pager: Ao fazer uma pesquisa no Google em que as palavras-chave são muita populares, temos que, normalmente, avançar várias páginas. Com esse script, ao chegar ao final de uma página de pesquisa ele irá automaticamente carregar a próxima página abaixo da atual, criando um scroll infinito no Google.
Auto Reload: Ao adicionar uma página nesse script, sempre que a mesma estiver aberta ela é recarregada minuto-a-minuto. Muito útil para sites que precisam ser carregados constatemente para ver as informações.
Este são poucos dos muitos scripts para Greasemonkey que existem na net. Caso conheça outros interessantes mande-nos um comentário!
Posts Relacionados:
10 May
1. Um (bom) editor de texto (Emacs/GVim): Um editor de texto bom é essencial para aumentar a produtividade de um programador. Apesar da existência de IDEs poderosas como o Eclipse, Netbeans e RadRails, o domínio de um bom editor é essencial para as tarefas do dia-a-dia, em que linguagens podem variar e os programas são em geral curtos. O Emacs e o GVim cumprem muito bem esse papel, com a capacidade de alterar a cor do texto conforme a sintaxe da linguagem, indentar o texto corretamente, abrir vários arquivos ao mesmo tempo - podendo até mostrar vários arquivos ao mesmo tempo na tela, aceitar plugins para estender as linguagens suportadas e as funcionalidades do editor e executar comandos diretamente do editor, podendo inclusive abrir uma shell para, por exemplo, compilar seu programa.
2. Controlador de Versão (CVS/SVN): Essencial para o desenvolvimento em grupo, os controladores de versão facilitam a edição simultânea dos mesmos arquivos, pois permite uma fácil junção das modificações feitas pelo grupo, além de permitir a recuperação de todas as versões anteriores de cada arquivo, possibilitando voltar atrás no desenvolvimento caso isso seja necessário. Eles são úteis também para a distribuição das versões mais recentes dos softwares, as famosas nightly builds, permitindo que os testers e early adopters analisem o software. Uma coisa interessante desses controladores é que são independentes de linguagem e podem ser usados até para outras finalidades, como controle de versões de um texto, por exemplo.
3. Documentador (Doxygen): Para qualquer programador, é realmente muito bom encontrar um biblioteca de funções bem documentada, de forma que não seja necessário despender dezenas de horas estudando algo que não é diretamente relacionado ao seu projeto. E, quando escrevemos um programa, também não podemos esquecer de criar uma boa documentação para ele, pois é possível que alguém precise consultá-la no futuro. E criar uma boa documentação é uma tarefa árdua que pode gastar bastante tempo e exigir muito esforço. Mas, com o auxílio de um documentador como o Doxygen (que suporta C, C++, Java, Objective-C, Python, IDL, PHP, D), a tarefa fica muito mais simples. Fica simples ao ponto de ser possível documentar logo após ter escrito um protótipo de uma função.
4. GNU Compiler Collection [GCC]:Uma boa coleção de compiladores pode ser a diferença entre escrever código portável (e que funcione) ou código que apenas compila (e funciona) na máquina onde foi escrito. E a coleção GCC cumpre com maestria não apenas essa função, mas diversas outras, como garantir que você programe em um determinado padrão (como o padrão ANSI de C). A GNU Compiler Collection possui compiladores para as seguintes linguagens: C, C++, Objective-C, Objective-C++, Java, Ada e Fortran. Também possui suporte (mas sem padronização) para Modula-2, Modula-3, Pascal, PL/I, D, Mercury e VHDL.
5. Ferramentas de Depuração (gdb, gprof): Um bom depurador, como o gdb [GNU DeBugger], é de grande valia para aqueles momentos em que você tem a completa certeza de que seu código está correto, mas em que o seu programa ainda insiste em não funcionar. Com ele, você consegue rastrear variáveis e interromper a execução do seu programa onde você achar melhor. E o gdb possui suporte para outras linguagens de programação (C , C++, Objective C, FORTRAN, Ada, Modula-2) e capacidade de lidar, ainda que parcialmente, com linguagens não suportadas.
Um profiler, como o gprof, ajuda na otimização do código, pois permite que sejam facilmente identificados os gargalos (pontos de alto consumo de tempo/processando muito amento), para que você possa melhorar o desempenho do seu programa dedicando mais esforço às partes que realmente fazem diferença.
Este post foi motivado pelo Top 5 - Group Writing Project do Problogger.net
Posts Relacionados: