Monday, February 16, 2015

Generic beauty.

I think I did something today that I might just label the "end of the beginning" for development activity on the CliqueSpace(TM) core implementation.

Something appeared finally to vault the generic structure: I discarded the notion of a "root" profile. Instead, I made the Participant implement the Media and Mode Profile's interfaces.

Many problems appeared to dissolve... perhaps.

Sunday, January 25, 2015

It Works! Part 1.

Finally, after 6.5 years of coding, Clique Space(TM) works... kind of.

But that's right... it does indeed do something non-trivial. An Agent Device will now engage and disengage one or more administrator clients. I just got it working... not more than 20 minutes ago.

The synapse: works.
The service: works.
The subscriber: works.
The subscription: works.
The context: works.
The payload: works.
The transmitter: works.
The device: works.
The signal: works.
The Element: works.
The principle: works.
The root profile: works.
The Participant: works.

These components comprise most of the implementation of Clique Space's real-time manifestation mechanism. This mechanism (for Agent Device - administrator client engagements only): works.

Now, I've gotta get two or more Agent Devices to engage themselves over a Sovereign's Clique Space. That is, I've got to get Agent Devices to form neural clusters based on a secret that is never shared between devices called "That Which is Sacred"(TM... perhaps?) - the Clique Spaces that manifest Sovereigns, modelled in a Clique(TM) called the Viscera(TM).

After that, I'll:
  1. try and get two or more Agent Devices from different Sovereigns to engage each other in a "Congressional(TM) (formerly known as an Agent Collaboration) Clique Space.
  2. try to make devices more robust and able to reconfigure engagements in adverse environmental conditions.

I think that the real-time reconfiguration under adversity is really going to take some time to nut out.

To the viscera and beyond...

.. gotta love all this TM'ing. Well, it is mine, so mits off!

Tuesday, December 9, 2014


A nightmare of confusion.

Recent time with Clique Space(TM) has dragged me into the dependency nightmare that is Java generics; a nightmare from which I might be awakening.

Clique Space code comes in two halves. The chassis is the basic Clique Space data structure definitions and implementation of functionality in relation to the sending and receiving of transmitters while the top half is the body of the specific implementation of a Clique Space aware device.

The halves are separated by a set of parameterised types that make the cute acronym disclosed in the title of this blog entry. The specific device implementation's body "clips on" to the generic chassis. Hence, the chassis defines these generic parameters, and the body completes their implementation. The terms used in the acronym are as follows:
  • CL - The basic Clique structure and mechanisms contained therein.
  • I - The Identity structure and mechanisms contained therein.
  • P - The basic Participant structure and mechanisms contained therein.
  • O - A more specific Participant structure relating to Owner Participants of synapses and involvements.
  • N - A more specific Participant structure relating to non-Owner Participants of synapses and involvements.
The acronym using the first three of these parameterisations has been around for a while. The final two types needed to be added to or "clipped on" the end of the fist three because I wanted a way to discriminate between the Owner and non-Owner Participants of a synapse or a service or viscera as involvements. One of the prime benefits of using generics is that one can check types at compile time, thereby reducing the size of one's code (not having to guard run time type casting) and ensuring one's code has fewer bugs.

Hence, these extra two types (O and N) are used to ensure that an Owner Participant is returned where an Owner Particpant is expected and a non-Owner Participant is likewise returned when expected. This type of discrimination is important in cases where structures derived from the basic Clique (the synapse, the service, and the viscera) are being manipulated. These specific Clique structures have extra functionality because this extra functionality helps a Clique space do the things I intend it to do.

A thing of beauty.

Wednesday, December 3, 2014

The Viscera and the Service

I explained the function of the viscera here, so I will dispense another explanation in this entry and explain what the service is. I'll then contrast the two.

The service, like the viscera, is a Clique. Unlike the viscera, it is strictly a bipartite Clique; the owner is always an Agent Device, and the other member is an external device (which could be a View device like an administrator client which is able to view or persist Clique Space activity). External devices cannot participate in viscera because they are not Agent Devices. Agent Devices are the only type of Clique Space aware device that manifest the functionality necessary to participate in viscera; Agent Devices are the neurons of a Clique Space.

Although services are not synapses (synapses are another type of bipartite Clique) they are used where synapses connect an Agent Device with a View device. A set of synapses do not connect an Agent Device to any other type of external device other than a View device. Hence, external devices that lack a View capability are known simply as drones.

A service implements a connection between an Agent Device and some type of external device, whether that device be a View device or a drone. All external devices siphon their state into a Clique Space and accept commands from a Clique Space through one or more Agent Devices through which each device shares a service.

The basic service represents the aggregate mechanism of exchange between an Agent Device and an external device that exists beyond the synapse mechanism that Clique Space aware devices use to share information. The service may define an interface known as a service delegate which defines how external device information is exchanged between the external device and its connected Agent Device. Services are strictly bipartite because they represent the mechanism of exchange between one external device instance and the Agent Device instance that serves it.

An Agent Device can stop serving a drone by simply disbanding the associated service, while more specifically for a View device, the connected Agent Device must also disband the associated inbound and outbound synapses.

A service is not a viscera. To lightly go over that which has already been explained, a viscera is a Clique that represents all the Agent Devices that contribute to the manifestation of a Clique Space. A viscera is multipartite, and can theoretically contain an unlimited number of participants.

However, a service is a viscera in a subtle but crucial way. Just as every Agent Device obtains a non owner visceral participant to be a member of a viscera, an external device must obtain a non owner service Participant to be counted as a member of a service. This symmetry is very handy because it allows many of the mechanisms of Agent Device - Agent Device engagement to be used in Agent Device - View device engagement. The convenience of this symmetry also appears to confirm that I remain onto a real possibility with this Clique Space thing.

Friday, November 14, 2014


Clique Space (TM). I am still doing it! It is evolving... not changing from my intentions, but growing in its ability to express my intentions.

Agent Devices and administrator clients can now engage and disengage. There are no less than three Cliques that are formed when an Agent Device engages an administrator client: two synapses and a service Clique. The two synapses are needed to represent and model the transmission channels from one device to the other and vice versa. The service represents the client/server relationship shared between the administrator client and the Agent Device.

The beautiful thing about the three Clique structure appears to be that two Agent Devices are going to use a similar three Clique engagement strategy as the Agent Device - administrator client uses, but in subtle but quite elegant way which is particularly suited to the purpose of the Agent Device - Agent Device engagement semantics. The synapses exist for the same reason: to transmit state between Agent Devices, but the service Clique is called something quite different because it has an altogether profoundly different function.

When an Agent Device is started with a new Sovereign Identity, it creates a Clique called a "viscera". I like the term; it actually encompasses the very core of the Clique Space concept: the self. Every sovereign Clique Space needs a viscera to function. The viscera discloses to every Agent Device which has joined it all members of the viscera. It allows the Sovereign to function by virtue of the fact that all member Agent Devices comprising the Sovereign are disclosed to all others through the viscera.

When two Agent Devices, being of the same Sovereign, engage one another, and the initiator engages a respondent otherwise not engaged by any other Agent Device, then both the initiator and respondent know that the respondent is joining the viscera, and the respondent (I think... this hasn't been done yet) will create and transmit the identity of a new viscera Participant back to the initiator. The initiator will advise all its co-engaged neighbours of the new member, and all these Agent Devices will do the same to their neighbours, thereby creating a wave front which will make its way through all the Agent Devices associated with the viscera.

The viscera would be comprised of very many Agent Devices (millions to billions and beyond) and would constitute the physical manifestation of an individual presence that would emerge from such a system. The term was chosen because it appears obvious to me that disbanding the viscera should be known as evisceration.

Tuesday, August 19, 2014


Here's something that has been developing for some time.

A Clique Space models the world in which it is manifest. That was always the intention, only now, I think I'm observing the mechanisms in a near final form. The Quale class was mentioned earlier in reference to the Escher interface, but recently, I managed to merge functionality from the CommunicableQuale class into Quale class so that I could remove the CommunicableQuale class.

Anyway, I wrote some comments about what qualia are to Clique Space inside the Java source module, and have decided to create a blog that quotes them. Here they are:

  • The terms "Quale" and "Qualia" appear as contentious terms in studies on the philosophy of mind. However, in Clique Space, they are used as a label for a defined structure. Because of the term's contentious history, its use here may be appropriate to some and may not be to others; I don't really care because it is ultimately just a label for a mechanism implemented in a computer language.

    An instance of a quale in Clique Space represents a particular state that one or more devices connected to the Clique Space may be expressing at a point in time. Qualia are converted into signals and transmitted between Clique Space aware (CSA) devices as context when each of these CSA devices enter and leave subscriptions. A subscription represents the association of a particular quale to a particular instance of a principle. Each principle instance is uniquely associated with a particular instance of an Element. Instances of Elements are also qualia.

    This Quale interface has similarities to the terms usage in philosophy. Because qualia exist independently of their subscriptions, one quale can appear in multiple subscriptions in circumstances where this modelling is appropriate.

    A Clique Space quale defines a state for conveying the very abstract notion of "what it is like" to have knowledge about some sensory state. For instance, a quale with a description "Colour [Red]" may be the subject in a subscription signifying that a camera pixel sensitive to red light is active, and this same quale also could also be used in another subscription to mean that some cognitive process within a (Clique Space) mind could be imagining something coloured red. Being that the quale instance lacks a context (the task of assigning context is delegated to subscriptions, and the Context class is a proxy object which is used to convey this context from one CSA device to a neighbouring CSA device), qualia represent abstract qualities which can be shared amongst phenomena to represent common phenomenological properties.
I thought about quoting some code, but at the moment, I couldn't be bothered fiddling with mark up. Maybe I will later. I hope this is interesting to someone...

Friday, May 16, 2014

The Droste Effect

Some of the drawings by M.C. Escher (notably this one) are known as Droste Effects. I have cited Escher's "Prentententoonstelling" because Escher expressly highlights the impossibility of his drawing: it's where he puts his signature.

Clique Space creates an environment which models that which is motivated to model. As such, it appears (at least to me) that Clique Space does in Java SE what Escher does in his lithographs. However, I think that my construction of this phenomenon is a necessary component to the concept, even though I did not realise this necessity was evident when I first conceived the core components that make up the Clique Space data model back in 2004.

I'll throw caution to the wind and talk about some Clique Space mechanics in this entry, because I think the phenomenon I am disclosing here is a priceless example of the power of Clique Space. In any rate, I'll be light on specifics so I might merely pique the reader's interest to the extent that they might want to get in contact with me. All contact is welcome, especially from those of us who have a lot of money.

The core data model of Clique Space includes the definition of seven Elements: the Sovereign, the Media and Mode Profiles, the Connection, the Affiliation, the Identity, and the Participant. All of these Elements are also qualia, and each Element except the Sovereign is a communicable quale.

Each Element instance is uniquely and universally identifiable: to keep to this intent, each Element class is paired with its own identifier class. Hence, all Element classes extend the "Element" class, and all identifier classes extend the "Identifier" class. Every class except the Sovereign implements the "CommunicableQuale" interface, and this interface includes an "asSignal" method which generates a specific signal (a copy of the associated identifier's value) when a given device wishes to transmit the fact that something has happened to the given communicable Element.

Creation of the identifier is delegated to the Element class's constructor. This is all good; the Element's constructor can use Java generics in some wonderful ways to call back to the subclass implementation, creating the type of identifier required. However, to do this, one observes the ejection of a nugget of impossibility inherent also in the drawings of Escher. This nugget is the self-referential nature of how the implementation of those communicable Elements effects the extension of the Element class to implement the Sovereign.

To keep a long story short (and the implementation specifics safely distant), all Elements (including the Sovereign) must extend the "Element" class. All Elements (except the Sovereign) are communicable Elements, and yet even the Sovereign, though it does not use the same call-back mechanism to create its identifier, must provide something (let's call it a mechanism that caps the naked contradiction) to insert as the thing that implements the communicable side of a communicable Element's nature.

The solution to this gordian knot is to use Java generics to create the most elegant logical relationships: all Elements except the Sovereign indicate themselves as their communicable quale. The Sovereign, possessing no ability to be communicated, specifies a dummy (unimplemented because it is never called) interface that covers the naked contradiction. I have likened this particular interface to be like the presence of Mr Escher's signature in his "Prentententoonstelling" image, and have thus called this interface the "Escher".

Et voila:
public interface Escher<
 CL extends Clique<CL,I,P>,
 I extends Identity<CL,I,P>,
 P extends Participant<CL,I,P>>
extends CommunicableQuale<CL,I,P,Escher<CL,I,P>>{/*Declare nothing.*/}

Hence, I believe that at the moment, the "Escher" interface is an effective mechanism that pays a dry reference to the universality of the phenomenon that I am attempting to address.