Avatares, identidades e almas portáveis

October 31st, 2007 § 0 comments § permalink

Leitores freqüentes do blog provavelmente se lembrarão da menção que eu fiz à Charles Stross um tempo atrás: “The definition of a real Virtual Reality environment is one where somebody can hold a coup d’etat in it and make it stick in the real world.

Essa citação foi feita no contexto das minhas experiências com o Second Life, onde passei algum tempo brincando com as possibilidade geradas por um ambiente virtual que, mesmo incipiente, já é capaz de gerar um interesse significativo. Obviamente, o Second Life tem um longo caminho a percorrer antes de chegar a um ponto ínfimo do que Stross está descrevendo.

O interessante agora é ver que, a despeito do que se pensa sobre a utilidade ou não do Second Life, o desenvolvimento de tecnologias acessórias está acontecendo. A notícia já é um pouco velha, mas é curioso ver empresas se movimentando para criar um padrão de portabilidade entre avatares. A princípio, essa é uma notícia que tem uma única conclusão possível: portabilidade significa mais eyeballs e eyeballs significam mais retorno financeiro.

Crentes da Singularidade provavelmente diriam que esse é um dos primeiros passos para um futuro pós-humanista. Exagero? Talvez–mesmo dentro de um contexto de evolução tecnológica desenfreada. O que na verdade, é um pouco dúbio. Afinal de contas, o que caracteriza a portabilidade de uma pessoa, mesmo que traduzida pelo seu avatar?

Avatares são, é claro, uma pálida reflexão do que se quer criar dentro de um ambiente assim. Imersão ainda é um pipe dream dentro da comunidade virtual mas tecnologias não param de aparecer que, se combinadas, podem mudar essa realidade (com perdão do trocadilho).

Um tópico que sempre me interessou dentro dessa arena é a questão do que realmente define a identidade de uma pessoal. Apenas memória mais experiência ou há um quê indefinível que não pode ser reproduzido ou transmitido–algo que nós poderíamos, inclusive, chamar de alma. Eu me lembro de discussões infindáveis com amigos sobre teletransporte. Existem duas variações de teletransporte na literatura SF: uma em que o original é destruído e uma cópia chega ao outro ponto; e outra em que há uma real transmissão de dados originais de um lado ao outro. Dentro de ambas as possibilidade, sempre gostávamos de discutir o que isso significa dentro desse contexto (espiritual, digamos assim) de personalidade e identidade. Disso para uma tradução de identidade em avatares reais que podem ser manipulados e liberados de forma independente, não há muita distância.

Esse assunto toda passa por duas gerações de filosofia e ficção psicológica e cyberpunk e é algo que eu nunca me canso de explorar no meu copioso tempo livre. Eu provavelmente não estou fazendo o menor sentido com essas divagações, mas eu não consigo deixar de pensar nas possibilidades eventuais por trás desses desenvolvimentos. É realmente um admirável mundo novo.

Stephen Fry blogando

October 30th, 2007 § 3 comments § permalink

Eu me tornei um fã de Stephen Fry meio que por associação com o Hugh Laurie. Como os dois trabalharam muito em conjunto, na época em que estava procurando mais coisas do “Dr. House” para ver, conheci o trabalho de Fry e gostei. E é claro, sua impecável e tocante atuação em V for Vendetta não deixou de ajudar.

Hoje descobri que Fry não só está blogando como possui um conhecimento fantástico de tecnologia–pelo que ele próprio diz, inclusive, ele comprou o segundo Mac da Inglaterra, nos idos de 1984, só perdendo para Douglas Adams. Para quem é fã do trabalho de Fry, os textos certamente vão agradar.

5 razões pelas quais JavaScript pode ser a próxima grande linguagem

October 30th, 2007 § 19 comments § permalink

Há sempre uma grande quantidade de especulação sobre qual a próxima linguagem que ganhará as mentes e corações dos desenvolvedores. As apostas atuais muito provavelmente tendem na direção do Ruby.

Considerando o sucesso que o Ruby on Rails está experimentando atualmente, eu também me sinto tentado a dizer que Ruby é a próxima grande linguagem. Ruby tem a história perfeita: virtualmente desconhecida em sua primeira década de vida, surgiu com uma estrela no cenário atual de programação, graças a uma killer app cujo mindshare não para de crescer.

Ruby é, através de Rails, responsável pela aceitação de linguagens dinâmicas como ferramentas possíveis na atualidade. Alguém poderia argumentar que a atual revolução dinâmica aconteceria com ou sem a presença do Ruby. Eu tenho que discordar: o sucesso do Ruby fez com que o passo de pesquisa e experimento em linguagem alternativas aumentasse em uma ordem de magnitude nos últimos dois anos. Eu acompanho o cenário de desenvolvimento há mais de uma década e foi somente após a explosão provocada pelo Rails que o cenário mudou.

Ainda assim, eu acredito que Ruby não será a próxima grande linguagem. A despeito de desenvolvimento como JRuby e IronRuby, o lugar no topo não está garantido para essa bela linguagem.

Esse lugar, eu acredito, pertence ao JavaScript.

Se o JavaScript se tornar a próxima grande linguagem, um ciclo completo estará formado. Uma linguagem que nasceu para transformar a parte cliente da Web e sofreu uma queda ignóbil, sendo considerada por anos algo que somente merecia a atenção de candidatos a programadores, está ressurgindo agora com uma fênix, elevada ao panteão de linguagens sérias e merecedoras de atenção.

Aqui estão cinco razões pelas quais JavaScript pode se tornar a próxima grande linguagem tanto no lado cliente quanto do lado servidor das aplicações modernas:

Razão #1: A similaridade com C e Java, simplificada

A verdade é dura: C ainda desfruta de uma enorme popularidade e influência do uso e desenho de linguagens. E com a ascendência do Java, a sintaxe do C se tornou ainda mais dominante. Por si só, isso já é um motivo para garantir uma certa medida de popularidade ao JavaScript.

Mas o motivo real está no fato de que JavaScript simplifica a sintaxe do C e do Java a um nível palatável para o desenvolvedor médio. O uso de características dinâmicas fala mais alto do que qualquer coisa. Se há um ponto em que o Java falhou foi aí: se Java tivesse gerado algo como o Groovy no seus dois primeiros anos e tivesse convertido isso na linguagem padrão para applets, a história da Web teria sido completamente diferente.

Um garbage collector funcional ajuda bastante. Como o Ruby e Python provaram, não é preciso controle granulado sobre alocação de memória para criar programas complexos.

A única desvantagem real do JavaScript, no que tange à sintaxe, pode estar no fato da mesma ser baseada em protótipos e não em classes. Isso deve mudar com o JavaScript 2, mas a decisão final dos desenvolvedores quanto a isso ainda está no futuro. Até o momento, o uso de protótipos não está freando a linguagem, embora esteja limitando determinados usos.

Razão #2: A plataforma é a Web

Não há nada mais ubíquo do que código fonte HTML. JavaScript segue a mesma direção. A despeito de minimizadores de código e obfuscadores, a vasta maioria do código JavaScript em uso atualmente está disponível para adaptação e incorporação em aplicações. De editores de textos ricos a plataformas completas de construção de interfaces passando por bibliotecas utilitárias, há uma enorme quantidade de código documentado e acessível.

Esse código, além de tudo, roda em uma plataforma aberta e extremamente acessível, que é a própria Web. Isso dá ao JavaScript um grau de liberdade em termos de experimentação que não está disponível a basicamente nenhuma outra linguagem. Com o crescimento de ferramentas de apoio, o custo de desenvolvimento inicial está caindo até um ponto em que qualquer programador pode se dar ao luxo de desenvolver aplicações mais complexas sabendo que terá suporte amplo para isso.

O fim das grandes diferenças de compatibilidade entre os vários navegadores também está contribuindo para que a Web se estabeleça cada vez mais como uma plataforma sólida para aplicações suficientemente sofisticadas que se confundem com o desktop

E um último ponto: o JavaScript está intrinsecamente mesclado em duas arenas que paralelizam a Web.

A primeira dessas arenas é a de aplicações ricas na forma de tecnologias como Adobe Air e Siverlight. Essas plataformas não só estão adotando o JavaScript como ferramenta primária como estão também aumentando o seu passo de desenvolvimento, oferecendo melhores interpretadores e compiladores.

A segunda arena é a de aplicações offline. Com o aumento de aplicações com o serviço, o uso de uma linguagem comum é necessária para aplicações que queiram deixar o confinamento do navegador e se tornarem cidadãs de um desktop extendido. JavaScript já é a linguagem candidata perfeita para isso.

Razão #3: Ajax

Não só a Web é a plataforma, mas o uso de Ajax está trazendo toda uma nova comunidade de desenvolvedores para o JavaScript. O Ajax está fazendo hoje o papel que o view source fez na Web de dez anos atrás.

Enquanto antigamente o JavaScript era relegado a funções como criar rollovers, simular transições e efetuar procedimentos minimalísticos similares em aplicações Web, aplicações atuais rotineiramente carregar centenas ou milhares de kilobytes de JavaScript para transformar a experiência do usuário.

Hoje espera-se que um desenvolvedor saiba utilizar plenamente JavaScript em suas aplicações. Seja qual for a linguagem que ele use para desenvolver–Ruby, Python, C# ou Java–uma linguagem permanece constante: o JavaScript.

Como é improvável que outras linguagens ganhem utilização em um navegador, a tendência é que o JavaScript se torne cada vez mais adaptada a criar uma experiência completa de desenvolvimento e execução em um ambiente que não ficará nada a dever aos atuais O Ajax está fazendo hoje o papel que o run-times.

Razão #4: Protocolos e ferramentas

JSON é hoje basicamente um padrão de transmissão e transformação de dados na Web. Compacto e compactável, substituiu rapidamente o XML como protocolo de transporte e tem liderança indiscutível por estar baseado na única linguagem cliente disponivel.

Esse desenvolvimento, apoiado em outros como o CouchDb estão dando ao JavaScript uma legitimidade enorme em termos de aplicação real. Nem mesmo o mundo corporativo foi capaz de resistir à mudança desencadeada por esse pequeno protocolo e, atualmnte, transformações baseadas em JavaScript são comuns. Tecnologias como o CouchDb, com sua integração direta ao JavaScript e com um uso eficiente e lógico de uma arquitetura REST só trazem benefícios à linguage.

Além disso, ferramentas e ambientes de desenvolvimento mais sofisticados estão proliferando. Ambientes de desenvolvimento estão intrinsecamente ligados ao sucesso de uma linguagem–isso, inclusive, é algo que a comunidade Ruby está percebendo agora. Esses ambientes fornecem um trampolim para desenvolvedores inexperientes e uma base sólida para desenvolvedores já experimentados.

Esse tipo de legitimização pode ser mais um dos passos que vai conduzir o JavaScript ao ponto em que outras linguagens igualmente dinâmicas não podem chegar.

Razão #5: Distribuição ubíqua

O JavaScript não está mais só nos navegadores. Como mencionado anteriormente, tanto o Adobe Air quanto o Silverlight incorporam funcionalidades baseadas em JavaScript–e de maneira muito significativa.

Mas a evolução do JavaScript não para aí. Máquinas virtuais stand-alone já existem e podem ser usadas para basicamente qualquer tipo de desenvolvimento necessário com JavaScript. A mera integração com o Java permite o acesso a uma quantidade enorme de bibliotecas que transformam o desenvolvimento de novas aplicações um passo trivial.

O processo atual de desenvolvimento do JavaScript está formando um círculo virtuoso de desenvolvimento que está colocando a linguagem em uma posição de franca ascenção. Desdobramentos como a liberação do Tamarin são avanços que repercutiram em breve na comunidade de desenvolvimento.

Olhando para a combinação acima, eu não duvido que em breve surja um framework Web baseado em JavaScript, funcionamente equivalente ao Rails ou Seaside, capaz de ser rodado em basicamente qualquer plataforma possível, dada a profileração do JavaScript, e com a capacidade de integrar-se intimamente com outras ferramentas baseadas em JavaScript. É só uma questão de tempo.

Conclusão

Prever o futuro é uma atividade essencialmente frágil. Mas especular sempre é interessante quando o passo de modificações em uma determinada área parece chegar em um certo nível onde tudo parece posssível. Esse é o caso do JavaScript agora, em minha opinião, e as cinco razões acima são uma reflexão desse pensamento.

Eu volto então à minha aposta: e se eu tivesse que apostar agora, eu apostaria no JavaScript.

A Apple e seus felinos

October 29th, 2007 § 2 comments § permalink

Depois de ler essa enorme e extremamente completa resenha sobre o Leopard, eu tenho uma única palavra para expressar a minha reação: caramba!

Eu ainda não comprei a nova versão do Mac OS X–provavelmente vou esperar pela versão 10.5.1 ou mesmo a 10.5.2, por pura preguiça de corrigir eventuais micro-problemas de instalação–mas estou impressionado com as mudanças feitas por baixo das cenas no sistema operacional da Apple.

Como o próprio artigo aponta, a Apple liberou cinco versões incrementalmente mais sofisticadas do Mac OS X tempo que a Microsoft gastou para liberar a primeira–e irreparavelmente problemática e incompleta–nova versão do Windows. Nesse meio tempo, a Apple transformou o seu principal produto várias vezes e de formas muitas vezes dramáticas.

O que mais me impressiona é que centenas das mudanças citados por Siracusa em seu artigo são tão profundas que seria de se esperar uma incompatibilidade completa entre Tiger e Leopard. Mas, e bem óbvio, a Apple estende aos motor de seus felinos a mesma preocupação que aplica em seus demais–e comparativamente mais simples–produtos. É realmente necessária uma espécie bem específica de hubris para colocar um produto na praça com essa quantidade de funcionalidade nova.

Antes que me acusem de ser um fanboy da Apple, eu devo dizer que uso todos os principais sistemas operacionais desktop atuais e digo isso tudo como um interessado nesse tipo de sistema em geral.

E a palavra continua sendo: caramba!

iLife ’08 por preço camarada

October 26th, 2007 § 1 comment § permalink

Isso estava bem escondido na página da Apple Brasil: apesar de visitar regularmente, só descobri hoje que quem comprou um Mac recentemente (sendo isso do dia 07 de agosto para cá) tem direito a um upgrade do iLife para a versão ’08 por 19 reais.

Coincidência ou não, comprei o meu Macbook nesse dia exato. Eu tinha decidido comprar uma semana antes, mas decidi aguardar um pouco. Que bom.

Experiências multi-plataforma

October 26th, 2007 § 3 comments § permalink

Trabalhando agora com múltiplas plataformas, eu começo a acreditar que essa é uma experiência que todo programador deveria procurar. Eu venho adicionando plataformas ao meu processo há anos: comecei com o Windows, migrei para o Linux há alguns anos, e comecei agora com o Mac.

Por razões de trabalho, mantenho ainda o Windows como uma plataforma de desenvolvimento. Na verdade, o Windows ainda representa 60% do trabalho que eu faço na empresa. O trabalho restante de desenvolvimento é feito no Linux e é no Linux também que acontece qualquer tarefa que não é de desenvolvimento, como elaboração de documentos, diversão, etc. O Mac é usado como plataforma de mobilidade sendo muito parecido com o Linux em termos de desenvolvimento. Eu ainda não tenho certeza se manterei o Mac na próxima vez em que eu precisar de um computador–o Linux é muito mais interessante em vários aspectos–mas é uma boa opção com o preço caindo e com a experiência que estou tendo.

O mais interessante nessa estória toda é a consciência multi-plataforma de desenvolvimento que eu estou ganhando, principalmente no que tange ao desenvolvimento extra-trabalho. Todo e qualquer projeto pessoal que eu estou fazendo é automaticamente moldado pela necessidade de funcionar nas três plataformas que eu uso atualmente. Embora cada uma das plataformas ofereça ambientes específicos muito bons, a minha preocupação agora é fazer com que a experiência final seja similar onde quer que eu esteja.

Obviamente, esse é um grande problema. Há pouco mais de três anos, eu escrevi sobre a dificuldade de escolher uma linguagem e toolkit para esse tipo de tarefa. A situação não mudou muito. Ainda assim, é interessante tentar lidar com as diferenças e procurar algo que não seja um mínimo denominador absoluto. Esse tipo de perspectiva é bastante benéfica tanto em termos práticos–lidar com as diferenças é algo que ensina muito sobre como as coisas são construídas e como problemas podem ser resolvidos–como em termos ideológicos–ajudando a justificar a necessidade de código livre e de ferramentas abertas. O respeito pelo que a Web conseguiu também é algo que fica cada vez mais patente.

O único inconveniente de tantas plataformas é a dissonância cognitiva de lidar com interfaces que, mesmo sendo baseadas no mesmo paradigma, possuem convenções tão diferentes que a mente dá voltas tentando readaptar-se às mudanças súbitas de localização. Memória muscular nesses momentos não conta muito.

Agora é só voltar à dura tarefa de escolher ferramentas que sejam, mesmo que minimamente, capazes de realizar a tarefa de compor algo coerente para essa confusão toda.

Prism

October 25th, 2007 § 2 comments § permalink

Depois de brincar um pouco com o Silverlight e com o Adobe Air, a minha conclusão é a seguinte: ambos são idênticos em termos de funcionalidade proposta (o que não significa que ambos estejam no mesmo ponto de desenvolvimento) e ambos vão contra o espírito básico da Web que é focado em tecnologias abertas, escaláveis, clonáveis e de fácil distribuição. E não venham me dizer que o Adobe está publicando tudo como código aberto já que isso simplesmente não é verdade.

Leitores mais antigos desse blog talvez dirão que eu estou me contradizendo já que eu defendi ambas as tecnologias há um tempo atrás (1, 2). Mas, mantenho minha posição. Eu sou bastante pragmático no que tange ao desenvolvimento e embora procure utilizar o máximo de código compatível com minhas próprias posições ideológicas ainda não consigo viver completamente no mesmo. Estou trabalhando nisso, mas ainda não cheguei no ponto que quero.

O que, em última instância, me faz ficar muito feliz com a notícia do Prism, um projeto do Mozilla Labs que eventualmente pode se tornar um concorrente aberto dessas duas tecnologias proprietárias. Não, é claro, no sentido de geração de aplicações Web mas no sentido de disponibilização em um formato coerente com o desktop.

Ao contrário do Silverlight e do Adobe Air, o Prism, pelas informações da páginas, parece estar sendo pensando desde o princípio em termos de um relacionamento aberto com os padrões Web que todos conhecemos e amamos. É claro que há muito chão para percorrer nesse sentido, mas os desenvolvimentos recentes me levam a crer que o caminho oferecido pelo Prism é melhor que o oferecido pelo Silverlight e Adobe Air.

O navegador como plataforma está amadurecendo cada vez mais. JavaScript, como uma linguagem, está se tornando um padrão não só de desenvolvimento Web como de transposição de dados ao longo de ambientes. O próprio HTML está sendo repensado e é bem possível que em breve ultrapasse as limitações atuais (através, quem sabe, de pontes JavaScript).

Não me interpretem mal, por favor. No momento atual, o Prism não parece nem chegar aos pés do que Silverlight e Adobe Air oferecem. Mas a idéia já está plantada. Olhe o ponto em que o GreaseMonkey chegou. Há também a questão do Firefox 3. É só uma questão de tempo.

Cinco anos

October 24th, 2007 § 5 comments § permalink

Com a confusão toda desse mês, esqueci completamente que completei cinco anos com esse blog no comecinho do mês. Ironicamente, o dia do aniversário foi passado em uma mesa de operações.

Com exceção de uma parada de sete meses entre 2005 e 2006, eu postei basicamente todo mês aqui. Foram cinco anos de bem interessantes conhecendo muita gente, me desenvolvendo profissionalmente, melhorando a forma como eu escrevo e programo, e uma incontável quantidade de outras experiências que eu me divirto em encontrar nas entradas existentes aqui e nas histórias por trás das mesmas.

Obrigado a todos que se dispõem a ler–e comentar, é claro–o que escrevo. E espero que venham mais cinco anos–pelo menos.

Rio on Rails

October 24th, 2007 § 0 comments § permalink

Por falta de tempo, esqueci de anunciar ontem: a data do Rio on Rails já está definida. O evento acontecerá no dia 8 de dezembro (sábado) e contará com a presença de vários palestrantes de todo o Brasil, com muitos dos nomes que estão fazendo e acontecendo no cenário Rails do Brasil.

Eu também estarei lá, palestrando e aproveitando a oportunidade para conhecer mais usuários do Rails no Brasil. Nos vemos lá.

Curso de verão de Rails da e-Genial

October 23rd, 2007 § 0 comments § permalink

Se você está querendo aprender Rails e quer fazer um curso intensivo e rápido, a e-Genial está oferecendo um curso de verão com a duração de 4 semanas. O curso conta com material didático extensivo e com 18 horas de aulas interativas com o Fábio Akita, um reconhecido pioneiro de Rails no Brasil e autor do único livro sobre o assunto por aqui.

Eu tive o prazer de ministrar esse curso anteriormente para duas turmas e foi uma experiência incrível para mim. Pelos e-mails que recebi posteriormente dos alunos, acredito que tenha sido uma experiência muito boa para eles também. Com as aulas interativas, o curso se torna muito dinâmico e participativo. Infelizmente, não tenho condições de ministrar o próximo–por razões de recuperação da cirurgia que fiz recentemente–mas o Carlos gentilmente compreendeu a situação e conseguiu um novo professor que com certeza apresentará um material de excelente qualidade.

Em resumo, se você quer aprender com um mestre de Rails, não hesite e corra para a nova turma de Rails da e-Genial. Novidades esperam você–principalmente agora que o Rails 2.0 está chegando.

Where am I?

You are currently viewing the archives for October, 2007 at Superfície Reflexiva.