Fonte de Código

Limpo, fluído e refrescante
 

3.7.13

Como sobreviver numa arena

Em 1999, o mais novo lançamento do mundo dos games de tiro com visão em primeira pessoa (first person shooter ou, pela sigla, FPS) era o Quake III Arena, um jogo brutal em que jogadores do mundo todo jogam online numa arena de guerra onde dois grupos de guerrilheiros (armados com armas de fogo futuristas e extremamente letais) duelam até que um dos grupos tenha sido inteiramente exterminado. Quando isto acontece, todos os mortos retornam a vida e começa um novo duelo, e assim por diante...

Uma das inovações do game, segundo a desenvolvedora (Id Software), era a suposta “nova inteligência artificial” dos bots no jogo. Um bot (abreviação de robot) é uma aplicação de software concebida para simular ações humanas repetidas vezes de maneira padrão, da mesma forma como faria um robô. Durante o jogo, os personagens da arena controlados pelo computador (ou seja, não controlados por jogadores reais e humanos) supostamente observariam o estilo de luta dos demais jogadores, humanos ou bots, na medida em que a simulação das arenas de batalha transcorresse.

Com o tempo, seriam capazes de “pensar” em novas táticas, efetivamente se adaptando as táticas que mais venciam combates, e ignorando as táticas ineficazes para a sua sobrevivência, pois ganha o combate o grupo que sobrevive ao final [1]. Para que a inteligência artificial dos bots pudesse se desenvolver mais profundamente, entretanto, os servidores do jogo deveriam permanecer online, simulando centenas ou milhares de batalhas, por muito tempo a fio. E isto era inviável para os servidores oficiais do game, que precisam passar por manutenção semanal.

De acordo com um misterioso tópico de um fórum online (hospedado no 4Chan), em 2007 um jogador configurou um servidor pirata local do game (ou seja, hospedado em sua própria casa) para rodar indefinidamente simulações de arenas de combate entre 16 bots, sem nenhum ser humano a interagir com eles. Ocorre que este jogador esqueceu completamente do que havia feito, e como em sua casa os computadores ficavam sempre ligados, como servidores locais, a simulação rodou por longos quatro anos, até que em 2011 ele finalmente se lembrou dela!

Cada um dos 16 bots da simulação havia gerado 512 MB de informações táticas aprimoradas por centenas de milhares de partidas letais. Eram 8 GB de informações. O que elas teriam gerado? Atiradores infalíveis? Coordenação perfeita e robótica para matar da forma mais eficiente possível? O jogador resolveu entrar na simulação para ver quanto tempo seria capaz de sobreviver...

Então, para sua surpresa, ele observou que os 15 bots (ele estava jogando como o décimo sexto) nada faziam, apenas olhavam para ele e o seguiam onde quer que fosse. Não pareciam mais duelistas letais, mas antes pacifistas em busca de um sentido para estarem vagueando indefinidamente por uma arena de batalha. Aparentemente, em alguns anos de simulação, a inteligência artificial dos bots chegou a melhor estratégia para a sobrevivência: ninguém morre quando ninguém mata.

A Teoria dos Jogos é um ramo da matemática aplicada que estuda situações estratégicas onde jogadores escolhem diferentes ações na tentativa de melhorar o resultado, ou seja, o retorno de suas escolhas. Inicialmente desenvolvida como ferramenta para compreender comportamento econômico e depois usada pela Corporação RAND para definir estratégias nucleares, a Teoria dos Jogos é hoje usada em diversos campos acadêmicos.

Podemos ilustrá-la de forma simples e direta com o chamado “dilema do prisioneiro”, originalmente formulado por funcionários da RAND:

Dois suspeitos, A e B, são presos pela polícia. A polícia tem provas insuficientes para sua condenação; mas, separando os prisioneiros, oferece a ambos o mesmo acordo: se um dos prisioneiros, confessando, testemunhar contra o outro e esse outro permanecer em silêncio, o que confessou sai livre enquanto o cúmplice silencioso cumpre 10 anos de sentença. Se ambos ficarem em silêncio, a polícia só pode condená-los há 6 meses de cadeia cada um. Se ambos traírem o comparsa, cada um leva 5 anos de cadeia. Cada prisioneiro faz a sua decisão sem saber que decisão o outro vai tomar, e nenhum tem certeza da decisão do outro. A questão que o dilema propõe é: o que vai acontecer? Como o prisioneiro vai reagir?

No “dilema do prisioneiro”, temos uma situação onde o altruísmo e a confiança mútua oferece o melhor resultado final para ambos os jogadores. No entanto, isto não ocorre sem o risco de se ficar calado, confiando em seu parceiro, e ao fim ser traído por ele, e receber em retorno o pior resultado. De certa forma, a Teoria dos Jogos e o “dilema do prisioneiro” se aplicam não somente a economia e as relações de poder entre potências nucleares, mas também a uma partida de Quake III Arena... Será mesmo?

Retornando ao experimento insólito do início do artigo, o jogador resolveu “ver o que acontecia se atirasse em algum outro bot”. Para sua surpresa, ao fazer isso, ele foi atacado (e morto) não somente pelos 8 bots do outro time, como pelos 7 outros bots de sua própria equipe!

Ou pelo menos foi isto que a imagem com capturas de tela do suposto tópico do 4Chan dizia. Muitos sites de games compartilharam a notícia, e ela obteve certa fama também nas redes sociais. No entanto, como muitos podem ter imaginado, era tudo um hoax, ou seja, uma história inventada, como tantas outras que vemos nestes tempos de propagação desenfreada da informação.

Porém, ainda que não tenha ocorrido de verdade, ainda que os 16 bots com suas inteligências artificiais sejam incapazes de interpretar o resultado de suas ações (já que são ferramentas de computação, e não seres de interpretação), esta história ainda nos toca numa questão primordial: ela foi espalhada como algo verossímil, extremamente verossímil.

Penso que muitos de nós têm esta certa queda por acreditar que uma simulação computacional possa, de alguma forma incompreensível, chegar a conclusões que, no fundo, são as nossas própria conclusões, mas que não temos a vontade, ou a coragem, de coloca-las em prática.

Afinal, não se enganem: o bot do game mais avançado do ano que vem não será mais nem menos ferramenta do que um martelo ou uma bomba nuclear. Não é o martelo que mata ou constrói coisas, é quem o empunha. Não foi o material radioativo, e nem mesmo os físicos que descobriram a fissão nuclear quem arrasaram Hiroshima, foram aqueles que deram a ordem: “soltem a bomba”...

Somos, desta forma, todos prisioneiros desta enorme simulação chamada “mundo”, e só sairemos desta prisão de mãos dadas – todos serão livres somente quando não houver mais nenhum prisioneiro.

***

[1] Isto não deixa de ser uma forma de programação genética.

Crédito das imagens: [topo] Quake III Arena (captura de tela); [ao longo] Adrianna Williams/Corbis

Marcadores: , ,

  • Adicionar ao Delicious
  • Adicionar ao Digg
  • Adicionar a Technorati
  • Adicionar ao seu mural no Facebook
  • Adicionar como tweet no seu Twitter

11.5.12

Programar e codificar: uma reflexão

Aqui vai uma pequena reflexão do meu dia a dia como programador de interface web:

Uma amiga programadora me chama no Skype e pergunta se posso ajudar a resolver um problema com o código HTML de um site que ela está ajustando (na verdade, CSS, pra quem é da área), eu identifico e resolvo o problema em torno de 5 minutos, pois já havia passado pelo mesmo problema várias vezes antes. Ela, entretanto, estava horas tentando resolver, e fica muito agradecida.

Para um programador puro, que faz programação e não codificação (como é o meu caso) a noção de formas e design não é tão boa quanto a noção lógica e matemática, pois eles lidam muito mais com as últimas do que com as primeiras. Eu, no caso, sou exatamente o inverso disso...

Desse modo, não faria sentido eu me achar "um programador de interface foda" somente porque resolvi um problema que minha amiga estava horas tentando solucionar... O dia que eu tiver um problema que envolva lógica de programação, e não design, provavelmente serei eu a pedir ajuda pra ela.

E a empresa em si, tem a sorte de poder contar com essa comunicação e amizade entre seus funcionários (a minha empresa nos chama "colaboradores", que acho bem melhor), pois as horas de trabalho da minha amiga, ao invés de se estenderem ainda mais, se "encolheram" para 5 minutos.

É por isso que acredito que ambientes de trabalho assim têm muito a ensinar para outros sistemas de trabalho, no mundo todo.

Marcadores: , , ,

  • Adicionar ao Delicious
  • Adicionar ao Digg
  • Adicionar a Technorati
  • Adicionar ao seu mural no Facebook
  • Adicionar como tweet no seu Twitter

23.1.12

O manifesto pirata

O texto abaixo é quase uma espécie de manifesto pró-pirataria na web, feito em forma de nota pelo site Pirate Bay. Podemos ser contra a pirataria em muitos casos (principalmente pirataria da obra de pequenos artistas, fora da "grande indústria"), mas realmente o que as grandes corporações de mídia americanas estão tentando fazer com a web em seu país é indiscutivelmente ridículo - particularmente se considerarmos a origem das mesmas. Vejam só que interessante:


Há mais de um século, Thomas Edison conseguiu a patente para um aparelho que faria “para o olho o que o fonógrafo fez para o ouvido”. Ele o chamou de cinetoscópio [Kinetoscope]. Edison não foi apenas o primeiro a gravar vídeo, mas foi também a primeira pessoa a ser dono do copyright de um filme cinematográfico.

Por causa das patentes de Edison para filmes cinematográficos, quase foi financeiramente impossível criar filmes de cinema na costa oeste norte-americana. Os estúdios de cinema, assim, mudaram para a Califórnia e fundaram o que hoje chamamos de Hollywood. A principal razão é que ali não haviam patentes.

Não havia também nada de copyright, então os estúdios podiam copiar velhas histórias e fazer filmes a partir delas – como Fantasia, um dos maiores hits da história da Disney.

Portanto, toda a base dessa indústria, que está hoje aos gritos sobre perda de controle sobre direitos não-materiais, é que eles driblaram direitos não-materiais. Eles copiaram (ou, de acordo com sua terminologia,”roubaram”) as obras criativas de outras pessoas sem pagar por isso. Eles o fizeram para obter grandes lucros. Hoje, eles são todos bem-sucedidos e a maior parte dos estúdios está na lista da Fortune das 500 empresas mais ricas do mundo. Parabéns – está tudo baseado em ser capaz de reutilizar criações de outras pessoas. E hoje eles detém os direitos das criações de outras pessoas. Se você quer lançar alguma coisa, você tem que seguir as regras deles. As regras que eles criaram depois de driblar as regras de outras pessoas.

A razão pela qual eles estão sempre reclamando dos “piratas” hoje é simples. Nós fizemos o que eles fizeram. Nós driblamos as regras que eles criaram e criamos as nossas próprias. Nós esmagamos o seu monopólio ao dar às pessoas algo mais eficiente. Nós permitimos que as pessoas tenham comunicação direta entre si, driblando o intermediário lucrativo, que em alguns casos levar mais que 107% dos lucros (sim, você paga para trabalhar para eles).

Tudo se baseia no fato de que representamos competição.

E a parte engraçada é que as nossas regras são muito similares às ideias que fundaram os EUA. Lutamos pela liberdade de expressão. Enxergamos as pessoas como iguais. Acreditamos que o público, não a elite, deveria governar a nação. Acreditamos que leis deveriam ser criadas para servir o público, não corporações ricas.

O Pirate Bay é uma comunidade verdadeiramente interacional. Nossa equipe está espalhada por todo o globo – mas ficamos fora dos EUA. Temos raízes suecas e um amigo sueco nos disse isso:

A palavra SOPA significa “lixo” em sueco. A palavra PIPA significa “um cano” em sueco. É claro que isso não é coincidência. Eles querem tornar a internet um cano de mão única. Eles por cima empurrando lixo cano abaixo para o resto de nós, consumidores obedientes.

A opinião pública nesse assunto é clara. Pergunte a qualquer um na rua e você vai descobrir que ninguém quer ser alimentado com lixo. Por que o governo americano quer que o povo americano seja alimentado com lixo foge à nossa compreensão, mas esperamos que você o impeça, antes que afoguemos todos.

A Sopa não pode fazer nada para brecar o Pirate Bay. Na pior das hipóteses, mudaremos o domínio principal: do atual .org para uma das centenas de nomes que também já usamos. Em países onde estamos bloqueados (os nomes China e Arábia Saudita são os primeiros que vêm à cabeça), eles bloqueiam centenas de nomes de domínios nossos. E adianta? Não muito.

Para consertar o “problema da pirataria” deveria se ir à raiz do problema. A indústria do entretenimento diz que eles estão criando “cultura”, mas o que eles realmente fazem é vender coisas como bonecas caríssimas e fazer meninas de 11 anos se tornarem anoréxicas. Seja de trabalhar nas fábricas que criam as bonecas por praticamente salário nenhum, seja por assistir filmes e programas de TV que as fazem pensar que são gordas.

No grande jogo de computador de Sid Meiers, Civilization, você pode construir maravilhas do mundo. Um dos mais poderosos é Hollywood. Com ele, você controla toda a cultura e mídia do mundo. Rupert Murdoch ficou feliz com MySpace e não via problemas com sua própria pirataria até seu fracasso. Agora ele reclama que o Google é a maior fonte de pirataria do mundo — porque ele está com ciúmes. Ele deseja manter seu controle mental sobre as pessoas e está claro que você consegue um visão mais honesta das coisas na Wikipedia e no Google do que na Fox News.

Alguns dos fatos (anos, datas) nesse texto estão provavelmente erradas. O motivo é que não podemos acessar essas informações quando a Wikipedia está fora do ar. Por causa da pressão de nossos rivais decadentes. Pedimos desculpas por isso.

***

Crédito da imagem: Pirata!

Marcadores: , , , , , ,

  • Adicionar ao Delicious
  • Adicionar ao Digg
  • Adicionar a Technorati
  • Adicionar ao seu mural no Facebook
  • Adicionar como tweet no seu Twitter

9.1.12

Tatuagem para HTMLers

Com essa tatuagem será mais fácil seduzir um HTMLer:



Marcadores: , ,

  • Adicionar ao Delicious
  • Adicionar ao Digg
  • Adicionar a Technorati
  • Adicionar ao seu mural no Facebook
  • Adicionar como tweet no seu Twitter

6.10.11

Frases de Steve Jobs

E quem diria que tudo iria começar com um garotinho adotado que abandonou o curso principal da faculdade, se matriculou em aulas de tipografia, e almoçava de graça uma vez por semana num templo Hare Krishna...


"Lembrar que estarei morto em breve foi a mais importante ferramenta que já encontrei para me ajudar a fazer grandes escolhas na vida."

"A morte nos lembra de que não há nada a perder. Você já está nu, não há nenhuma razão para não seguir seu coração."

"Ninguém quer morrer. Mesmo as pessoas que querem ir para o céu não querem morrer para chegar lá..."

"Mas a morte é provavelmente a melhor invenção da Vida, seu grande agente de mudança, ela se livra do velho para abrir caminho ao novo que vem chegando."


"Seu tempo é limitado, então não o desperdice vivendo a vida de alguém, não fique preso as expectativas e pensamentos dos outros."

"Seu coração e intuição já sabem, de alguma maneira, no que você quer realmente se tornar. Todo o resto é secundário..."

***

» Todas as frases foram retiradas do histórico discurso de Jobs em Stanford (abrirá em nova janela).

Crédito da foto: Divulgação (Apple.com)

Marcadores: , , ,

  • Adicionar ao Delicious
  • Adicionar ao Digg
  • Adicionar a Technorati
  • Adicionar ao seu mural no Facebook
  • Adicionar como tweet no seu Twitter

1.9.11

Criando layouts para dispositivos móveis

Recentemente escrevi um artigo onde pesquisei sobre as melhores práticas na criação de layouts de sites e aplicações a serem visualizados por dispositivos móveis (mobile), achei por bem compartilhar esta informação aqui no blog:

1. Realize uma pesquisa sobre os hardwares mais utilizados por sua audiência

O mercado de dispositivos móveis é recente, mas encontra-se em franca ascensão. Uma das maiores dificuldades para criação de layout mobile é a enormidade de dispositivos diferentes que se encontram no mercado atualmente, e sua variedade de resolução de tela.

Vejamos alguns exemplos de resolução de tela (largura vs. altura, em pixels): 101x80 (muitos celulares da Sony Ericsson); 128x128 (alguns celulares da Samsung); 120x160 (muitos celulares da Motorola); 320x480 (iPhone); 480x640 (HTC Touch Pro); 320x480 (Palm Pre); 360x480 (BlackBerry Storm); 800x480 (HTC Venus); 800x640 ou superior (engloba a grande maioria dos tablets, como o iPad).

Em meio a tantas possibilidades de resolução de tela, o mercado parece ter chegado a uma convenção – uma resolução padrão que teoricamente deveria servir para a maioria dos dispositivos móveis. Essa resolução também é seguida por diversos softwares de aplicativos para mobile: 320x480 – ou seja, 320 pixels de largura por 480 pixels de altura.

Dessa forma, a menos que esteja criando um site específico para uma certa gama de dispositivos móveis, recomendamos que use layouts que fiquem ao menos bem estruturados e navegáveis mesmo quando limitados a uma resolução de 320x480 pixels.

2. Simplifique seu layout

A regra de ouro para layout criados para dispositivos móveis é que eles devem ser simples, minimalistas e focados na funcionalidade. Cada página geralmente deverá conter apenas uma lista ou um texto de detalhes (conforme o tradicional “lista e detalhes de notícias”), os menus não devem ser muito extensos, as imagens pequenas, e os efeitos de drop-down com mouseover limitados ao máximo. Apenas os botões devem ser proporcionalmente maiores, pelo menos em relação aos layouts tradicionais, pois devemos lembrar que em dispositivos com tela sensível ao toque, muitas vezes os cliques serão feitos com o próprio dedo do usuário – e a área de clique deve ser, portanto, maior.

3. Valide seu código

Conforme se torna cada vez mais difícil testar nosso código nos diversos dispositivos móveis do mercado, torna-se ainda mais importante termos um código que siga os padrões estabelecidos. Assim reduziremos muito a probabilidade de nosso site mobile não funcionar neste ou naquele dispositivo móvel de que nunca ouvimos falar – ou que ainda sequer foi lançado.

4. Inclua um link para o site tradicional

É recomendável incluir um link para a versão do site com o layout tradicional, normalmente no rodapé. Muitas vezes o usuário estará usando um tablet (como o iPad, por exmplo), e prefere visualizar o site em sua versão tradicional.

5. Crie um CSS exclusivo para a versão mobile

Embora seja viável criarmos um CSS que atenda tanto a versão tradicional quanto a móbile, na prática do mercado rapidamente se constatou que é muito mais simples a separação de ambos os layouts em arquivos CSS específicos. Muito embora seja interessante que as cores gerais e famílias de fontes sejam próximas do layout tradicional, o layout mobile tem características muito específicas para que faça sentido o uso do mesmo CSS da versão tradicional do site.

6. Evite o scroll horizontal no site

Muitas vezes os dispositivos móveis tem uma tela pequena, e devem ser manuseados com os próprios dedos do usuário. Nesse sentido, é ideal evitar a todo custo que o site na versão mobile possua quaisquer barras de scroll horizontais – o ideal é seguir o padrão de quase todo dispositivo móvel e usar apenas barras de scroll verticais. Isso, na prática, significa que devemos evitar ao máximo que qualquer elemento do nosso layout “estoure” os 320 pixels de largura, largura padrão para resoluções de tela de dispositivos móveis. Esta recomendação pode ser revista para, por exemplo, um portal que deva ser acessível apenas por ‘tablets’, que apresentam maior resolução.

7. Evite o uso de pop-ups ou links que abrem em novas janelas

A navegação através de dispositivos móveis não costuma funcionar muito bem com pop-ups ou links abrindo em novas janelas. Se for estritamente necessário o uso desses links, é recomendável que alerte que ele abrirá nova janela com alguma mensagem curta, ou ícone, ao lado do link.

8. Limite o uso de imagens

Layouts para mobile devem usar o menor número de imagens possíveis. Também é preciso tomar cuidado em especial com o tamanho dos arquivos de imagem, visto que no geral a qualidade da conexão de dispositivos móveis será inferior, e as imagens não podem ser muito pesadas (em Kbytes). O ideal é usar apenas a logomarca, alguns ícones de navegação e imagens de fundo para botões e outros elementos.  Em uma interface de lista de notícias, por exemplo, é recomendável que existam imagens apenas nos 3 primeiros itens, deixando o restante dos itens da lista apenas com o título (e eventualmente a descrição).

9. Evite ao máximo o uso de flash e javascript

Nem todos os dispositivos móveis suportam flash e javascript. Conforme os layouts para mobile tendem a favorecer uma navegação simples e funcional, o uso desse tipo de tecnologia pode e deve ser evitado. O caso do flash é mais grave, visto que até o momento os iPhones e iPads não são compatíveis com flash (assim como alguns dispositivos móveis que vem com o sistema operacional Android, pelo menos na versão nativa).  Algumas animações e vídeos podem ser criados utilizando a nova tecnologia do HTML5, Canvas, que é compatível com diversos dispositivos móveis modernos (maiores informações sobre a Canvas aqui: http://en.wikipedia.org/wiki/Canvas_element)

***

Crédito da imagem: Rafael Arrais (exemplo de layout para uma aplicação de uma seguradora de saúde fictícia)

Marcadores: , , ,

  • Adicionar ao Delicious
  • Adicionar ao Digg
  • Adicionar a Technorati
  • Adicionar ao seu mural no Facebook
  • Adicionar como tweet no seu Twitter