dataflow management


This is the introduction chapter of my latest paper presented at Nexus 2014 Conference, Ankara. The paper will be published in 2015 issue of Nexus Network Journal. Generative algorithms have been integrated to design in a sequential form where text-based scripting languages are accepted as mainstream tools. This approach to design scripting is originated to “control flow”, the dominating paradigm of programming languages. Methods of control flow eventually lead designers to seek for secondary syntactic mechanisms in order to control program states, such as iterations, branchings, and conditionals. Developing sequential executions […]


This is the 299th post on I decided to test and update (if necessary) all the Grasshopper codes and Rhinoceros files in the site. Below is the list and links to all files, tested with new versions of the associated software. You can right-click and save these files to your computer. Grasshopper components labeled with “OLD” are replaced with new ones, and definition files are updated to version 0.9.0072. Also these updates are noted in the mentioned blog post. Blog Post File Required software / plug-ins Emergent Polygons [GHX:0.9.0072] […]


In 30th eCAADe Conference, there was a very interesting paper by Gabriel Wurzer and Burak Pak, titled: “Lawnmower”, that explains a research on an educational tool. However, their survey tells us some of the fundamental issues of dataflow programming paradigm for designers. Here is a quote from them; …A further point not connected with the graphical representation is that of lacking comprehensibility of data flow (and therefore the call for step-by-step debugging). Data in Grasshopper is mostly exchanged via lists containing geometrical objects. These lists are used as a replacement for loops, in the following manner: […]


Nowadays I plan to enter Rhinoscript, Pyton and DesignScript back again. However, I can’t leave Grasshopper3D without mentioning the “cognitive shift” it pioneered in design computing community. Here is a phrase from famous special issue of “Computer” Journal, published in 1982 with Tilak Agerwala and Arvind’s editorials; Data flow languages form a subclass of the languages which are based primarily upon function application (i.e., applicative languages). By data flow language we mean any applicative language based entirely upon the notion of data flowing from one function entity to another or […]


In 1982, it has been more than 15 years since the dataflow approach to algorithm designing are discussed in computer science. Computer journal publishes a special issue with the foreword of Tilak Agerwala; he says; …We have discussed two characteristics of the von Neumann model of computation: global updatable memory and a single program counter. It will become clear shortly that the data flow model has neither of these. First, the data flow model deals only with values and not with names of value containers (i.e., addresses). This concept is also fundamental to purely functional or […]


Today, we’ve studied fundamentals of component-based design methods. Using curves and surfaces as starting points, we’ve experienced ways of translating those entities via design criteria based on our purposes. First, a curve is used to construct a leaf structure. We’ve experienced dispatching data lists and combining them back together. Subdividing curves into points created further entities such as vectors and planes. We used those entities as inputs of regular drawing and modeling commands such as rectangles, or planar surfaces. This in-class exercise can be studied here. Second exercise was the […]


Generating data lists and data trees in Grasshopper is one of the important aspects of Dataflow Computing in general. Also literally, utilizing above conception, a set of data could be organized to shape a tree. This homework was a part of Parametric Modeling course, technical tutorials phase. After this phase, students will prepare for their final projects. I hope these exercises would develop the necessary conception before getting more into the designerly way of computing. After introducing the basics of Grasshopper, students tried to create such shapes and underlying data […]


Today’s subject was closely related with the one last week; the data list and data tree management. Creating suitable data structures for our purposes is one of the tricky parts of whole Grasshopper experiments. We’ve developed a grid of objects, somehow associated with another one (a curve). Strong emphasis was on the way of thinking, getting back and forth on the process and re-definition of data-lists. Especially, this in-class exercise would help you understand basic design technique in such environments. Every design decision should be defined clearly and implemented to […]


Today, we’ve concentrated on the fundamental issue of any visual programming language; the dataflow management. In a most basic form of this conception; geometric modeling process can be derived in such a way that we can always go back in it’s history and change any input data to see the result. We use diagrams to represent a flow of data. Such diagrams could easily be created by representing the conscious sequence of each step of your geometric modeling process. Although it seems similar to regular control flow diagrams we create […]


Here are some basic references to Grasshopper’s handling of objects. As the most powerful and intuitive part of such Visual Programming Languages is the focus of dataflow, the critical part of it’s education lies at the fundamentals of data tree manipulations. Designers using these tools should understand and predict the type of data trees his/her parametric model would process. Here is the Grasshopper document including these components; [2012_01_10-adding streams] We’ll start with basic and the most important ones; Data tree conversion right on the input and output gates of any component. […]


Since the “Sine Surface” has become vey popular, it’s best used in educational settings where quick and effective parametric surfaces are needed. However, I tried to further develop this idea to create not only the sine edge surface, but also a surface that can be mapped by any graph function. The definition found here [2011_12_22_sine]does calculate points according to a graph output, but does not create edge surface yet. Here is an updated version of this project Update: Here is an updated version of this Grasshopper definition: [GHX: 0.9.0072]


Scripting languages have become one of the main environments of generative design since beginning of the new millenium. Also as a new research field, design researchers focused on the potentials of this medium. However this has caused a field dependency to computer programming, as scripting could not be conceptualized by design researchers independent from computer programming paradigms. This leads designers to conflicts of cognitive duality and potential pedagogical misleads. Recent studies in computer programming showed that procedural coding, based on the flow of control has a user friendly alternative. Since […]