The Social Dynamics of Programming Together in Dynamicland
dynamicland.org
dynamicland.org
> "Each one of these was made by a different person at a different time, yet Bret was able to combine them without making a single code change, he just placed them next to each other."
What exactly are they programming? Writing that face from scratch would take a LOT of code. Or is it like a high level framework they are all using which combines visuals together? The idea seems very fun, wholesome, and educational. However, they do not explain what is actually happening from a programmer point of view.
People write the bits of code, print them out on paper, with barcodes included that encode the contents of the program for the cameras to be able to see. Each program, then, specifies directives for its own behavior with "anything else" that wants to interact with it.
For example, one program might specify a "wish" to have a number n as input, and then it would produce as output a drawing with a flower that has n petals. Any program that provides a number (maybe by, say, asking the camera to see how many red blocks are on the table) can emit that number in a direction (the papers are oriented) and if you point it at the first program, the system connects the emitted number with the wish of the target program in the obvious way.
So it's like each program is its own independent agent with a really simple behavior, and when you combine a bunch you get some nice emergent system.
AFAIK currently the process of learning/writing the programs still happens on a laptop by yourself. I guess the picture of the young woman typing on a keyboard with the screen projected onto the table is a step beyond that.
In a sense, it's basically just a framework with a text editor that isn't based in an OS but instead a 2d surface that you interact with, using your hands and interacting in a more social medium than something like, say, git.
While those uses are certainly easy to see and imagine in Dynamicland, the mission statement for Dynamicland is to "incubate a humane dynamic medium whose full power is accessible to all people."
The researchers at Dynamicland take this mission statement quite seriously and are making a new medium. Like any medium, this one isn't explicitly limited to one kind of use.
https://www.amazon.com/Laboratory-Life-Construction-Scientif...
and Ed Hutchins' "Cognition in the Wild":
https://www.amazon.com/Cognition-Wild-Press-Edwin-Hutchins/d...
[1] http://discuss.tbd.cool/t/dynamicland/86/4
[2] http://vitor.io/on-dynamicland
[3] https://harc.ycr.org/project/realtalk/
[4] https://mobile.twitter.com/redblobgames/status/9072538029311...
> Like learning French by going to France, people in Dynamicland learn programming through immersion.
Imagine a meeting with designers where you bring a stack of pages representing neatly refactored code for the prototype as it is put together now, plus a bunch of extra code snippets of possible changes to make or things to explore.
I'm pretty sure that this could make certain types of brainstorming about what a product needs a lot more productive.
EDIT: And now for some trouble in paradise: if we envision this immersive computing environment of the future, what about people bringing malicious snippets of code into the building? imagine we have the ability to print, and to guide robots to disperse the printed text. A quine in dynamicland then becomes a virus, a fork-bomb.
I can't help but think that the paper metaphor, while convenient for immediate manipulation, is ultimately a really clumsy way to store programs, especially given that it is an artificial abstraction around an ordinary filesystem on a Dynamicland server somewhere.
I'm only angry because it's a good project.
In my talks with the researchers at Dynamicland, it's become clear the programming language is, well, dynamic. It's in flux and not what the main research is being done on.
At a high level, the focus at Dynamicland is on what a "humane dynamic medium" is and can be, which is slightly orthogonal to programming language design.
At a low level, the language used right now is a modified version of Lua, though I have seen GLSL and JavaScript used on some of the programs. The thing is, once you have enough programs, one tends to spend more time using the physical space to experiment rather than spending time in a text editor.