« Marco Susan's talk at Doors | Main | Advertising and Product Placement in Games »
December 14, 2002
Adaptive Design and modular code
Reading Dan's great ppt on Adaptive Design, I got thinking about some of the "gaps" that might be filled in current systems.
At Doors of Perception, we saw one or two ideas for user-programmable or user-configurable networks. One called "GadgetWorld" was made up of little single-purpose boxes with inputs and outputs; string them together and you get...well, it wasn't clear, but it would be some kind of lil' network that Does What You Want. By rigging them up, you "pipe" the output of one to the input of another, UNIX-style.
MoveableType fits a lot of Dan's requirements for Adaptive Design products in such lovely ways: it's "configurable" by setting a couple of parameters out of the box, but it's "customizable" through its templates and tags, and it's even "extensible" (and even "wreckable") through its open-source Perl code and plug-ins. Depending on my level of interest or ability, there's quite a range of Adaptability built-in to its componetized structure.
Mobile devices still don't seem to have any kind of user-programmable system; no MoveableType for your Nokia yet. What if we try to combine the flexibility of MT with the black-box modules of GadgetWorld as a way of programming simple apps for mobile devices?
A list of modular "blocks" might include:
- get current location
- get another device's current location (a "ping" of some kind)
- create a text message
- publish/write to a location ("tag" a location)
- get all the "tags" left at a location
- get the URLs of the devices near my device
- get the URLs of one or more devices in my address book
- publish/transmit to one or more devices (or anything "writable", like a blog)
- a "setInterval" function that runs a program as often as you like
Anyway, those are the kind of chunk-level blocks I could think of quickly. I'm sure this could be a much longer list. (Blocks for saving information locally, perhaps? Blocks for exposing personal data of different kinds? Blocks that help swarming "smart mobs" to form?)
Each of those could be thought of as a component to be "piped" to another one: if I link "get current location" to "create a text message" to "publish/transmit to one or more devices", I have a mobile text blog application. If I link "get current location" to "get all the 'tags' left at a location" to "'setInterval' running every five minutes", I have an updating "guide" to the areas I'm moving through.
You could express the last one like this:
setInterval(5) {
currLoc = getCurrentLocation();
taglist = getTagsAtLocation(currLoc);
display(taglist);
}
...but who wants to write scripts on their phone? I like the idea of simple "black box" components here. It's something like Authorware's old blocks-on-a-flowline approach to coding. If you could reduce the "programming" of a single block to what could fit on a single small screen, you might be able to make it work.
Ideally, you could add to your set of basic blocks as needed, maybe sound-control blocks for example. Programmers could create new ones, Sims furniture style, that you could add in.
Posted by Andrew at December 14, 2002 12:28 AM