Dez anos

January 31st, 2008 § 6 comments § permalink

Como 2008 já entrando em fevereiro, percebi que já leio blogs em uma base freqüente há dez anos e que existem alguns que eu acompanho há quase o mesmo número de anos.

O primeiro blog que eu li, e que passei a acompanhar, foi o Scripting News, do ao mesmo tempo famoso e infame David Winer. Na época, embora ele já oferece o site em formato XML, RSS como conhecemos hoje não existia e eu acompanhava o site através de visitas diárias.

Dois anos depois, as primeiras versões do RSS começavam a aparecer e com elas os primeiros leitores. O primeiro leitor que eu usei, em 2001, foi o finado AmphetaDesk que era um aplicação Perl local capaz de baixar e servir os feeds acompanhados por meio de um pequeno e eficiente servidor Web. Por mais simples que fosse, era uma aplicação muito boa com um controle excelente do que já fora visto e do que era importante para o usuário.

Essa foi a época do Radio UserLand e Edit This Page, onde eu cheguei a ter um blog que durou exatos dois dias, principalmente porque a plataforma era uma coisa horrenda.

Como sempre fui mais ligado com tecnologia, essa foi a época em que comecei a ler gente como Sam Ruby, Les Orchard e Ben Hammersley, gente que estava criando o que hoje é algo comum para quase todo mundo. As brigas homéricas por posição na lista dos maiores e melhores ainda estava a pelo menos dois anos no futuro.

Blogs brasileiros eu só comecei a seguir bem mais tarde, quando criei o meu em setembro de 2002. Ironicamente, comecei a escrever primeiro em inglês. Este blog em português foi lançado pouco tempo depois e eu mantive ambos bem ativos durante quase três anos. O retorno do ano passado se seguiu a um período de quase dois anos com entradas bem esporádicas.

Só de escrever esse texto já deu para lembrar de blogueiros que eu acompanhei por anos e que, por um motivo ou outro, perdi em migrações de serviços, computadores e plataformas. Os comentários feitos, as descobertas, a época em que tudo era tão novo que pensar no enorme espectro que os blogs abrangem hoje era quase impossível.

Dez anos de leituras e eu realmente tenho que agradecer aos milhares de blogueiros que gastaram seu precioso tempo escrevendo sobre os mais variados assuntos. Mesmo que eu não conheça pessoalmente nem um centésimo das pessoas que acompanho ou acompanhei, a presença delas foi um estímulo em todos os sentidos. Muito obrigado.

Pão de Cast S02E03 – Idade da Pedra

January 30th, 2008 § 2 comments § permalink

Para você que vai passar o Carnaval na frente do computador, aproveite e ouça o Pão de Cast especial de Carnaval. Esse conta com um convidado especial que contribuiu enormemente para a discussão. E falando em discussão, os assuntos tratados forma:

Divirtam-se!

Flex e .NET

January 30th, 2008 § 2 comments § permalink

Amanhã entregamos a primeira versão de um aplicativo que desenvolvemos em .NET e Flex. O objetivo dessa aplicação é complementar um ambiente existente de educação à distância com a possibilidade de dar aulas em tempo real usando vídeo e áudio. Além desses recursos básicos, a aplicação suporta um série de outros recursos que passam por apresentações, enquetes, avaliações completas e gravação das sessões enquanto acontecem.

O interessante é que, apesar da preferência do cliente por tecnologias da Microsoft, o Flex foi escolhido ao invés do Silverlight. O motivo primário foi a estabilidade do primeiro em termos de API. Enquanto o Silverlight ainda está mudando bastante, o Flex já se encontra em uma posição mais estável com um servidor de aplicações muito bem capacitado.

Como esperávamos, dos nossos testes anteriores, o desenvolvimento em Flex foi bem simples e sem muitas surpresas. Tirando a parte de gravação, que levou um pouco mais tempo de pesquisa, a criação das demais funcionalidades foi linear e exatamente dentro do cronograma. Vídeo e áudio estavam funcionando já na primeira semana de desenvolvimento suportando a carga necessária (dezenas de usuários em uma única sessão).

Da mesma forma, a comunicação entre o Flex e o .NET se provou extremamente simples envolvendo pouco mais do que a criação de alguns protocolos REST simples entre os dois pontos da aplicação. Não precisamos nem mesmo de usar alguma camada mais pesada já que as necessidades da aplicação, sendo intermediada pelo FMS, eram bem tranqüilas.

Com um projeto pronto, já temos outros clientes se interessando pela tecnologia. Os recursos citados acima estão sendo desenvolvidos de uma forma mais extensiva e mais refinada e isso tem se mostrado um bom ponto de venda. Isso comprova a minha idéia de que Flex e Silverlight podem se converter em algo muito usado em aplicações internas.

No geral, foi um experiência muito boa e esperamos poder usar o Flex também em integração com os outros frameworks que utilizamos. Django provavelmente será o próximo se tudo correr bem.

Blog em inglês

January 30th, 2008 § 0 comments § permalink

Outro anúncio rápido do departamento de manutenção: meu blog em inglês, que anda parado há uns tempos está de volta há cerca de um mês. A maioria dos textos são traduções para aproveitar o material, mas de quando em quando há alguma coisa mais específica ou alguma conversação maior que não é parte da “blogosfera” em português.

Ou pelo menos essa é a intenção. Depois de ficar parado quase dois anos, eu fiquei surpreso ao receber um comentário de um leitor antigo. Achei que todos já haviam debandado, mas pelo visto existem pessoas que não removem subscrições por nada desse mundo.

Natureza humana

January 29th, 2008 § 0 comments § permalink

Eu tenho acompanhado com interesse o desenvolvimento das primárias democratas nos Estados Unidos. A situação única de um candidato negro e uma candidata já são o suficiente para garantir uma quantidade enorme de fatos e desenvolvimento curiosos. Desde as declaração de que Barack Obama não é negro o suficiente aos excessos de campanha de Hillary Clinton por seu marido eu-quero-ser-presidente-de-novo, é uma oportunidade única de ver o estranho processo americano de eleição onde você vota mas não escolhe.

Eu estou acompanhando os acontecimentos parte pelos meios usuais e parte por blogs que sempre fornecem visões bem pessoais e locais dos eventos. Agora, com a Super Tuesday chegando, os comentários estão cada vez mais interessantes.

O que resta saber mesmo é que vai ganhar: o preconceito ainda existente ou a inveja masculina de não querer se sujeitar a um comandante-em-chefe do “sexo frágil”. E eu querendo que a Hillary fosse uma Florentina Kane.

Kōan

January 29th, 2008 § 7 comments § permalink

Se há uma coisa que eu gosto na tradição Zen são os kōan. Poucas coisas expressam tanto, para o espírito ocidental, a natureza ambígua e intuitiva do Budismo. Embora eu não me subscreva ao Budismo, eu acho bem interessante o tipo de exercício por trás de um kōan.

Dois exemplos em particular na página da Wikipedia sobre o assunto estão entre os meu favoritos.

O primeiro expressa muito bem a contradição inerente em um kōan bem construído:

Se você encontrar o Buda, mate-o.

Linji

O o segundo talvez expresse melhor a necessidade de uma compreensão intuitiva do que o kōan está tentando dizer:

Quando duas mãos batem, há um som. Qual é o som de somente uma mão?

Hakuin Ekaku

Nos tempos modernos, os kōan acabaram se tornando também uma parte inerente da cultura hacker. Veja esse exemplo citado por Eric Raymond em seu Jargon File:

Um dia, quando Sussman era um calouro e estava programando no PDP-6, Minsky sentou-se ao seu lado.

— O que você está fazendo? — perguntou Minsky.

— Estou treinando uma rede neural randômica para jogar o jogo da velha — Sussman respondeu.

— E porque a rede é randômica? — perguntou Minsky.

— Eu não quero que ela tenha conceitos prévios sobre como jogar — disse Sussman.

Minsky então fechou os olhos.

— Para quê você está com os olhos fechados? — Sussman perguntou ao seu professor.

— Para que a sala fique vazia.

Naquele momento, Sussman alcançou a iluminação.

Esse kōan tem uma resposta definida, o que não é o caso da maioria deles, mas representa um exercício similar. Aliás, ao contrário dos kōan Zen, os relacionados com programação tendem a ser um tanto ou quanto humorísticos, representando muito da indisciplinada arte que é o desenvolvimento.

Neste aspecto, um outro exemplo fascinante vem de Guy Steele em uma longa discussão sobre Scheme na lista Lightweight Languages:

O venerável mestre Qc Na estava caminhando com seu estudante, Anton. Com a esperança de levar seu mestre a uma discussão, Anton disse:

— Mestre, ouvi dizer que objetos são um boa coisa. Isto é verdade?

Qc Na olhou com pena para seu estudante e respondeu:

— Pupilo ignorante! Objetos são somente uma pobre versão de closures.

Entristecido, Anton pediu licença ao seu mestre e retornou à sua célula, intento em estudar closures. Ele leu cuidadosamente toda a série de artigos Lamdba: The Ultimate e seus primos e implementou um pequeno interpretador Scheme com um sistema d eobjetos baseado em closures. Aprendeu muito e esperou o momento de encontrar-se com seus mestre e informá-lo de seu progresso.

Na sua próxima caminhada com Qc Na, Anton tentou impressionar seu mestre dizendo:

— Mestre, eu estudei diligentemente o assunto, e agora entendo que objetos são realmente uma versão pobre de closures.

Qc Na respondeu batendo em Anton com seus cajado e dizendo:

— Quando você vai aprender? Closures são uma pobre versão de objetos.

Naquele momento, Anton alcançou a iluminação.

Esse é especialmente interessante porque não tem uma resposta específica mas serve como um excelente ponto de partida para um estudo sobre o que paradigmas realmente representam. O que, obviamente, me leva a pensar que deve existir algum kōan sobre REST. Eu só não encontrei ainda.

Dentro da contradição, ambigüidade e necessidade intuitiva dos kōan, eu acho que eles dão um casamento perfeito com a arte que nós, programadores, praticamos. Como eu disse acima, isso vem da parte que não pode ser disciplinada e que depende de uma compreensão interna que todo programador possui do quê e como ele deve fazer o que faz. O que os torna, é claro, naturalmente interessantes para longas discussões sobre a prática da arte.

De qualquer forma, seja para filosofar ou programar, kōan dão uma bela leiura. E vocês, conhecem algum bom kōan?

Memória

January 28th, 2008 § 7 comments § permalink

Uma amiga minha estava mencionando que seu pai, nas horas vagas, começou a desenhar a cidade em que cresceu em uma folha de papel, mapeando suas lembranças desde a infância até o momento em que deixou a comunidade pela vida na metrópole.

O pai dela, que deve estar em seus setenta em poucos anos, tem uma memória incrível. Ele não só consegue se lembrar de como as ruas na cidade era dispostas naquela época, como também onde estavam os estabelecimentos comerciais, quem morava em tal lugar, onde o pessoal se reunião, e todo o resto da vida social de um pequena cidade.

O que essa amiga quer fazer agora é dar de presente ao seu pai uma representação eletrônica disso, seja através de um site ou um programa simples, de forma que ele possa manter esse conhecimento e trocar com outras pessoas interessadas. Além do desenho, ele eventualmente vai poder cadastrar fotos e pequenas descrições sobre o que cada local representa. Em suma, um pequeno mundo virtual de suas memórias e lembranças.

Depois de ouvir o plano dessa amiga, eu comecei a pensar em minhas próprias lembranças e o quanto eu realmente guardo das mesmas. Eu tenho que confessar que não tenho nem um terço da capacidade de memória desse senhor. Embora, como todo mundo, eu me lembre de muito do que aconteceu quando eu era pequeno, minhas memórias atuais não são nem de longe suficientes para que eu possa fazer algo similar. E se não são agora, eu imagino que aos sessenta serão menos ainda.

Eu já tive um diário que durou vários anos. Um dia, em um arroubo que hoje eu considero completamente idiota, queimei tudo. Não era um diário contínuo, do dia a dia, mas era algo que me permitia guardar muito mais do que eu guardo atualmente.

Eu fico pensando no que Charles Stross disse sobre poder guardar toda sua vida em uma memória eletrônica permanente e completa, algo que deve acontecer em poucas décadas. Até lá, eu me questiono se vale a pena manter uma memória disso.

Manter uma diário–não aquela narração cheia de auto-piedade juvenil–mas um discurso para o futuro é algo comum. Os grandes nomes da história sempre acaba fazendo isso e é assim que se tem, às vezes, uma melhor compreensão do que fizeram. Um espécie de diário do capitão, por assim dizer. Não que eu seja–ou mesmo pretenda–ser famoso o suficiente para que minha vida careça de iluminação. Mas é algo que talvez sirva para meu filho, algo que ele talvez ache interessante e o ajude a compreender um pouco do que eu vivi e daquilo que influenciou sua vida.

Ou talvez a memória seja algo que se deva deixar desaparecer, para se tornar algo até fantasioso, que torne os velhos tempos melhores ainda. Permitir que o passado permaneça no passado e que o futuro seja livre também é um dom. Talvez maior até do que a preservação.

Proceduralismo e MVC

January 28th, 2008 § 0 comments § permalink

Continuando minhas reflexões sobre novas possibilidades em paradigmas de desenvolvimento Web, eu comecei a pensar um pouco mais sobre a questão de fragmentação conceitual e como isso é possivelmente o maior problema com os frameworks atuais.

Fragmentação conceitual, no sentido que eu estou usando aqui, é a tentativa de quebrar um determinado domínio de problema em trechos de código gerenciáveis ao invés de tentar tratar o problema com um todo e resolvê-lo em termos do processo que o mesmo representa.

Isso me levou a pensar que a maioria dos frameworks atuais, ao tentar resolver essa questão, adota um faceta mais procedural. Isso pode ser visto até mesmo na organização das URLs que a aplicação expõe. Geralmente são direcionadas a um determinado objeto dentro do programa, a um método específico e dentro de certos parâmetros fixos. Raramente é feita uma tentativa de coordenar o estado entre múltiplas requisições e múltiplos objetos. O resultado final é que a aplicação é uma coleção de métodos fragmentados–daí o conceito–que não tem muita relação entre si além de pertenceram a um escopo comum.

Pensar nesse aspecto deixou claro para mim o que eu considero o maior problema com as implementações REST atuais: elas não são realmente orientadas a recursos como entidades completas que obedecem a um determinado protocolo de acesso e modificação. Antes, a maioria delas é usada como forma de mapear transições independentes entre diferentes estados de uma aplicação (ou um domínio de problema) sob uma capa de recursos. Mesmo frameworks que não usam REST acabam sofrendo de um problema similar.

Um dos motivos pelos quais eu gosto tanto de Seaside vem da sua heresia em dizer que REST é algo fundamentado em uma visão arcaica da Web que não tem muito a ver com as possibilidades atuais. Seaside, ao deixar REST de lado, adota a visão processual de uma aplicação–em contrapartida à visão procedural. A aplicação é vista com um todo, tendo estados específicos que são manipulados através de representações igualmente específicas. Isso não quer dizer que Seaside esteja absolutamente correto no que faz. É uma evolução, mas não o estado final.

A ressurgência de MVC nos frameworks atuais talvez tenha a maior parcela de culpa nesse fechamento. O surgimento de controllers em aplicações Web como um endpoint REST talvez não seja a melhor alternativa. Da mesma forma, limitar modelos como recursos é algo tão fundamentalmente incorreto que eu fico imaginando de onde teria vindo essa interpretação incorreta do que é MVC e REST–e simultaneamente.

Para finalizar, eu devo repetir que o que estou postando aqui são considerações sobre o meu próprio trabalho e sobre o que está norteando meu pensamento nesse momento. Eu posso–e devo–estar errado em muitas considerações e gostaria do feedback de leitores interessados nos mesmos assuntos.

Pão de Cast S02E02 – Linchamentos são permitidos

January 28th, 2008 § 0 comments § permalink

Esqueci de anunciar aqui ontem, mas o segundo episódio do Pão de Cast desse ano já está disponível. Nessa edição falamos de portabilidade de dados, a controvérsia sobre o IE8 e discutimos paradigmas de desenvolvimento Web.

O episódio S02E01 está atrasado por um pequeno detalhe técnico: o Luiz Rocha saiu de férias antes que eu percebesse que precisava de um arquivo que está com ele. Assim que ele retornar, disponibilizarei o arquivo no mesmo lugar de sempre.

Enquanto isso, divirtam-se com o novo episódio. E linchamentos realmente são permitidos.

Nota sobre o Planeta Ruby on Rails

January 27th, 2008 § 2 comments § permalink

Do departamento de manutenção: se alguém assina o meu blog através do Planeta Ruby on Rails e quer continuar a assinar, por favor migre para o feed do próprio blog.

O motivo é que, a partir de amanhã, o meu blog não estará mais no planeta. Antes que alguém me pergunte, não, o Júlio não me expulsou. Eu solicitei a remoção porque raramente estou escrevendo sobre Rails nos últimos meses (embora continue a tratar de Ruby ocasionamente) e acho que quem assina diretamente o Planeta está mais interessado em Rails do que devaneios sobre outras linguagens e assuntos.

Como esse ano eu pretendo escrever bem pouco sobre Rails e focar mais em outras linguagens e frameworks, a presença do blog em um feed coletivo sobre Rails não faz tanto sentido.

De qualquer forma, se você gosta dos outros assuntos tratados aqui, eu incentivo, sem a menor vergonha, que você continue a ler o blog pelo feed principal. Como fiz neste mês de janeiro, vou continuar a tratar de tecnologia e programação em geral, com um foco especial em experimentos e conceitos mais fortemente ligados à programação em si. Ruby, Python, Lisp, Smalltalk, Io, Erlang e outros vão continuar a aparecer regularmente aqui.

Where am I?

You are currently viewing the archives for January, 2008 at Superfície Reflexiva.