A series of Quil sketches re-implementing the Processing examples and techniques presented in Generative Design, a wonderful book by Hartmut Bohnacker, Benedikt Groß, Julia Laub, & Claudius Lazzeroni.
I'm working through some of the examples, re-implementing them in Clojure, trying to apply a functional approach rather than the imperative one they (very successfully) deploy. The first step in doing this is to use the Quil environment, a Clojure wrapper over Processing (and a Clojurescript wrapper over processing.js, the javascript implementation). Quil offers a 'fun-mode' approach where shared state is threaded & updated through the setup, draw, and event-handler functions, meaning you can keep the functions themselves pure.
I'm presenting these examples at a Clojure meetup, so to facilitate that the files are arranged slightly differently than you might expect. Most sketches are found in namespaces named after the section of the Generative Design book they're drawn from; e.g. colloquial.p121 refers to section P.1.2.1 of the text.
Some namespaces have an imperative version followed by a functional version, for my interpretation of 'functional' - I'm sure these could be improved, suggestions/pull-requests welcome!
To run the examples, there are two simple steps:
- load the colloquial.core namespace at the REPL
- The core namespace has a series of
(comment ...)
commands for each section and implementation; send the line to the repl to launch that example.
Copyright © 2016-2023 Oliver Mooney, and the original authors.
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.