quinta-feira, 29 de maio de 2014

Java e seus problemas

Os dois primeiros dos cinco objetivos iniciais da linguagem Java eram:
  1. Que a linguagem deve ser simples,orientada a objetos e familiar;
  2. Que seja robusta e segura.
A sintaxe inicial era, de fato, simples. Com o tempo foram adicionadas complicações, como os tipos genéricos. Por ser simples, robusta e segura, no entanto, a linguagem sempre foi prolixa.
Justamente pela quantidade de código necessária para executar as atividades mais simples, mesmo os mais ávidos programadores Java parecem não gostar de programar em Java. E então vemos uma grande quantidade de frameworks nos quais pode-se programar em XML e fazer muito pouco em Java. 
Então, jogam-se pela janela a robustez e a segurança para que se possa diminuir o número de linhas em Java. Aparentemente, o número de linhas em XML não tem relevância. Adoto a filosofia Lisp: não gosto de diferenciar configuração de programação. Se troco uma linha de código por dez de configuração, o sistema fica mais complexo.
As evoluções na sintaxe tratam de tornar a linguagem mais flexível, mas têm que conviver com o modelo antigo de execução. Java, entretanto, não foi criada para ser uma ferramenta de ponta. Ela foi criada para ser o novo COBOL. Por isso, ela deveria, creio eu, tentar manter a sintaxe simples, acessível, e legível. Surpreendentemente, coisas simples, como strings multilinhas e sintaxe para hashes, não foram adicionados à sintaxe ainda.
Parece-me que Java está tentando muito ser o que não é e está sofrendo por isso.

quarta-feira, 21 de maio de 2014

Monitorando a infraestrutura

Recentemente, passei por muitos problemas com a infraestrutura da Oracle (e a falta de interesse do suporte em resolvê-los). Para assegurar-me de que não havia um problema de rede, resolvi monitorar dois serviços básicos: o banco e o ldap.

Usando Perl e o netcat (comando nc no Linux), escrevi um pequeno script para monitorar as conexões do servidor de aplicações.

#!/usr/bin/perl

$|=1;
my $dump;
my %hosts=(srv1=>1521,srv2=>389);
my $out;
for my $host (keys %hosts) {
  my $port=$hosts{$host};
  $out=`nc -z $host $port`;
  if($out!~/succeeded/) {
    open($dump,'>>', '/tmp/monitor.txt');
    print $dump `date`;
    print $dump "$host $port Failed\n";
    close($dump);
  }
}

O hash %hosts associa cada servidor a uma porta e o comando "nc -z" realiza o trabalho de testar a conexão. Se o resultado não contiver a palavra "succeeded", imprime-se a data e a combinação de servidor e porta que falhou.

Ele registra apenas as tentativas mal-sucedidas para evitar que o arquivo monitor.txt cresça muito.

Adicionei uma linha à cron, para executar o script uma vez por minuto:

* * * * * /home/forinti/monitor.pl

E assim constatei que meus problemas nada tinham a ver com a rede.

quinta-feira, 8 de maio de 2014

Supercotas

As cotas nas universidades não cessam de gerar polêmica, mas é difícil encontrar alguma opinião sobre a necessidade de diversidade no âmbito acadêmico. Sim, porque o objetivo das cotas é, justamente, dar mais cor ao meio universitário.

Comumente, as universidades são vistas como um meio para uma carreira lucrativa, não como centros de produção de conhecimento. Quem vê o curso superior como preparação para o mercado de trabalho, pode muito bem ignorar a necessidade de variedade; quem o vê com objetivos mais amplos, não pode ignorar a importância da diversidade.

Atualmente, essa injeção de diversidade concentra-se justamente na dimensão racial/étnica. É um começo, mas o processo seletivo continua o mesmo; selecionam-se candidatos capazes de guardar um volume enciclopédico de conhecimento e que tenham o tempo necessário para a preparação. Nesse sentido, os cotistas não são muito diferentes dos demais.

Eu proponho que as cotas sejam transformadas em supercotas e creio que, no processo, criaríamos um vestibular mais democrático ainda.

A solução é simples: as vagas seriam sorteadas entre todos os aprovados com a nota mínima. Desta forma, seria atingida de maneira simples a diversidade máxima. Todas as dimensões de diversidade seriam contempladas num único sistema, sem que nenhum segmento fosse destacado: negros, índios, mulheres, pobres, ricos, criativos, concentrados, distraídos, etc.

Além disso, o vestibular atual cria a ilusão de que os que não são aprovados merecem seu destino e isso acaba por abafar a discussão sobre o número de vagas. Para a educação primária e secundária, ninguém discute a necessidade de haver vagas para todos, mas para o terceiro grau aceita-se que existam vagas para apenas 5% dos candidatos. Num sistema por sorteio, encontrando-se todos os candidatos nas mesmas condições, é de se esperar que cresça a pressão por mais vagas nas universidades públicas.

segunda-feira, 3 de fevereiro de 2014

Vantagens desperdiçadas

A greve dos ônibus e o calor terrível deste verão me levaram a pensar (novamente) sobre o quão estúpido é o modelo de transporte que temos nas cidades.

Vou começar pelas escadas rolantes, porque elas ilustram bem como as pessoas desperdiçam os meios quem têm e perdem uma excelente oportunidade de viver um pouco melhor. Elas nos permitem subir com maior velocidade, mas as pessoas ficam paradas, esperando o destino chegar (para isso, existem os elevadores). Além disso, poucas são as pessoas que admitem que alguém queira subir caminhando e, por isso, não deixam espaço para ninguém passar. Elas oferecem uma oportunidade excelente de ganhar um pouco de tempo; a oportunidade é desperdiçada e ainda negada a quem quiser tirar proveito dela.

Numa dimensão diferente, vemos o mesmo tipo de desperdício nos automóveis. As pessoas encontram-se com mais dinheiro e, quando poderiam usá-lo para viver melhor, compram carros cada vez maiores e consumidores de combustível. O primeiro Fiat 500 oferecia 18cv; os últimos modelos têm mais de 100cv. Não quebramos a barreira dos 20km/l nos carros ditos urbanos, quando já poderíamos estar nos 50km/l ou 60km/l. Com mais dinheiro no bolso dos motoristas e menos poluição, a vida poderia ser um pouco melhor para todos os habitantes das cidades.

Entretanto, as cidades estão entupidas com monstruosidades como a Tucson da Hyundai, que pesa 1,5 tonelada e mal consegue fazer melhor que 10km/l na estrada. Isto é, trata-se de um veículo que não deveria estar circulando num meio urbano civilizado, tanto porque oferece um risco maior à segurança como porque consome uma quantidade de recursos excessiva para o fim ao qual se propõe (transportar, no máximo, 5 pessoas).

Muitas cidades já limitam o trânsito de caminhões, justamente porque poluem, atrapalham o trânsito, e destroem o asfalto. Eu gostaria de ver os parâmetros para um veículo urbano serem reduzidos gradualmente, para que veículos menores e mais eficientes dominem as cidades. Teríamos um trânsito mais seguro, um ar mais limpo e mais dinheiro no bolso para gastar com coisas que realmente melhorem a qualidade de vida.

sexta-feira, 31 de janeiro de 2014

Login social

Um chamado aparentemente simples acabou como inspiração para uma ideia genial. Às vezes, não damos valor aos usuários que temos.

O cidadão estava reclamando que não conseguia entrar no sistema, o qual o informava algo sobre não ter permissão. Geralmente, isso indica que a pessoa de fato não tem permissão, mas costumo dar o benefício da dúvida a todos e revisei as permissões. Ele as tinha.

Conferi os logs e descobri que era outra pessoa que não estava conseguindo entrar. O cidadão que abriu o chamado tinha entrado várias vezes sem qualquer dificuldade. Seu amigo, no entanto, poderia continuar tentando, porque não estava habilitado.

Pode ser que um fosse muito amigo do outro a ponto de confundirem suas credenciais, mas acho mais provável que a informação sobre quem estava com dificuldade tenha sido julgada irrelevante.

De qualquer forma, ocorreu-me que daí poderia surgir o login social. Através da autenticação do Facebook, por exemplo, os amigos das pessoas autorizadas também poderiam ganhar privilégios no sistema. Claro, seria conveniente que o usuário indicasse corretamente quem é amigo próximo ou família. E, conforme o grau de proximidade, poderíamos conferir mais ou menos permissões.

Vou levantar a questão na próxima reunião.

sexta-feira, 27 de dezembro de 2013

Menos velocidade, mais rapidez

Acho muito curiosos os argumentos de que o limite de velocidade nas avenidas de Porto Alegre é baixo, porque minhas viagens para casa no fim do dia dificilmente alcançam 10km/h. Considerando a quantidade de carros nas ruas, aumentar a velocidade não iria resolver nada, portanto.

Parece-me que há, por outro lado, bons argumentos para diminuir a velocidade máxima em toda a cidade para 40km/h.

É comum reencontrarmos os apressadinhos nas sinaleiras. Eles correm para utrapassar e ganhar a corrida até o próximo sinal vermelho. O que me leva a creer que os tempos dos deslocamentos urbanos são muito mais regidos pelos tempos de parada ou lentidão que pelos tempos de velocidade.

Porto Alegre não é uma cidade muito grande. Pode-se ir da zona sul à zona norte em menos de 20km. E, supondo que não houvesse qualquer obstáculo no caminho, essa distância seria percorrida em 20 minutos a 60km/h ou em 30 minutos a 40km/h.

Quem tenta entrar numa avenida sabe que a velocidade na via mais rápida dificulta o acesso. Nas ruas de 40km/h, os rapidinhos que excedem o limite também roubam dos outros motoristas a possibilidade de fazer uma conversão em menos tempo. E ainda há o tempo de luz amarela nos semáforos, que deve ser maior para dar segurança aos cruzamentos das avenidas.

Além disso tudo, há o fato de que os atropelamentos a 60km/h (90% são fatais) são muito mais perigosos que os atropelamentos a 40km/h (50% são fatais). Havendo menos velocidade, a cidade tornar-se-ia mais segura para os ciclistas e mais gente poderia sentir-se motivada a adotar esse meio de locomoção.

Em resumo, acho que há mais vantagens de termos uma velocidade máxima menor do que perdemos por poder andar rápido por alguns segundos de vez em quando. Mesmo assim, não guardo muita esperança de que o motorista portoalegrense médio queira adotar uma medida racional e civilizada para melhorar o trânsito.

sexta-feira, 13 de dezembro de 2013

Até tu, Ubuntu?

Minha máquina Ubuntu tem dois monitores. Eu queria desabilitar um deles temporariamente, porque não estava funcionando. Assim como o Windows, o Ubuntu retorna à configuração anterior se uma mudança na configuração de video não for confirmada em poucos segundos (para salvar o usuário, caso a alteração tenha desligado o sinal).

Pois bem, o Ubuntu, deduzo eu, estava tentando pedir a confirmação justamente no monitor que eu estava tentando desabilitar, porque, alguns segundos depois da alteração, tudo piscava e o monitor desligado constava novamente como habilitado.

Foi um momento muito triste na história dos sistemas operacionais.