Here's Bret mashing up "Exquisite Corpse" by May-Li Khoe, "eyes (with lids!)" by Kate Compton, and "Punch it, Chewie!" by Kai Chang.
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. (And yes, our walls are magnetic!)
Ad-hoc coupling is possible in Dynamicland because Realtalk — the communication protocol that allows dynamic objects to see and respond to each other — is designed for this flexibility.
Dynamic objects communicate by making claims about the world and reacting to the claims of objects around them.
For example, "Exquisite Corpse" just looks for an object that claims it is a "head" body part, and then it draws that object's image in the appropriate place on the exquisite corpse.
"Punch it, Chewie!" draws a starfield on whatever object it's pointing at.
Spatial referencing — coupling objects by pointing them at each other — lets people in Dynamicland quickly try out different ways of combining dynamic behavior.
This is what collaboration across time looks like in Dynamicland. Since we're a communal space, members are constantly exposed to the work of others. We learn new tricks by studying the small programs that others leave lying around.
Virginia has no prior programming experience but has started combining code she finds around the space into her own creations. Here's part of a birthday surprise she left me over winter break. Even our visiting ethnographer Goetz created a great spatial music game in Dynamicland (also no prior programming experience).
Like learning French by going to France, people in Dynamicland learn programming through immersion.
Things get even more exciting when multiple people are present together. Here are some scenes of a half-dozen people having a conversation about world development data using "Gapminder in the world", a data visualization project Josh is working on. Notice:
I like this moment. Josh is explaining to Tara how some code works and Tara casually refers back to some code they previously discussed. This can be so frustrating when pair programming on a screen: "Wait can you scroll back to where you defined that function..."
We've found that editing code on a table instead of a laptop screen moves the activity of programming from private space to shared space. This seems like a subtle change, but notice the lines of sight in this scene. Josh was on his way somewhere else (he had grabbed a project off the shelf!) when he stopped to have a conversation with Isadora. These casual interactions build shared knowledge within the community.
We got hints of what it might be like to do computing together three years ago making this Serengeti project using Hypercard in the World. At the time, our research lab was much more diffuse — everyone pretty much worked on their own projects.
One Friday, May-Li started cutting out cute animals out of construction paper. Unlike working behind a screen, when an activity is visible it attracts people. It's a lot easier to join in. Pretty soon everyone contributed an animal and sound to the diorama.
As the diorama was in a fairly public area — next to the kitchen — it attracted more creations in subsequent days, including laser painting by Glen, originally created because he wanted to draw a rainbow over the Serengeti.
If you've ever participated in a good craft table you've experienced this kind of creative energy: riffing, combining creations, taking someones scraps and reinterpreting them, and more generally laughing, making friends, and enjoying other people's company. Dynamicland has a broad mission but within that my own personal goal is to achieve this kind of group creative energy in a computing environment.