sexta-feira, 30 de dezembro de 2011

Beleza, software e distribuições Linux

Voltei para o Arch Linux como meu sistema operacional principal, devido a um pequeno motivo que sempre acaba me expulsando de outras distros: simplicidade. Cansei de arquivos de configuração feitos para serem editados por máquina (e não por humanos), de GUIs de uso obrigatório para ajustes no sistema, e de outras complicações desnecessárias. E isto permite uma reflexão sobre a questão da beleza.

Na matemática, uma solução 'bela' para um problema é simples e elegante. Usa o mínimo de axiomas, premissas e hipóteses possíveis, e pode ser facilmente generalizada para a resolução de diversos outros problemas do mesmo ramo. Evitam-se métodos muito complicados, number crunching etc... os quais são vistos como 'feios' e 'desengonçados'.

Podemos fazer uma analogia para um software bonito - não no aspecto da usabilidade, mas nos aspectos construtivos dele:
  • usar o mínimo necessário de bibliotecas;
  • ser o mais portátil possível (exceto em situações onde se usam recursos específicos de um sistema operacional);
  • ter documentação de qualidade onde ele não for auto-explanatório;
  • fugir dos anti-padrões de projeto;
  • ser facilmente adaptável para as mais diversas situações.

Como consequência, temos uma ferramenta ou um sistema mais fáceis de manter e de administrar. Torna-se simples modificá-lo para a resolução de diversos problemas, ou aplicá-lo em situações distintas. Eles se tornam mais convidativos para o trabalho em equipe e para o reuso de código.

Nesses aspectos, sinto que muitas das distribuições Linux sofrem de uma falta de elegância: scripts de inicialização pouco amigáveis para quem os edita manualmente, XML atirado para lá e para cá - obviamente prevendo que os arquivos serão editados por outros programas, pacotes fragmentados etc...

O mesmo com outros softwares, são pequenas coisas que conseguem estragar o dia de um sysadmin ou de um usuário mais avançado, como:

  • Configurações armazenadas em formato binário (ou XML) e que só podem ser feitas pela interface gráfica.
  • Reinvenções contínuas (algumas quadradas) de rodas diversas.
  • Excesso de dependências nem tão necessárias (e que no mínimo deveriam ser opcionais).
  • Ocultar mensagens de erro para o bem do usuário.
  • Entre outras diversas coisas que tornam a aplicação feia.  
Outro aspecto que a simplicidade traz é a flexibilidade: várias pequenas ferramentas podem - ou deveriam poder - ser interligadas para formar um todo, em vez de precisarmos de uma ferramenta monolítica para cada tarefa. Partes que se encaixam para formar um sistema, que podem ser reaproveitadas conforme necessário, e não um sistema 'faz tudo' altamente especializado em uma tarefa.

Da mesma forma, desenvolve-se uma vez e depois simplesmente se usa o trabalho já feito; o tempo gasto em debugging é menor. Facilita-se a portabilidade, e outras pessoas também podem aproveitar aquilo que já foi feito.

É importante notar que simplicidade não necessariamente se traduz em menor número de linhas de código, ou vice-versa: considero ser preferível escrever código um pouco maior, mas mais simples de entender, a usar hacks para economizar algumas poucas linhas de código. Soluções engenhosas são bem-vindas, desde que elas não sacrifiquem as premissas já feitas anteriormente.

Elegância e simplicidade para resolução de problemas não são más ideias: economizam recursos e evitam dor de cabeça para quem precisa ou quer interagir em um nível mais baixo. Podem custar mais na hora de desenvolver a solução, mas a longo prazo, simplificam o trabalho do desenvolvedor, do sysadmin ou de qualquer outro profissional.

E já que eu falei no Arch Linux, é justamente isso tudo que o Jeito Arch (The Arch Way) incorpora. Complexidade sem complicação, código simples e correto, ferramentas compactas e projetadas para interoperar. Arquivos de configuração feitos para serem lidos e entendidos por seres humanos. Tudo aquilo que pode ser considerado fundamental para um software bonito.


Recomendo, por fim, a leitura do excelente Most Software Stinks!, que define princípios gerais para um software bonito.

quarta-feira, 21 de dezembro de 2011

Mimimi pseudo-ativista

Recentemente, vimos o caso de uma pessoa que matou um cachorro de forma violenta, assim atraindo a ira de milhares de pessoas que clamam, com os olhos cheios de sangue, por vingança. (Quem é o animal irracional violento agora, por sinal?). É a galera metida a boazinha, a pseudo-ativista.

São os mesmos que compartilham fotos de animais mutilados, esperando uma tal "consciência" acontecer, mas logo depois colocam fotos daquele churrasco de domingo, esquecendo-se do sofrimento que ocorre na indústria da pecuária - tanto para animais quanto para os que nela trabalham, como no caso da Brasil Foods, uma das maiores produtoras de proteína animal do mundo (que orgulho para o agronegócio brasileiro!).

São os mesmos que protestam por paz, que rezam todas as noites para o fim da violência, que participam de marcha contra isso e aquilo, mas não hesitam em apontar o dedo para os outros e usar o nome de Deus ou de Jesus como racionalização de seus preconceitos. Ou mesmo desejar vingança, se igualando àqueles que eles desejam combater - cadê o Deus é amor?

Participam de marchas contra a corrupção dos outros, mas não perdem a oportunidade de passarem a perna em alguém, de mentirem para o chefe, de comprarem coisa pirata/contrabandeada e acharem que estão fazendo um grande negócio. A corrupção dos outros é um problema, a minha "não dá nada".

Reclamam de machismo, de homofobia, de falta de tolerância, de racismo, mas não perdem a oportunidade de destilarem comentários cancerígenos sobre aquele viadinho que tá andando com o filho deles, ou aquele pretinho que atendeu ele outro dia. Se é para se misturar com a gentalha, então? Impossível: eles querem produtos diferenciados para a gente diferenciada

Plantam arvorezinhas, assinam protestos contra Belo Monte, "abraçam" uma "sustentabilidade", mas tudo é descartável, tudo é enlatado ou comprado congelado, todas as refeições têm que ter carne, e são vítimas certeiras da obsolescência programada. Desperdiçam energia, jogam lixo em lugares inadequados, produzem lixo em excesso, e depois reclamam do meio-ambiente. 

Cospem um discurso pronto, que já vem de brinde com o kit-reacionário: Bolsa-Família é sustentar vagabundo com o dinheiro da sofrida classe média. País dos impostos. Bandido bom é bandido morto. Ditadura gay (estranho que nunca vi alguém dizer que as leis anti-racismo são ditadura negra ou que a lei Maria da Penha é ditadura feminina). Moral e bons costumes. Estudante que protesta é vagabundo.

(Já que eu falei em estudante que protesta é vagabundo, lembram da ocupação da reitoria da UFSM? Pois bem, muitos dos que a criticavam duramente, hoje se beneficiam daquilo que foi obtido com ela. Irônico, né?).

O pseudo-ativismo torna-se uma excelente forma de parecer engajado, consciente, e outras platitudes do mesmo naipe. E tenta arrastar ao máximo outras pessoas para seu círculo: quem não entra é irresponsável, é inconsciente, é ignorante, é tudo o mais. Tudo a ver com as palavras de amor que ele deseja, com a paz que ele tanto quer... ou não.

terça-feira, 20 de dezembro de 2011

Review rápido e instalação de Linux: Dell XPS 15

Recebi quinta-feira passada (15/12) o meu notebook Dell XPS 15, comprado em uma promoção da Dell para substituir o meu velho guerreiro Acer 7720. As impressões até agora:

  • MUITO RÁPIDO. Acho que isso é desnecessário dizer, pela máquina ser um i7 e ter 6 GB de RAM (ia comprar com 8 GB, mas a Dell queria R$ 400 a mais. Aham, senta lá - compare o preço de um pente de 4 GB e multiplique por 2).

    Até o momento não consegui fazer a máquina ficar lenta, mesmo subindo 3 ou 4 máquinas virtuais ao mesmo tempo.
  •  O som é um dos melhores que já ouvi em um notebook, mas não usarei muito, a menos que eu queira compartilhar minha música com vizinhos.
  • Ao contrário de outras marcas (ei, Acer, estou olhando para você), os aplicativos que vêm inclusos são bastante úteis.
      Não chegam a ser crapware, embora o login pela webcam não seja muito viável por demorar mais do que se leva para digitar uma senha.

Agora, vamos a alguns problemas:

  •  Não tem teclado numérico dedicado.
  • A tecla Delete é mal-posicionada, fica muito fácil encostar no botão da Waves sem querer.
  • Esquenta que é uma beleza, e fica notavelmente desconfortável depois de um tempo. Recomendo a compra de uma base refrigerada.
Após confirmar que tudo funcionava, instalei o openSUSE 12.1 em dual-boot com o Windows que veio nesta máquina. Praticamente tudo funcionou, então é mais fácil comentar e citar o que não funciona:


  • nVidia Optimus, motivada pela má-vontade desta primeira em lançar drivers (ao menos um driver mínimo para desligar a placa).

    A placa de vídeo fica ligada à toa, sem fazer nada exceto gastar recursos (não parece familiar?). Se instalar o driver da nVidia, perde-se o driver da Intel, a nVidia ficará sempre habilitada. Como não jogo no Linux, a solução que encontrei foi usar o módulo acpi_call, que permite enviar comandos direto para o hardware, por consequência permitindo desativar a placa.

  O procedimento adotado foi:

  1.    Compilar o módulo e carregá-lo.
  2.    Usar o script test_off.sh, incluso no source do módulo, para identificar qual a flag que desativa a placa de vídeo (pode mudar de configuração para configuração), é a que o script disser works

         No meu caso, a flag é \_SB.PCI0.PEG0.PEGP._OFF. 
  3.   Após descobrir a flag, colocar este procedimento nos scripts de inicialização. Fiz um pequeno script, quando eu limpá-lo coloco em algum repositório e compartilho.
EDIT 22/12/2011: Eu estava tendo o problema de não conseguir reiniciar a máquina (a tela ficava preta e só desligava no dedão), que foi resolvido com o procedimento oposto (mandar a placa ligar na hora do reboot).

Voltei para o sysinit (sei que não é o ideal, mas não aprendi a mexer no systemd ainda e precisava disso para ontem) e coloquei no arquivo /etc/init.d/halt.local a linha:

echo '\_SB.PCI0.PEG0.PEGP._ON' > /proc/acpi/call

Pronto, reiniciando sem nenhum problema.
  •  Tive alguns problemas com o Bluetooth, mas provavelmente foi erro naquela peça entre o teclado e a cadeira.
  • Não testei no Linux: HDMI, DisplayPort, USB 3.0 e Blu-Ray (não tenho dispositivos capazes de usar essas tecnologias, parei no DVD, na porta S-Video e na USB 2.0). E não entendo qual o preconceito com a saída de vídeo VGA, ainda muito usada por projetores e afins.  
  • Suspend funciona, hibernação não (testado no kernel 3.1.7)
  • Consegui entre 2h30 e 3h de bateria no Linux (sem tweaks), comparado com 3h30 a 4h no Windows.

  • Multitouch não funcionou completamente, só para scroll. Talvez seja alguma configuração errada.

  • A inicialização se dá em menos de 30 segundos (do GRUB ao KDE) e o desempenho é excelente também. MUITO melhor que aquele obtido no Windows, o qual demora quase 2 minutos para completar o boot.
  • O nouveau (driver aberto para as nVidias) não suporta a placa presente nesta máquina, e inclusive pode causar interferência no vídeo Intel, na forma de pequenos glitches. Desinstalar os pacotes referentes a ele, resolve o problema.
  • Leitor de cartões não funciona completamente (às vezes aceita o cartão, às vezes não). Uma solução é rodar o comando  sudo sh -c "echo 1 > /sys/bus/pci/rescan" quando for inserido um cartão.
  •  

Adendo:

Substituí o openSUSE 12.1 pelo Arch Linux devido a problemas de compatibilidade de hardware e a alguns bugs que tive com o KDE no openSUSE, e tudo o dito anteriormente se aplica.


Conclusão:

Embora o Linux rode muito bem nesta máquina, inclusive melhor que o Windows (aliás, o quê que não roda melhor que o Windows?), não recomendo a instalação para usuários completamente iniciantes; porém usuários com um pouco mais de experiência - isto é, conhecimento para mexer na linha de comando, configurações etc... - não terão dificuldade alguma, porém.

sexta-feira, 9 de dezembro de 2011

Um Belo Monte de hipocrisia ambiental

Recentemente, vimos um movimento de atores globais protestando contra a construção da usina de Belo Monte, e disto surgiram uma sequência de respostas e contra-respostas.

Sem entrar no mérito da questão Belo Monte, posto que não tenho uma opinião completamente estável sobre o assunto (não sou muito favorável à construção dela, antes que perguntem, mas não é pela questão ambiental ou indígena) eu gostaria de fazer uma pergunta: por que motivo a mídia abraçou esta causa com tanta força, com tanta vigorosidade, ao mesmo tempo em que menospreza ou nada fala sobre outros problemas ambientais?

Somos o país que mais usa agrotóxicos, e ainda somos os únicos que toleramos a pulverização destes: forma altamente poluidora de aplicação. Porém, sabe-se que eles são fundamentais para o latifúndio, para o agronegócio - o mesmo em teoria capaz de alimentar 12 bilhões de pessoas, mas que na prática não alimenta 5, devido à especulação e ao fato de muita dessa produção ser usada para alimentação animal - por si só um problema ambiental - e para exportação. E isto foi quantas vezes questionado na mídia? Pouquíssimas. Mas, quando o Brasil demonstra ser o celeiro e o abatedouro do mundo, a mídia toda está lá.

Só se tomam medidas quando já é muito tarde: quando surgem problemas diversos de saúde causados pelo uso incorreto destes produtos químicos, a mídia está prontinha para cair em cima e cobrar satisfações - e o governo pouco ou nada faz para punir aqueles que causaram o desastre, notadamente os órgãos que somente fornecem crédito agrícola mediante o uso de pesticidas, assim favorecendo um grupinho de marcas enquanto todos aturam o prejuízo: impacto ambiental, problemas de saúde, perda da nossa soberania alimentar etc...

Por que a grande mídia nunca fala sobre o impacto ambiental da pecuária e sobre alternativas alimentares (exceto quando o assunto são dietas milagrosas e picaretagem, digo, terapias alternativas) como alternativa ao desmatamento e à poluição causados pela produção animal?

E onde está ela na hora de defender o transporte coletivo em substituição ao transporte individual, de exigir e fiscalizar que de fato ocorram as melhorias radicais e urgentes para resolver as situações lamentáveis que vemos em diversas cidades? Por que vemos reportagens sobre meio-ambiente (ou pior, reportagens sobre congestionamentos épicos), e 2 minutos após vemos a propaganda de um novo modelo de carro, desfilando por ruas largas, absolutamente limpas, perfeitamente pavimentadas e vazias que não existem em nenhum lugar do mundo?

Por que essa grande mídia não critica o consumismo, a urbanização desenfreada, o lucro a qualquer custo, os quais também são causadores de enormes impactos ambientais e sociais? Simples: qualquer coisa que contradiga as propagandas de felicidade em 48 vezes no cartão vai contra o interesse dela. E obviamente, questionar um crescimento baseado no consumo (e auto-limitante por sua própria natureza) vai contra os interesses de quem paga milhares de reais por uma propaganda de 30 segundos no horário nobre.

Em suma, várias coisas que também causam impacto ambiental tão grande quanto, ou maior que o de milhares de usinas, passam batidas. No máximo viram uma coluna na Veja ou uma matéria do Globo Repórter - na mesma edição em que uma empresa de agronegócio ou um grande grupo industrial colocará uma propaganda olhe, estamos fazendo nossa obrigação em não poluir, logo após a propaganda de mais um carro de luxo.

Em toda essa campanha, ficou um gosto enorme de greenwashing: pintar de verde, para aumentar a audiência e fazer com que pessoas finalmente possam se sentir engajadas, que elas se identifiquem com um modelo pago para ler um script. O qual se acumula num belo monte de hipocrisias, junto com as grandes obras pintadas de verde e com as promessas de reflorestamento. Uma "sustentabilidade" enlatada, fácil de ser distribuída por ai. Uma coleção de platitudes.

Em tempo: não sou muito favorável à construção de Belo Monte pela questão da nossa defasagem quanto à eficiência energética. Iluminação pública acesa quando não é necessário, equipamentos antigos, prédios onde o uso de ar-condicionado é mandatório, gatos etc... tudo isso anulará os efeitos de qualquer nova fonte de energia, por mais limpa que ela seja. Fundamentalmente, estamos pegando o financiamento para pagar o empréstimo que pegamos para cobrir o desperdício.