Uma visão atual e futura da programação criativa

Os agradecimentos finais aos participantes do PCD21 no Zoom

Na passada quinta-feira 11 de fevereiro decorreu —ou devo dizer terminou?— a 3.ª edição do Processing Community Day @ Porto. Foi um evento organizado no âmbito das licenciaturas de arte e de design da FBAUP e que juntou mais duzentas pessoas online em torno da programação criativa.

É um evento que temos vindo a realizar, mas que, este ano, cresceu bastante. Talvez devido à rede que estamos a fazer com o PCD de Coimbra e de Lisboa?

As atividades começaram cedo com uma chamada de trabalhos para uma exposição online. Seguiram-se quatro workshops de aquecimento (que esgotaram as vagas rapidamente). E, finalmente, a conferência principal. Esta contou com Karsten (Toxi) Schmidt como orador principal, quatro artist talks de Tim Rodenbröker, Alina Ling, Rodrigo Carvalho e Joanna Zylinska e uma webperfomance final de Nicolau Centola. TL;DR: aqui ficam os pontos principais na excelente nota de imprensa da Inês Capelo.

Nas diferentes atividades estiveram presentes 288 participantes únicos (e um troll a fazer-se passar por uma IA) a ligarem-se a partir de mais de 20 países. Entre eles, Portugal, Brasil, Espanha, Reino Unido, França, Estados Unidos da América, Austria, Alemanha, Noruega, Singapura, Grécia, Turquia, Líbano, México, Austrália (!!!), Uruguai, Indonésia, Israel, China e Japão.

Foi verdadeiramente espetacular e inspirador ao mesmo tempo. Uma lição de generosidade e de partilha que esta comunidade tem para oferecer.

O alcance orgânico da divulgação este ano estava… estranhamente bom!

Desde cedo que percebemos que esta edição ia ser diferente. Não sei bem a que se deveu exatamente. Talvez uma mistura de fatores. Entre a aposta em fazer rede no Instagram e no Facebook, a promoção exclusiva em inglês —esta sim, fez muita diferença!—, e a dedicação da Camila na divulgação da chamada para a exposição? Não foi claro o que funcionou melhor. Mas a verdade é que funcionou muito bem.

Camila Mangueira —a curadora da exposição— a apresentar os trabalhos

De tal forma que acabámos por receber mais de 70 submissões, de 66 autores únicos de 22 países diferentes (Bélgica, Brasil, Bulgária, Canadá, Chile, Egipto, França, Alemanha, China, Índia, Israel, Coreia, México, Holanda, Polónia, Portugal, Rússia, Singapura, Suíça, Taiwan, Reino Unido, EUA).

Gesture Interactive Interfaces

As propostas que nos chegaram foram muito variadas. Tivemos trabalhos de estudantes nossos —como o da Mariana Simões (que me enche de orgulho especialmente porque foi feito entre o ano em que a apanhei entre LSI e este ano que a apanhei em WDII. Fiquei muito impressionado. Depois deste semestre, não devia. Mas fiquei! De alumni e estudantes internacionais como o do Júnior Morimoto que aplicou o processo na realização de uma ferramenta <=> output em design gráfico.

Brutalist Web Pages de José Rebelo, Sérgio Rebelo and Artur Rebelo

Outros de estudantes de doutoramento e investigadores colegas e amigos do CDV Lab — que estiveram na FBAUP no ano passado!

Visitem a exposição total

Mas, muito mais interessante foi ver as submissões que chegaram de todo o mundo. Artistas conhecidos. Professores. Autores. Profissionais… enfim. Foi espetacular ver que a maior parte das submissões que nos chegou, estavam de alguma forma enquadradas com a chamada — Future Vision.

As propostas abrangeram tecnologias simples como abordagens procedimentais para manipular gráficos, visão por computador, gráficos 3D sintetizados ou gerados, deep faking, impressões 3D, fotogrametria, estereoscopia, síntese de áudio, etc. A quantidade de tecnologias, meios e plataformas que foram apresentados é verdadeiramente espetacular (Karsten abordou isto na sua keynote).

Durante o dia, quatro artistas puderam apresentar e explicar melhor as suas abordagens de reflexão, investigação e desenvolvimento. Quer no desenho de soluções de educação sobre programação criativa como Tim Rodenbröker. Ou sobre a exploração háptica e artística de Alina Ling. Da visão sobre a realidade (invisível) que nos rodeia e que a tecnologia e o design nos permite observar sob outro ponto de vista e (re)descobrir a beleza do mundo natural como o fez Rodrigo Carvalho. Ou ainda sobre a possibilidade especulativa que a tecnologia como as GANs nos permitem fazer sobre a própria noção de arte e criação como Joanna Zylinska nos apresentou.

Sei que isto é uma redução extrema das artist talks, mas, nada melhor do que ver a exposição e ler os textos incluídos para ter uma noção mais completa.

Miguel Carvalhais ainda provocou os convidados procurando respostas mais profundas. Como sobre o “preconceito” da inteligência artificial e se é possível vermo-nos totalmente livre dele.

Tim e Alina ainda foram desafiados a questionar as plataformas e ferramentas. Tim reconheceu o valor do Processing, mas mostrou ser “agnóstico” em relação à plataforma computacional (preferindo modelos abertos e open source).

Alina prontamente mostrou estar em linha com um dos tópicos recorrentes —a necessidade de conhecer várias e escolher a mais apropriada para o desafio. A lista de ferramentas começou logo a ser despejada no chat… e acaba por ser sempre uma decisão complicada. Mas é um tópico que mantenho debaixo de olho há já alguns anos. A discussão preparava para se alongar, mas a hora não deixou. Ficaram os links e a exposição para continuar a explorar!

Os workshops de aquecimento também foram uma estratégia de tentar promover a conferência. Por um lado, desenhamos as atividades em bite-sized chunks para ser menos violento para todos —afinal de contas, quem é que ainda não está farto de estar à frente de uma reunião Zoom?

Isto foi uma aprendizagem que retirámos logo nos primeiros meses da quarentena e que aplicámos na conferência Diálogos em setembro de 2020. Por outro lado, este modelo de warm-up workshops tem funcionado muito bem para manter o interesse e a divulgação do evento — uma aprendizagem que temos vindo a fazer com os Encontros de Tipografia.

Mas, voltando aos workshops. Quando planeámos a conferência, havia várias propostas na mesa. Acabámos por fazer uma chamada/convidar colegas, amigos, alumni a lecionar pequenos workshops. Admito que me custa cravar coisas… mas desta vez foi brutal! Porque me custou pedir, por exemplo à Vânia, para fazer (mais!) uma borla. Mas acima de tudo porque TODOS (sem exceção!) aceitaram de imediato sem fazer grandes perguntas —à medida que escrevo estas palavras ainda fico arrepiado! A resposta e a generosidade de todos foi espetacular.

Optámos por fazer as inscrições no Eventbrite. Pensava que o próprio canal iria trazer novos visitantes (meh… a taxa de descoberta foi cerca de 5%), mas também o tempo de divulgação não permitiu. Os workshops esgotaram quase sem exceção em menos de uma semana. Porque eram gratuitos, estava à espera de uma taxa de conversão em cerca de 25% das inscrições. Mas, novamente, a adesão foi muito boa com a comparência de mais de 50% dos participantes inscritos a todos os workshops. Alguns participantes chegaram mesmo a participar em dois ou três workshops diferentes. Muitas vezes, só para estar lá e dar um apoio.

O primeiro workshop foi dividido em dois dias.

The goal of this workshop is to introduce participants to creative coding with the p5.js Javascript library. This is a two-day beginner-level workshop. Participants will be guided through the first steps of computer programming.

More information about the workshop program, instructors and registration on EventBrite.

https://pcd.fba.up.pt/2021/#workshops
Resultados do PPp5.js: Procedural Pattern Programming workshop

Foi uma introdução mais ou menos acelerada do que costumo fazer nas primeiras aulas de LSI. Mas, desta feita, diretamente em p5.js. Introduzimos o conceito e abordagem dos Truchet Tiles, mostrei trabalho de António Quadros Ferreira —como já o fizemos nas atividades do projeto Wisdom Transfer—, e o meu favorito, os azulejos da Maria Keil. E ainda deu para falar de alguns designers e amigos! ;)

No final, apareceram algumas formas e desvios interessantes. O tempo foi curto e apenas dois ou três participante fizeram o trabalho de casa de um dia para o outro. Mas acho que foi bom.

O segundo workshop foi conduzido pela nossa alumni do MDGPE — a Vânia Oliveira. Que começou por apresentar o seu projeto de mestrado (a ferramenta online pode ser experimentada aqui), antes de prototipar com os participantes uma versão OOP mais simples. A participação, energia e interação com os participantes foi fantástica. Não era um workshop para noobs. Mas estiveram todos à altura. Foi uma surpresa, mais tarde, na apresentação dos resultados, ver o que os participantes fizeram com o código!

The goal of this workshop is to develop a software interface to generate animated posters with iterated text using the p5.js Javascript library. This is an intermediate-level workshop. Participants will be guided in the development of a prototype of online software that allows the user to create animated typographic posters. In this workshop, we will be focusing on using an Object-Oriented Programming (OOP) approach to structure the algorithm.

More information about the workshop program, instructors and registration on EventBrite.

https://pcd.fba.up.pt/2021/#workshops

O terceiro workshop foi uma contribuição generosa oferecida pelos nossos irmãos do outro lado do oceano. Alexandre B A Villares, professor e investigador, introduziu-nos ao Python.

The goal of this workshop is to introduce participants to creative coding with the Processing Python mode variant (py.processing.org)

Processing is an ecosystem of tools and ideas for creative coding, with a focus on making coding accessible and inclusive for artists, designers, educators, beginners… Processing Python mode adds to it the friendly Python syntax.

Support materials available at: https://abav.lugaralgum.com/material-aulas/

More information about the workshop program, instructors and registration on EventBrite

https://pcd.fba.up.pt/2021/#workshops

A abordagem de Alexandre é refrescante e generosa, na perspetiva em que ele mantém todas as suas notas e documentos abertos online.

O próprio workshop correu com o suporte de um Etherpad que ele montou para partilhar recursos, código e resultados entre os participantes. Foi muito fixe estarmos todos a debitar no mesmo documento (acho que nunca tinha editado um ficheiro de texto com tanta gente ao mesmo tempo)

Debitou e partilhou com todos uma quantidade enorme de recursos que partilha no seu site. Desde tabelas de comparação de ferramentas a tutoriais a exemplos de código. Os participantes que, apesar dos diferentes fusos horários e línguas, envolveram-se de forma completamente de dedicada com perguntas, sugestões e partilha de resultados.

Por fim, e não menos importante, Iván Huelves e Lourdes Marco, uma dupla de designers da Escola Superior de Design de Madrid que conheci na conferência Digicom de 2019 (creio) dirigiram um workshop que muito apreciei (mas que não consegui terminar!).

Capa da apresentação do projeto e workshop

Consistiu numa introdução à manipulação de interfaces com computação física e fontes variáveis. Este é um projeto espetacular que gostava de trazer (em pessoa) à FBAUP assim que pudermos: https://sensorvariablefont.com/

Cities are rapidly evolving towards the so-called Smart cities, where the Internet of Things (IoT) and the hyperconnectivity of citizens are creating new coexistence and interaction paradigms. The experiences with the interfaces can become much more meaningful due to the use of variable fonts, whose potential lies in turning typography into something alive, capable of adapting to the environment around it.

The goal of this workshop is to introduce participants to improve the user experience of graphical interfaces by creating a semantic relationship between typography and data collected by sensors.

This is a one-day beginner-level workshop. Participants will be introduced to the new font technology variable fonts, to connect sensors to the open-source board Arduino and learn the tools to synchronize the data and the typeface through HTML, CSS, and Js.

You can get more info about the project at www.sensorvariablefont.com

More information about the workshop program, instructors and registration on EventBrite.

Este workshop sintetiza uma grande parte dos meus interesses. Isto porque manipula interfaces digitais, utilizando variable fonts (implementadas em páginas web com Javascript). Mas que são ligados à realidade através de uma interface física com Arduino (através de uma API em Node.js).

Multitasking caos…

O setup foi um bocado pesadelo. E, por momentos, pensei que tinha torrado a minha webcam a ligar o Arduino. Mas correu tudo bem. E foi inacreditável quando a Marie começou a mostrar a manipulação da animação de uma Color Font com os sensores. No final a minha secretaria (física) e o desktop do meu computador estavam um caos absoluto!

E isto encerra as contribuições dos workshops. Pelas salas do PCD @ Porto já passaram Processing (vanilla), Fisica (biblioteca de processing), Max-MSP e Jitter, p5.js, Python e agora também um pouco de Arduino com HTML, CSS, JS e OTVar.

Gráfico do “ecossistema” do Processing e tecnologias e meios que considero importantes para um designer computacional / creative coder em 2021. Para mim, a direção “correta” é na diagonal para a direita passando por Javascript e indo em direção ao server-side. Estas vão ser a comptetências de literacia e design computacional de 2050.

Para mim, é importante refletir o que isto oferece e o que ainda podemos oferecer e explorar juntamente com os participantes destas e de futuras conferências. Parece ter sido um tema abordado de forma recorrente durante a conferência. Especialmente pelo Karsten Schmidt. É (cada vez mais) importante desenvolver uma literacia (de design) computacional. E, no processo não podemos ficar parados numa tecnologia. Estes workshops foram, para mim, uma boa etapa neste percurso. E espero que, para o ano, consigamos fazer mais e diferentes! Será que vai ser desta que aprendo Touch Designer? ;)

Bumper da emissão enquanto aguardávamos pela conferência principal. Design por Joana Carneiro / i2ADS

Por fim, a conferência do “grande homem”, o orador convidado e “computational polyglot” Karsten Schmidt: “one of the top 1% of computational designers in the world today”

André Rangel a apresentar o orador principal

The night before the [One Dot Zero 2009] festival opening (…) four video projectors were being tuned for the large scale outdoor projection of Karsten’s work. [Then] I understood how big these men was. How big this men is…

Após a introdução de André Rangel, Karsten iniciou a conferência explicando a sua relação com o aparecimento do Processing. Voltando às raízes da introdução das linguagens de programação e às suas influencias como J.T. Nimoy.

Na altura em que se conheceram, ele estava envolvido com a programação de plataformas web e aplicações sonoras [do projeto Droppings? > vou ter que redescobrir este para o segundo projeto de LSI].

Mas ele regressa às origens mostrando o seu percurso com as linguagens de programação, realçando a importância de aprender conceitos, manter a curiosidade e… revelando que tem sempre trabalho num sistema “open-source”.

Ufff!… isto faz-me voltar ao 4.º ano da faculdade… ;)

O percurso dele foi ligeiramente diferente, porque aprendeu a programar inicialmente em linguagens imperativas. Mas, quando apareceram o Director e o Flash, a metáfora teatral/cinematográfica de ter um palco e atores em cena foi refrescante.

Ele assistiu e contribuiu para o desenvolvimento da plataforma inicial do Processing — ajudando no desenvolvimento dos objetos gráficos do “bagel”, o motor de rendering do Processing. Mas ao longo do tempo, revelou Karsten desde logo, a abordagem do Processing, apesar de correta na altura, acabou por ficar datada. E não devemos ficar “presos” a apenas uma solução. Como ele mostrou logo desde início, ele foi evoluindo e atualmente usa outro paradigma de linguagens, como a a abordagem literal do LISP/Clojure.

Mas, revisitou o seu portfólio a a sua “origem” na “demo scene” em que ele desenho e pixelizou à mão logótipos e animações em 4 cores. Luxo! Até mesmo um motor 3D de raíz. Hoje em dia, as plataformas como o Processing fazem isto por nós —eu ainda programei um em director no último ano da faculdade! ;)

O percurso entre as atividades artísticas e profissionais acabaram por permitir que explorasse diferentes realidades como trabalhar na produção do Lemmings.

Mais tarde, após um intervalo na sua vida profissional, voltou à programação com Director e com os motores 3D do Shockwave. Na agência onde trabalhava começou a trabalhar em stream de experiências em tempo real. Especificamente em mundos virtuais e comunidades online como a campanha de marketing do E-Cyas. Creio que ele estava aqui a tentar fechar o ciclo do primeiro ponto inicial —que o conhecimento que adquiriu e a tecnologia permitiram-lhe implementar as primeiras soluções virtuais integrais.

O percurso com o Macromedia Director permitiu-lhe continuar a explorar soluções 3D cada vez mais especulativas e generativas. Já na altura trabalhava em projetos que implementavam sistemas de particulas que criava de raiz. Até porque como afirmou—um dos principais take aways da conferência—, é importante reinventar as soluções conhecidas. Isto porque é importante aprender através da prática.

Macronaut, um dos sistemas generativos em tempo real: http://toxi.co.uk/macronaut/
Pormenor das primeiras implementações do “bagel”: o motor de rendering de primitivas gráficas do Processing original

Entretanto, o Processing aparece. Ele envolve-se com a comunidade e ajuda a desenvolver o motor de render. Mas também acabou por desenvolver as ToxicLibs.

Um dos aspetos que foi sempre deixando claro é que o sucesso o Processing deveu-se não só à sua diferença em maior objetividade na criação de algoritmos (muito diferente do AS2 ou do Lingo vigentes na altura), mas também devido à capacidade de colaboração e criação de uma comunidade.

Na conferência, Karsten mostrou uma imagem ainda mais antigo (?) do sit do Processing. Esta foi retirada do Archive.org e é de Março de 2004. Em 2005 o Toxi já figurava no Exhibition official com o projeto Base26. Tenho ideia que comecei a experimentar com o Processing mais ou menos nesta altura. Entre esta versão 069 e a 090?…
Perlin note hair strands experiment. (Robert Hodgin?)

Karsten continua a mostrar a evolução das capacidades gráficas da tecnologia. Desta feita, mostra as experiências com o Perlin Noise para simular pelos, feito pelo Robert Hodgin. Creio que Karsten trouxe este tipo de trabalhos e referências, porque, como disse, para ele era importante explorar possibilidades técnicas e concetuais. Nestas, apareciam muitas vezes as oportunidades de produzir ou aplicar em trabalhos pessoais ou comissionados.

Tal como aconteceu com o trabalho para a Nokia que desenvolveu com a agência Moving Brands—”talvez o primeiro trabalho de design profissional aplicado/impresso feito com Processing”.

Daqui passou para explicar que o Processing foi muito importante neste período na vida dele. E explicou da mesma forma como o compreendo para mim e explico aos estudantes.

O “core” do Processing (ou do valor de uma ferramenta de design) é a capacidade de pegar num input => aplicar-lhe um processo => obter um output (que eventualmente pode ser devolvido ou aplicado de novo no processo de design).

O Processing foi relativamente revolucionário na altura (~2004) pois foi talvez a primeira plataforma acessível em que era possível aplicar este processo (partindo de um input estático, ou dinâmico) de virtualmente qualquer meio, processa-lo com código e exportar para quase qualquer outro meio. Com a vantagem que no processo podemos ter uma solução interativa e os resultados não ficam “presos” dentro de uma arquitetura proprietária como o Flash, ou Director.

Este foi um segundo take away que foi realçado pelo Karsten. Às vezes esta área e as pessoas que desenvolvem soluções ficam “presas” às ferramentas. Quase como uma questão “tribal” em que o preconceito nos impede de validar ou sequer interagir com pessoas que usam outras plataformas ou linguagens (onde é que eu já vi isto?…)

Neste sentido, é importante explorar outras realidades, linguagens, plataformas. Para desenvolver uma literacia computacional. Para formarmos designers com literacia programática.

Neste argumento final, Karsten reconheceu a importância histórica e atual do Processing —”it’s a mature tool”. Mas, é uma ferramenta que utiliza uma lógica imperativa com mais de 20 anos. Atingiu a maturidade. Ainda é uma (a melhor?) platforma para começar a programar —até porque nas perguntas pareceu ter agluma dificuldade em identificar uma mais simples, ou melhor para designers começarem a programar—, mas o argumento que apresentou é que há outras. Não devemos deixar que esta lógica “void setup & void draw” ocluda outras soluções que podem ser melhores para diferentes designers ou para diferentes trabalhos. É bom e é interessante podermos ultrapassar [outgrow] as tecnologias. É um processo normal e saudável. O que não é saudável é ficar preso ao passado como algumas pessoas ficam.

Terminando, mostrou um pouco do processo e código que desenvolve atualmente em Clojure/LISP. Mostrando que esta linguagem literal é muito mais elegante e nos permite (ensina) a pensar no código e nos dados de forma totalmente diferente e mais flexível: data is code; and code is data.

Esta última afirmação é, como diria o Rangel, muito grande! Isto é, creio que foi intencional, pois parece-me que é um call-to-action para nos fazer pensar em que mais podemos aplicar esta lógica para além da programação criativa.

As perguntas e respostas abordaram mais uma série de tópicos excelentes, como a inteligência artificial e a documentação e acesso aos [nossos próprios] arquivos digitais. Este, por si só, é um tópico que daria uma outra conferência de igual duração! Mas este post já vai longo e acho que os principais pontos da conferência ficaram aqui registados.

Novamente. Foi um evento espetacular e acho que vai reverberar na minha prática e atividade letiva por alguns anos!

Como nota final, queria só deixar a nota que vêm aí o Processing Community Day de Tokyo e de Processing Community Day de São Paulo! Por isso, manter os olhos e as redes sociais atentas!

P.S.: Ainda um par de links que ficaram perdidos. Sobre a conversa de linguagens, ainda ontem ouvia um podcast sobre programação e programação criativa e —coincidência das coincidências— os entrevistados falavam sobre a popularidade crescente de linguagens como o Clojure. Arrebitei a orelha. Não demorou muito para perceber que é uma linguagem/sistema complicado. Afirmaram mesmo ter demorado 6 meses até entrar na linguagem e editores de codigo como o Emacs que agilizam isto. Não digo que seja complexo, mas a sensação que tive quando vi os scripts que ele excuta com shaders GLSL no thing fiquei super excitado —mas o código pareceu-me completamente codegolf! E isto foi o paradoxo da conferência. Percebo e subscrevo o argumento de Karsten. Mas, para podermos avançar para a frente (para eu poder avançar para a frente para outras linguagens mais… er… elegantes como o Forth ou o Clojure que tiram partido desta relação mais plástica entre o que é o código e o que são os dados), ainda vou precisar de saber mais. De dedicar mais tempo e ganhar mais experiência em paradigmas de programação. Talvez se tivesse começado a programar mais cedo na vida, agora estivesse pronto. Mas sinto que antes de correr, preciso saber andar melhor.

Ainda assim, ele [e a Alina e a Joanna] avançou com algumas referências que estão no meu radar a curto prazo. Como o Typescript, como o RunwayML, como o Cables, o Nodes, ou o TouchDesigner. Tenho aqui isto tudo compilado por ordem de preferência! Se não retirar mais nada desta conferência, pelo menos levo um linguagem nova para aprender nas férias: o BrainfFuck!

Outros links e reels que ele mostrou e que valem a pena ver:

Alguns dos trabalhos dele estão aqui, bem como trabalhos de outra malta importante: https://nevolution.typepad.com/theories/2011/03/lovebytes-generative-systems.html

By Pedro Amado

Professor Auxiliar na Faculdade de Belas Artes Universidade do Porto a lecionar Design de Tipos de letra digitais (Variable Fonts), Tipografia, Introdução à programação em Web Design II (Javascript) e Creative Coding em Laboratório de Som e Imagem (Processing). Investigador integrado no i2ADS na intersecção da Arte, Design e Tecnologia.

1 comment

Leave a comment