Wet stones, leaves, sticks at Santa Barbara
A nice video showing the use of special connecting shapes / tiles which can be used to define an IoT style network of things.
The app. lets you photo the finished flow-diagram and turns it into code.
When we consider a language for programming with cameras we note that visual recognition has a great strength and great weakness.
- The weakness is that recognition gets harder as we need to accurately disambiguate and classify more things.
- The strength is that we have two-dimensions to play with.
Our first attempt at a language for this environment is QaSaC (an acronym for Queues and Stacks and Combinators, the elements from which QaSaC is made). QaSac is inspired by and combines elements of “data-flow” programming / languages, such as Pure Data. And stack-based “concatenative” languages such as Forth, and more specifically, Joy.
Both of these programming paradigms help us by reducing the number of names that need to be created and worked with.
Stack-based languages work with local data on an implicit stack. And data is refered to largely based on its “ordering” in the program and positioning on the stack, rather than with local names.
Data-flow languages organize their larger-scale structure in terms of nodes and the connections between them. In visual languages such as PD, no explicit names are given to these nodes, but instead, positioning and the visual arcs between the nodes, provides topological information.
A QaSaC program, then, is a flow-network of nodes, joined by asynchronous queues. Each node is a self-contained, small machine that reads data from its input queues, manipulates it using its local stack, and ultimately passes it on via its output queues.
A node’s program itself is writen in a language largely inspired by Joy.
The topology joining the nodes does have a textual representation, but is intended to be infered from images or created with a visual editor.
See the QaSaC GitHub repository for further details with a working QaSaC virtual machine / interpreter.
It contains an overview and rationale of the project with examples of early work-in-progress.
(Please excuse the formating, which is ugly but the required conference style. Some images and ideas will be republished on this blog in a more digestible, easy to link / access form.)
Some land-art inspiration by Andy Goldsworthy
Working with a serverless platform like OpenWhisk almost feels like practicing black magic.
Programming in Nature : Half Bret Victor. Half Blair Witch
From the introduction to The Structure and Interpretation of Computer Programs
We are about to study the idea of a computational process. Computational processes are abstract beings that inhabit computers. As they evolve, processes manipulate other abstract things called data. The evolution of a process is directed by a pattern of rules called a program. People create programs to direct processes. In effect, we conjure the spirits of the computer with our spells.
A computational process is indeed much like a sorcerer’s idea of a spirit. It cannot be seen or touched. It is not composed of matter at all. However, it is very real. It can perform intellectual work. It can answer questions. It can affect the world by disbursing money at a bank or by controlling a robot arm in a factory. The programs we use to conjure processes are like a sorcerer’s spells. They are carefully composed from symbolic expressions in arcane and esoteric programming languages that prescribe the tasks we want our processes to perform.
A computational process, in a correctly working computer, executes programs precisely and accurately. Thus, like the sorcerer’s apprentice, novice programmers must learn to understand and to anticipate the consequences of their conjuring. Even small errors (usually called bugs or glitches) in programs can have complex and unanticipated consequences.
Engaging the dynamic flows in nature to produce the words : “hello world”.
Find a place near an ants’ nest. Mix a small amount of sugar and water. Use a leaf or piece of grass as a quil.
Write “hello world” in sugar-water and attract the ants to cluster around it.