Sunday, November 13, 2011
The Clique Space(TM) Client Device is a Lie Detector
Agent Devices establish Connections amongst themselves through a process of engagement. The product of this process is something I have come to call a synapse - seeing as it appears remarkably similar to one of these.
Client Devices establish one or more Connections with one or more Agent Devices through a slightly different process, and although this process yields something similar to what the product for the Agent Devices is, the fact that the Client Device can engage with multiple Agent Devices (there is no real reason to say that a Client Device cannot engage a single Agent Device more than once, but I have yet to test such a scenario) allows the user of the given Client Device (should it be equipped with a View adapted to some medium) to detect lies.
Lie detection... how does this happen?
Well, the Client Device can't tell you who is doing the lying, but it can tell you that one or more of the Connections to the (serving) Agent Devices are sending information relating to one or more Elements that is inconsistent with one or more of the same Elements sent from one or more other of the serving Agent Devices; indeed, a form of lie detection. So, how does this work?
Summarily, Elements are sent from an Agent to a Client Device through tokens, and each token is kept by the Client Device until the token's serving Agent Device tells the Client Device to remove it. An Element is recreated as a composite of the different tokens. Hence, the term that I use to describe the exchange of a token: "projection" makes each token a little bit like a light beam projecting an image on to a screen. The more light sources one has, the more accurate one might expect the image to be.
Lies can be detected in two basic ways: 1. token inconsistency; should the details of any set of tokens describing an Element differ in ways that another set of tokens describe the same Element, then that Element is "token-inconsistent". 2. Element inconsistency; relating to the inter-Element relationships between two or more Elements, "Element-inconsistent" relationships become apparent when these relationships (say, between an Affiliation and its component Account) are found to contradict through Elements only once they are assembled. In the case of the Affiliation - Account relationship, this element inconsistency will become obvious if, when composing the Affiliation from its tokens, one or more of these tokens discloses a differently identified Account than the Account assembled from its tokens which is stating that it points to the given Affiliation.
In the case of the Element-inconsistent Affiliation - Account relationship, these relationships only become evident at the time of the Elements' assembly within the Client Device to which the tokens have been projected.
Such contradictions could point to some problem with the serving Agent Devices, but yet again, they probably also point to nefarious intent of the operators of the serving Agent Devices. So, if you're a Clique Space user, and you don't trust the opinion of the person operating a singular serving Agent Device, seek a second (or perhaps a third or a fourth) opinion and ensure safety in consensus through simultaneous Connections to multiple serving Agent Devices; preferably ones which each are operated by different individuals. No serving Agent Device's operator would (nor should they) ask that you only connect to a single Agent Device, or only restrict your connection to those Agent Devices operated by a given individual. If they do ask you, then just lie and say "of course I am".
Thursday, November 10, 2011
Clique Space(TM) Progress Report. Another possible milestone... perhaps.
My prototype Agent Device appears to have many of the functional attributes it needs to set itself up, project Elements to connected Client Devices (capable of viewing Elements), and respond to commands from an administrator's Client Device, itself capable of viewing Elements albeit currently only through console output. Very nice.
I have often likened programming to crochet; sure as I am are the similarities between a nicely crafted algorithm and a nice lace doily. Clique Space, however, is a veritable Persian carpet.
Sunday, October 9, 2011
What use the Active Affiliation?
The Active Affiliation Element was intended as a kind of state-object that connected devices would acquire to indicate that the connection was authenticated. Devices that possess a View would then use their Active Affiliation to form a Clique with their serving Agent Device. Other devices that did not receive View information from the serving Agent Device would acquire Participants when engaged with relevant other devices in Clique Space, otherwise devices would possess a lone Active Affiliation when not engaged with other devices in any collaboration.
Now that I'm developing the concept, my understanding of the relevance of each of the pieces shifts and one consequence of this appears to be that I'm being drawn to the conclusion that the Active Affiliation is redundant, and the Participant can take on the intended 'authentication' purpose of the Active Affiliation implying that media spines might only have three vertebrae: the Media Profile, Connection, and Participant Elements. The serving Agent Device's Participant and the bipartite Clique in which both Participants exist, is generated for all devices -- the mode of which differs with the type of device and what state information it exchanges with the serving Agent Device through which the device is connected to the Clique Space in question.
All this leads more directly to the convenience, or rather, the very point of Clique Space: Cliques model collaborations. And because every device has to "collaborate" with a serving Agent Device, at a minimum every device must form a Clique with its serving Agent Device before any View or log-based device can observe this collaboration and discover other collaborations this device might be involved in which are being modelled (and possibly controlled) by the Clique Spaces over which their Cliques span.
Now, my proof-of-concept has been evolving for some time. While the removal of the Active Affiliation from the core data model will ultimately simplify the implementation, this procedure is to going to be messy. Obviously, I'm going to consider this issue for some time yet while other issues are worked through.
Sunday, September 25, 2011
Clique Space(TM) administrator Client Device command grammar.
The notation I have ascribed to is my own, developed as I put the grammar together; it should be fairly easy to work out, and although the elements "schema:label
Here it is:
command:=
command-clause:without-delegate|
{keyword:with value:delegate-identifier command-clause:with-delegate}
command-clause:without-delegate:=
command-clause:disband|
{keyword:list command-clause:list-without-delegate}|
command-clause:connect|
command-clause:show-or-hide-Clique-Space|
keyword:help|keyword:exit
command-clause:list-without-delegate:=
command-clause:list-Clique-Space|
command-clause:list-structure|
command-clause:list-Clique-without-delegate|
command-clause:list-Element-without-delegate|
keyword:rmi|
keyword:tokens|
keyword:cliques|
keyword:cliquespaces|
keyword:elements
command-clause:list-Clique-Space:=
keyword:cliquespace value:Clique-Space
command-clause:list-structure:=
keyword:structure keyword-clause:Element-type value:Element-identifier
command-clause:list-Clique-without-delegate:=
keyword:clique [value:Clique]
command-clause:list-Element-without-delegate:=
keyword:element keyword-clause:Element-type value:Element-identifier
command-clause:connect:=
keyword:connect value: Agent-Device-name
[keyword:accountprofile value:Account-Profile-name]
[keyword:cliquespace value:Clique-Space-name]
command-clause:show-or-hide-Clique-Space:=
keyword:show|keyword:hide value:Clique-Space-name
command-clause:with-delegate:=
command-clause:Particpant-adapter|
command-clause:Active-Affiliation-adapter|
command-clause:Connection-adapter
command-clause:Participant-adapter:=
command-clause:list-with-delegate|
command-clause:disband|
command-clause:join|
command-clause:leave|
command-clause:deactivate-other|
command-clause:form-other|
command-clause:activate-other|
command-clause:disconnect-other|
command-clause:create|
command-clause:destroy|
command-clause:Active-Affiliation-adapter
command-clause:Active-Affiliation-adapter:=
keyword:deactivate|
command-clause:form-self|
command-clause:Connection-adapter
command-clause:Connection-adapter:=
keyword:disconnect|
{keyword:activate command-clause:activate-self}
command-clause:list-with-delegate:=
keyword:list command-clause:list-Clique-with-delegate|command-clause:list-Element-with-delegate
command-clause:list-Clique-with-delegate:=
keyword:clique delegate-token:Participant-adapter value:Clique-name
command-clause:list-Element-with-delegate:=
keyword:element delegate-token:Connection-adapter keyword-clause:Element-type value:Element-identifier
command-clause:disband:=
keyword:disband [value:Clique-name]
command-clause:join:=
keyword:join value:Clique value:Clique-Space value:Active-Affiliation-identifier*
command-clause:leave:=
keyword:leave value:Participant-identifier*
command-clause:deactivate-other:=
keyword:deactivate value:Active-Affiliation-identifier
command-clause:form-other:=
keyword:form value:Clique-name value:Clique-Space-name value:owner-Active-Affiliation-identifier
value:member-Active-Affiliation-identifier*
command-clause:activate-other:=
command-clause:activate-self value:Connection-identifier
command-clause:disonnect-other:=
keyword:disconnect value:Connection-identifier
command-clause:form-self:=
keyword:form [keyword:clique value:Clique-name] [keyword:cliquespace value:Clique-Space-name]
value:Active-Affiliation-identifier*
command-clause:activate-self:=
value:Active-Affiliation-identifier
command-clause:create:=
keyword:create
{keyword:account value:user-identifier}|
{keyword:accountprofile keyword:name [value:Account-Profile-identifier*]}|
{keyword:affiliation value:Account-identifier value:Account-Profile-identifier}
command-clause:destroy:=
keyword:destroy keyword-clause:non-spinal-Element-type value:Element-identifier
keyword-clause:Element-type:=
keyword-clause:non-spinal-Element-type|
keyword:mediaprofile|
keyword:connection|
keyword:activeaffiliation|
keyword:participant
keyword-clause:non-spinal-Element-type:=
keyword:account|
keyword:accountprofile|
keyword:affiliation
Friday, September 16, 2011
Clique Space(TM): A disengaging development.
Because Clique Space should be able to model any collaboration between (or even within) a device, Clique Space should be capable of modelling collaborations between its own components. Hence, this means modelling collaborations at two levels: 1; at the level of the engage/disengage Agent Device Clique Space's synapse, and 2; at the level of form/join/leave/disband Agent Collaboration Clique Space's Clique.
Now, it appears that I still have one substantial obstacle to realising a minimally functional prototype: the Agent Collaboration's pulse message. At this time, functional specifics of a pulse are very sketchy, and much more thought than has been the case up until now will be directed to this pulse thing. While I deliberate, I will revisit the Client Device with the hope of simplifying its command syntax. This will hopefully 1; make a demonstration easier to understand, and 2; allow me to add commands in a more orderly manner, which will hopefully simplify the introduction of commands concerning the pulse message.
The Client and Agent Devices are co-evolving components; a significant observable property of Clique Space's development process is how development alternates, and at times goes on simultaneously, between the Agent and Client Devices.
Monday, August 29, 2011
Clique Space(TM) Progress Report.
Anyway, a sufficient interface between the Agent and the Client Device appears to have been implemented, and so, most time of the near to medium term will now concentrate on what goes on between Agent Device instances: the Agent Device's and Collaboration's Clique Space. There is still much work to be done here.
Nose to the grindstone (or something like that)...
Monday, August 8, 2011
Coming together...
- indicate an Element's serving Agent Device through its EngagerParticipantIdentifier.
- prevent an errant (or nefarious, or even perhaps merely a narcissistic) user from giving an identifier a specific value; an identifier's value has no inherent meaning beyond its ability to uniquely identify an Element, and each Element is assigned an identifier who's value is currently a 40 character randomly generated upper-case alphanumeric string when the Element is created on it's serving Agent (or, indeed, Client) Device.
Just yesterday, I completed the projected Element's existential life-cycle by coding a method that "unprojects" Elements given an Element's identifier, and the delegate identifier of the serving Agent Device through which the given Element token has been obtained. It works. I can remove any Element describing any part of a projected Client Device's structure from any Client Device through which the command to unproject is issued. I am entirely confident that implementing a robust identity/anonymity mechanism using this ability to unproject any projected Element is not far away.