Saturday, January 29, 2005

Random cool stuff

  • Discussão sobre o futuro do trabalho no blog do xyko.
  • Banda nova: Dresden Dolls. Ouçam "Coin-operated boy".
  • Demonstração do uso do Squeak na educação. Squeak é um dialeto de Smalltalk, criado pelo próprio Alan Kay. O legal é que ele possibilita programação interativa lidando com objetos visuais (desenhos, p. ex.) na tela. Esse tipo de programação é impraticável para desenvolvimento profissional (Charles Simonyi e os fãs de MDA discordam, naturalmente). Mas é um meio fantástico para ensinar conceitos de programação e de raciocínio matemático para crianças.
  • Post do Sérgio jogando lenha na fogueira Java vs. dotNet. Concordo que esse tipo de aspecto cultural é importante, sim. É um dos motivos de eu trabalhar principalmente com Java hoje. Mas é necessário distinguir entre a cultura de desenvolvimento sério em plataforma Microsoft e a mediocridade do mercado brasileiro de code-monkeys.
  • Screencast da evolução de uma página curiosa na Wikipedia; pelo Jon Udell.

Wednesday, January 26, 2005

Folksonomies e Ontologias

Os sites e blogs que tratam de arquitetura da informação e software social estão às voltas com a polêmica a respeito das folksonomies(*) e suas implicações sociais. O que trouxe à baila este assunto foi a popularidade de sites como do del.icio.us, para criação bookmarks públicos, e o flickr, para compartilhamento de fotos. O que eles têm em comum é o mecanismo de categorização do conteúdo: a cada ítem (links no primeiro, fotos no segundo) se associam um conjunto de tags (etiquetas) . Cada usuário tem total liberdade para entrar com as tags que ele escolher. Não existe vocabulário controlado, controle de sinônimos, nem nenhum dos mecanismos que a comunidade de biblioteconomia considera imprescindíveis. Dessa forma absolutamente simples surge, como que orgânicamente, uma estrutura rica, ainda que algo caótica, de metadados.

É interessante que não se cria apenas um espaço de nomes plano (flat namespace) . Pode-se fazer, facilmente, buscas que combinam diversas tags. Se pensarmos em cada tag como um conjunto nomeado de objetos, estas buscas seriam operações de intersecção. Quando percebi isto imediatamente pensei que o sistema poderia ser enriquecido com a possibilidade de se definir conjuntos intencionalmente, além do mecanismo extensional em uso hoje. O conceito talvez fique mais claro se pensarmos nas tags como predicados (unários). Seria possível definir tags como Programação = Java UNIÃO dotNet UNIÃO C++.

A polêmica entre os defensores das vantagens de sistemas taxonômicos mais formais (top-down) contra os adeptos das folksonomies (bottom-up) está bastante viva no blog coletivo many2many. Clay Shirky, num post recente, defende as tags em oposição à idéia de ontologia(**), oriunda da pesquisa em inteligência artificial e pedra fundamental do projeto Semantic Web. Com essa tacada ele derruba também as propostas de se tomar as folsonomies como como base para a criação de esquemas mais sofisticados.

Pois bem, a minha idéia é equivalente à instalação de um mecanismo de ontologia sobre as bases folksonômicas. O exemplo que eu citei pode ser reescrito como {Todo Java é Programação e Todo dotNet é Programação e ...}. Os argumentos do Shirky não podem ser descartados, mas creio que ele ignora a possibilidade da formação de um sistema dinâmico de evolução de ontologias. No exemplo que ele dá, um novo elemento força uma reconsideração da estrutura da ontologia. E, com uma interface com o usuário adequada, este tipo de reestruturação poderia ser tratada tranquilamente.

Inevitavelmente se perderia um pouco do apelo inerente à beleza simples dos sistemas atuais. Mas a minha experiência com o del.icio.us me leva a pensar que um nível maior de sofisticação seria utilíssimo. Me parece que uma catalogação abrangente a ponto de permitir buscas úteis exige hoje muito trabalho repetitivo; propenso a erros, portanto. A definição intencional de tags pode aliviar bastante este problema, além de permitir a implementação ad-hoc de controle de sinônimos (pense em um "se e somente se").

Não vejo outra maneira de investigar a eficácia desta abordagem senão implementar e testar; penso em fazer desta cria mutante do Prolog com o del.icio.us o meu próximo projeto pessoal. (disclaimer: tenho um longo histórico de começar e não terminar projetos pessoais...) .

(*) Folk == povo; taxonomy == taxonomia. Esse neologismo ficaria nojento traduzido em português, e como é de fato neo, não vejo nenhuma vantagem em fazê-lo.

(**) O conceito de ontologia usado é o definido aqui. Não é necessáriamente relacionado ao conceito metafísico de ontologia (que trata-se, aaaaaaacho, do estudo da natureza das coisas que são).

Friday, January 21, 2005

(XML = evil) v (¬ XML = evil)?

Eu gosto de XML e WebServices. No primeiro post deste blog demonstrei meu desprezo por modas. Quem leu qualquer publicação de TI ou assistiu a algum evento da área nos últimos três anos sabe que WebServices são uma moda. Os departamentos de marketing das grandes corporações de tecnologia trabalham incansavelmente gerandohype a respeito de SOA, WS-?, OASIS, Dublin Core, RDF, ...

E é justamente por ser uma moda que eu os aprecio. Incoerência? Talvez, mas primeiro deixe-me explicar. Em termos puramente tecnológicos os WebServices não apresentam nada de novo. Seja usando uma maneira baixo-nível, bare-metal, I'm-a-unix-hacker, all-I-need-is-a-socket-and-some-ASCII seja pelo caminho orientado-a-objeto, programando-em-C++, escrevendo-papers-sobre-sistemas-distribuídos, os problemas a que as especificações WS' se dirigem já foram resolvidos no passado. A diferença é que agora percebe-se um momento maior levando essas iniciativas à frente. Quem não gosta da palavra moda, pode adotar um buzzword e chamar de network effect; existe uma vontade de organizações e pessoas de se comunicar, e o meio pelo qual esta comunicação está ocorrendo é a pilha de WebServices.

Clay Shirky faz uma bela exposição, como de costume, do fato que nenuma tecnologia, por si só, tem o poder de fomentar colaboração. Esta só ocorre quando humanos, nas duas pontas, decidem que o trabalho de se definir bases comuns para a comunicação é recompensado de alguma forma. E eu vejo no hype desmedido sobre os WebServices uma manifestação dessa disposição. Se não der certo, pelo menos temos o conforto que exércitos de marketeiros perderão seus empregos...

Thursday, January 20, 2005

Idéia boba

Comprar livros para os professores da rede pública.

Não falei que a idéia era boba? O problema é que, até onde eu sei, isso não é feito. A qualidade da educação básica no Brasil é um problema amplamente reconhecido. Não há eleição nos últimos anos em que este não tenha sido um tema importante. E várias soluções têm sido aventadas, como obrigar que os professores tenham curso superior, aumentar o salário destes, ou oferecer, via universidades públicas, cursos de aperfeiçoamento para os professores. Eu não tenho nada contra estas iniciativas, até diria que uma ampliação do mercado de ensino à distância me beneficiaria pessoalmente.

Mas, como de costume, os caminhos mais simples tem sido ignorados. Uma seleção de boas obras, dentre a vasta literatura de divulgação científica produzida internacionalmente, talvez complementados por um ou outro livro introdutório de nível universitário, teria um efeito transformador na bagagem cultural e motivação dos mestres Brasil afora. Imagine como mudaria a compreensão de física pelas novas gerações se seus professores de ciências lessem Hawking. As aulas de biologia não seriam mais as mesmas se complementadas pelas anedotas informativas do Dawkings.

E o custo seria, creio, desprezível. O MEC já é responsável diretamente por uma enorme parcela da produção editorial nacional. Mais umas poucas dezenas de livros para cada escola não teriam grande impacto no orçamento. Só ressalvo que é preciso fugir da tentação patriotética de ignorar o mundo e limitar as compras a obras de autores brasileiros.

Uma iniciativa complementar, também de baixo custo, seria a criação de fóruns de discussão entre professores universitários e seus colegas do ensino básico. Primando pela informalidade, para evitar o fenômeno só-estou-fazendo-esse-curso-para-pegar-o-diploma, esse tipo de ação pode levar a um salto de qualidade na educação. Ou não, vai saber...

Wednesday, January 19, 2005

The XML way

Post interessante do Jon Udell cidando trabalho do Adam Bosworth a respeito de SOA.

O ponto que eu considerei mais relevante é a questão de se desenvolver esquemas altamente especializados para SOA versus uma abordagem mais estilo Lego, baseada em esquemas simples compartilhados. O maior exemplo deste segundo caminho é o sucesso do RSS.

Pensando rapidamente sobre o assunto eu percebi a importância que linguagens de transformação, como XSLT, podem ter; atuando como tradutores entre interfaces altamente especializadas e padrões mais genéricos.

De qualquer forma este é um debate que vale a pena acompanhar de perto.

Saturday, January 15, 2005

Sobre informação.

"Information wants to be free". Esta é, provavelmente, a única citação do Stallman com a qual eu concordo. Ele está falando sobre os controles sociais e monetários que impedem a livre troca e disseminação da informação. Eu, por outro lado, não vejo problema algum na existência desse tipo de controle. Pode-se argumentar, inclusive, que as regras e controles são o que definem uma sociedade. Pode-se argumentar, mas não o farei agora; prefiro neste momento me concentrar no assunto informação. Ela está sim presa, mas os grilhões não são os identificados pelo RMS e seus colegas cabeludos. A informação está presa, dentre outros lugares, no meio de documentos do Word!
Explico melhor. Eu considero que a informação se distribui num contínuo: perto de uma extremidade estão os documentos do Word, próximos da outra estão Bancos de Dados Relacionais. Aqui cabe uma breve explicação da mecânica destes. Imagine uma corretora de seguros, vamos chamá-la de 'Deixa que eu seguro inc.'. Eles precisam manter um registro dos seus Corretores credenciados; cria-se, para isso, uma tabela com colunas para o nome do corretor, data de contratação, salário, etc. Analogamente se cria uma tabela para informações pertinentes aos Clientes (as colunas poderiam ser nome, endereço, etc...). Agora as coisas ficam mais interessantes: para se armazenar informações referentes aos Contratos pode-se criar uma terceira tabela. Esta terá colunas para informações como duração do contrato, valor mensal e data de assinatura; mas também terá colunas que referenciam as tabelas Cliente e Corretor. A este conjunto de definições de tabelas denominamos esquema do Banco de Dados. Depois que o banco estiver cheio de informações podemos formular perguntas para o sistema como "Quais são os dez corretores que fecharam mais contratos no ano passado" ou "Onde moram os clientes que fecharam os 10 contratos mais valiosos" que são respondidas instantâneamente baseado nos dados disponíveis. Não é legal?
Continuando com este monótono exemplo imaginemos que a 'Deixa que eu seguro inc.' armazena todas as propostas de novos negócios na forma de documentos do Word. Se o corretor for habilidoso ele poderá criar propostas coloridas, com um layout criativo, a marca d`água da 'Deixa que eu seguro inc' no fundo (não quero nem imaginar como seria...) e um título bonito em 3d na cor laranja ocupando a primeira página. O corretor (ou seu estágiário) deve estar super contente com o resultado de seus esforços. Mas essa felicidade acaba no momento em que ele precisar, por exemplo, da média dos preços das propostas feitas na empresa. Mesmo essa informação trivial depende de trabalho braçal massante para ser extraída. Resultados mais sofisticados, então, são inviáveis sem um desperdício extraordinário de recursos.
Expero que tenha ficado clara a vantagem de se lidar com informação organizada dentro de um banco de dados em oposição a tê-la presa nas entranhas de documentos monolíticos. E isso se dá porque o BD preserva a semântica intendida pelo produtor da informação - o meio de especificação dessa semântica é o esquema.
Infelizmente é completamente inviável se esperar que usuários criem esquemas formais de bancos relacionais para cada tipo de trabalho intelectual que façam. Modelagem de BDs não é uma técnica trivial e profissionais frequentemente cometem erros no processo. Eu vejo o papel dos profissionais de TI como sendo buscar soluções intermediárias para este problema.

Friday, January 14, 2005

First post!

Há algum tempo eu estou ruminando a idéia de começar um blog. É frequente que eu tenha algo a dizer mas ninguém para ouvir. Um blog é o ambiente ideal para inflingir ao mundo os meus devaneios irresponsáveis.
Me detiveram, até este momento, uma série de fatores. O principal, provalvemente, é que tem muita gente abrindo blogs e despejando a sua cisterna pessoal na Web. E eu odeio a idéia de seguir moda. Odeio ainda mais ser um seguidor retardatário.
Acabei chegando à conclusão que a única maneira de se descobrir se as minhas objeções são legítimas é tentando. Eis que nasce o meu blog.
Pelo título pode-se perceber que não tenho um tema fixo. Minha única diretriz "editorial" é evitar que isso aqui vire um "meu querido diário". Isso quer dizer que vou procurar postar idéias sobre assuntos que me interessam, não relatar o lixo que é a minha vida.
Vago demais? Não espere muita consistência das minhas estultices, mas só dessa vez eu vou especificar um pouco mais. Assuntos que me interessam: programação, Java, orientação à objetos, liguagens não procedurais, física moderna, filosofia, epistemologia, ciências da mente, lógica, fundamentos da matemática,... Teste: o que todos estes assuntos têm em comum? Resposta: meu conhecimento sobre cada um deles não passa da superfície. Mas eu vou tentando mergulhar mais fundo, e se tudo correr bem, o leitor me acompanhará nesse mergulho.