WALLED GARDEN: WORKSHOP with ARDUINO & Social Theory

WALLED GARDEN
communities & networks post web2.0 - conference...transformed from usual VirtualPlatform.nl conference formats into a series of Workshops and Presentations...
With my late application, I was directed to workshop flwr pwr: Tending the Walled Garden, mentored by Matt Ratto (Scandinavian in Canada) - without knowing what it is about.

With my super RECENT interest in Open Hardware (due to planing of development of SlowCam installation) and especially in Arduino.cc(most recent inspiration came from Pad.ma presentations)...I was amazed with the speed of prototyping work one can achieve with basic know-how of open hardware. Matt's very interesting approach was also in using his knowledge in Arduino to test/practice social theory he was most interested. So with not taking hardware-setup/installation as goal/edn-result, but rather care about the process of creation and illustration of SOCIAL RELATIONS (check references from workshop description page) in tangible hardware form of CELLUAR AUTOMATA (consisting of programmed LED, irda receiver+transmiter and arduino board).

To understand better what I can describe check out what are patterns of behavior for our interacting hardware in the GiftEconomy, InfoCommons & InfoNeighborhood in the code section of our project written in ARDUINO Langugae!


// Specify the way to modify my pattern when I receive another pattern
void combinePats(int rcvdPattern)
{
//g_MyPattern ^= rcvdPattern; // bitwise XOR (~add) the patterns
return combinePats_GiftEconomy(rcvdPattern);
//return combinePats_InfoCommons(rcvdPattern);
//return combinePats_InfoNeighborhood(rcvdPattern);
} // combinePats()

void combinePats_GiftEconomy(int rcvdPattern)
{
g_MyPattern = rcvdPattern; // adopt the pattern you just received, no matter what
g_CurrentEnergyLevel += g_EnergyGainPerMsgAffectedBy;
} // combinePats_GiftEconomy()

void combinePats_InfoCommons(int rcvdPattern)
{
if(g_MyPattern != rcvdPattern)
{
g_MyPattern = rcvdPattern; // adopt the pattern you just received, unless you already hold it
g_CurrentEnergyLevel += g_EnergyGainPerMsgAffectedBy;
}
} // combinePats_InfoCommons()

// Only be affected by a pattern that I've not held in the last N changes.
void combinePats_InfoNeighborhood(int rcvdPattern)
{
static const int neighborhoodSize = 4;
static int lastOne = 0;
static int numPats = 0;
static int recentlySeen[neighborhoodSize];

int p = 0;
while(p < numPats && p < neighborhoodSize && recentlySeen[p++] != rcvdPattern);
if (p == neighborhoodSize || p == numPats) // if rcvdPattern not found in recent list
{
g_MyPattern = rcvdPattern;
g_CurrentEnergyLevel += g_EnergyGainPerMsgAffectedBy;
}

recentlySeen[lastOne++] = rcvdPattern;
lastOne %= neighborhoodSize; // wrap around
++numPats;
} // combinePats_InfoCommons()