Para o infinito e mais além!

Para aqueles que gostaram do Processing e querem explorar mais (há que ler mais sobre programação, claro).

Cobrimos os básicos do manual de bolso do Reas & Fry e que correspondem sensivelmente ao Learning Processing do Shiffman. Por isso, está na altura de passar para o segundo livro/curso do Shiffman — o Nature of Code — onde se exploram simulações naturais e agentes/comportamentos complexos.

Para outros temas menos explorados (como o 3D) ou como os Vector / Flow Fields, podem sempre continuar a explorar a secção de tutoriais do Processing.org.

E, para aqueles que não gostaram do Processing/LSI, mas que acham que esta área da multimédia interativa é interessante e que querem continuar, sugiro o seguinte percurso de exploração outras áreas/softwares como:

1. Modo p5.js do Processing

Será que vamos usar este ano? — Sim! o ano de 2021 vai ser o primeiro ano em que vamos usar “oficialmente” p5.js em LSI. (já usámos em WDII em 2020 logo após ter atingido o estado “1.0”). Para aqueles (que espero que sejam todos!) que esperam fazer Webdesign, este modo é muito fácil de integrar com o HTML5 Canvas e fazer animações ou mini-aplicações interativas em páginas web (ou mesmo para portar os vossos sketches para um portfólio online). É também uma excelente base de aprendizagem de Javascript (e quem sabe mais tarde aprender um pouco de PHP) (RGBT, que dizem?)

2. Javascript

Para quem já sabe um pouco de Webdesign (HTML & CSS), aprender Javascript (já não custa)… a lógica já foi abordada, agora “basta” aprender o console.log() e o getElementByID() e já está 😉 (para quem vai seguir Webdesign e especialmente quem pretende Webdesign II). Quem aprender P5, ou Javascript, pode sempre tirar partido de bibliotecas como jQuery e de ferramentas de visualização como o D3, Vis, o Paper.js (!!!), ou o Three.js para webdesign, real, interativo. (ou, quem sabe, integrar o VVVV.js). No final de LSI19, o Cristiano partilhou comigo o ZDog, uma biblioteca de renderização de objetos 3D com um flat [cell] renderer: http://s.muz.li/MGY3ZGZjZmQx . Sem palavras para descrever. Simples. Top! 😉

3. Basil.js: http://basiljs.ch

Bom, este vai ser o meu trabalho de casa destas férias — isto é basicamente o Processing a correr dentro do InDesign!!! Para quem gostou da disciplina, mas o Design Editorial é a sua área favorita, esta é a solução ideal (espero para o próximo ano trazer cá o Pedro Neves para nos falar um pouco sobre a experiência dele. Mas, até lá … ) Foi e está continuamente a ser desenvolvido na Academy of Art and Design de Basel… é preciso dizer mais alguma coisa?

4. DrawBot: http://www.drawbot.com/

Só existe para Mac. Isto é uma alternativa muito interessante ao Processing. Na minha opinião não é tão poderoso/versátil, mas foi feito a pensar nos designers gráficos, editoriais e tipográficos. A base é Python (a terceira linguagem que recomendo aprenderem—útil em Audio, 3D, Type Design, Webdesign pois muitos programas são extensíveis com scripts de Python, e também corre online com alguns truques). Foi feito pelo van Rossum, Blokland e Berlaen (pelos type nerds!) e é usado extensivamente no Mestrado de TypeMedia de Haia. Acho que é difícil uma ferramenta ser mais recomendada do que esta…

5. Arduino e Wiring : https://www.arduino.cc/

Coloquei o Arduino em último, porque, para um designer gráfico, não me parece tão pertinente. No entanto, estou cada vez mais convencido que “fazer” coisas é importante. Neste sentido, num contexto mais de “makers”, para quem quer fazer instalações ou trabalhar em computação física (máquinas de desenho, sensores físicos que reagem ao ambiente,…). Não é muito a minha praia, mas esta ferramenta é ideal para quem quer agora ligar o computador “à realidade física” diretamente sem portas USB ou OSC à mistura. Impressoras, braços, controladores e atuadores. Foi desenvolvida a partir do Processing para ligar a controladores (tipografia holográfica, este é para vocês!). Também há um mash-up mais fácil de aprender (?) entre o Scratch e o Arduino chamado de Ardublock. Um outro editor (visual) é o Embrio… nunca usei… aliás, tudo o que é físico/eletricidade, para mim, é magia! ;P

Alternativamente, sem uma ordem de preferência muito definida, há muitas outras. Já escrevi sobre isto há muito, muito tempo atrás no meu blog: https://pedamado.wordpress.com/2010/12/01/as2-python-p5-as3-java-ou-c/. E o panorama atual (2021) —apesar de existirem algumas novas adições— não está muito diferente.

  • NodeBox: outra abordagem, mais visual, mais interativa para programar. é interessante pois ajuda a aprender a usar os node compositors (como o do Blender). Em ultima análise é divertido. Como alternativa (em Python) podem sempre usar o ShoeBot (recomendado há muito tempo atrás pelo Ricardo Lafuente)
  • OpenFrameworks (o “irmão” C++ mais poderoso do Processing, desenvolvido pelo Zach Lieberman. Um pouco mais complicado de começar a usar, mas igualmente fácil depois de aprender, e mais robusto). Depois do Processing, do p5.js e JavaScript este é o software e linguagem que recomendo aprender!
  • Derivative Touch Designer (para VJ, Video, Animation). Ainda não usei, mas têm montes de módulos para manipulação de gráficos em tempo real. Parece promissor. Gratuito para fins não-comerciais. Tenho mesmo que usar um dia destes.
  • Nodes. Novamente, ainda não usei… parece-me o casamento do NodeBox com o PureData implementado em JavaScript. Se tivesse que escolher um software de programação visual talvez apostasse neste. Ah… e corre no browser também… O problema de qualquer um destes é que, apesar da extensa documentação existente, não têm um “Shiffman” com um canal de tutoriais super-simples, ou manuais amigáveis para designers… E apesar da grande vantagem do Nodes ser a base Javascript, esta também é a grande ameaça. Para compreender o Nodes parece-me indispensável aprender JS… o que não é mau —muito pelo contrário—, mas é mais uma coisa para aprender. Por outro lado, é possível programar em p5.js e em three.js ou noutro módulo e incluí-los no Nodes!
  • OpenRNDR. Tenho vindo a ouvir (ver online) bastantes referências a esta ferramenta. parece ter sido desenvolvida “in-house” (à semelhança de outras como o Cinder) para responder a necessidades específicas de um estúdio de design digital. Os trabalhos em portfólio são muito impressionantes. E apresentam já um conjunto de recursos, tutoriais e uma pequena comunidade interessante para explorar. O software assenta em Kotlin (Java) e por isso, parece ser tão ou mais robusto que Processing para tempo real, mas menos amigável para começar a programar.
  • Scratch: Há duas semanas atrás programei pela primeira vez com Scratch. Apesar de ser uma ferramenta pedagógica para estudantes do ensino básico e secundário, fiquei impressionado com as capacidades e lógica de programação. Foi mesmo possível fazer um mini-jogo interativo com a Maria. Se uma criança de 8 anos percebe… Ainda assim, corre na web, é possível fazer share & embed. Tem potencial! 😉

Esta não é bem uma linguagem, mas está na minha bucket list

  • RunwayML: É uma plataforma acessível para começar a experimentar com algoritmos machine/deep learning. O Shiffman tem uma série de vídeos dedicados à coisa. Creio que dá para desenhar aplicações que usam a (nossa) API do RunwayML, mas… a ver…

Faz parte do Javascript e… começa a ir um pouco para o lado do backend (que é como quem diz, o gheto dos engenheiros, mas…)

  • Typescript. Na realidade isto é uma extensão natural do JS. O meu interesse nisto é a possibilidade de compilar aplicações (móveis) ou PWAs no futuro. Imagino que seja mais leve/ágil do que usar o Electron (que é outra coisa para aprender nas férias de 2021… acho que vou precisar de 6 meses de férias para isto tudo!)
  • Node.js. Isto na realidade é para ter uma maio noção e conseguir programar aplicações [web] “persistentes” do lado do servidor. O meu interesse e recomendação no Node é poder interagir com aplicações web e computação física como fizemos no workshop Sensor Variable Font). Outro benefício colateral é poder explorar melhor os sites/plataformas como o HerokuApp ou o Glitch.com

Voltando às ferramentas e linguagens de programação para designers

  • PureData ou Max/MSP: semelhante ao NodeBox é uma forma interessante de aprender a programar visualmente (adequado especialmente para áudio e vídeo em tempo real). Para quem tem os bolsos largos, podem sempre usar o “user-friendly” Isadora 😉
  • Cables*, Tooll*, VVVV e o VVVV.js. Ambientes de visual programming & node editors (ThreeNodes.js, Fnk, Vuo, …). * Como sugerido pelo Prof. Pedro Cardoso
  • Fugio. A experimentar…
  • Cinder. Bom… este é ainda mais complicado do que o OF… mas, para quem quer mesmo trabalhar com código, 3D e shaders em tempo real, talvez valha a pena experimentar
  • E, por fim (senão nunca mais acabo este post), o Adobe Animate. Bem sei que o Flash morreu, mas não descartem já esta ferramenta. Além de ser uma ferramenta poderosa de animação (até há bem pouco tempo era a ferramenta de eleição da CN e da Nickelodeon) é possível fazer protótipos funcionais (interativos!) com AS3 dentro do Animate. Não perdem nada em experimentar (nem que seja enquanto o vosso computador está parado a fazer renders de AE…)
  • Clojure: Na conferência do Karsten Schmidt ele recomendou o Clojure. Mas… eu sei que ando sempre a pregar a competências/literacial computacional. Mas é necessário descer ao terminal e instalar. Depois escolher um IDE… ufff… só de ler as instruções fico cansado. Isto é também um dos aspetos que achei complicado quando apresentou o projeto/plataforma Thi.ng. Acho que a energia e dedicação iniciais necessárias para usar são muito exigentes. Creio que é para pessoas que já estão noutro nível. Uma curva de aprendizagem e utilização que o IDE e linguagem do processing tornaram mais simples. Longa vida ao Processing! 😉
  • Só pela piada, quem diz Clojure, também pode dizer BrainFuck. Agora, só preciso de encontrar um IDE/editor/compilador!

E pronto. Desejo-vos umas ótimas férias (vemo-nos no regresso). No entretanto: https://hackingforartists.com/

Este artigo é —e será por muito tempo!— um documento em construção e permanente atualização. Editado e atualizado em 2019-04-29, 2020-05-18, 2021-03-08.