Connection machine

From Connection Machine
Jump to navigation Jump to search

Connection Machine

The MasterKube Connection Machine, is a Virtual_Machine that execute concurrent processes. The Connection machine converts the sequential processor into a concurrent machine. Using the Connection_Machine_Programming_Language (CMPL) concurrent problems can be defined and executed on Connection Machine.

In Connection Machine, Concurrency is solved by representing everything in a system as a process. The process components operating independently work together by interacting with each other. In connection machine parlance, each process component is called as an agent. The interaction between these agents are modelled as actions/signals. The CMPL, is used to specify these interactions. These actions/signals tell the current state of the process. This is unlike the present day IT systems, which uses algorithms to represent processes and there by concurrency. In fact solving concurrent processes in current day systems without deadlocks is a challenge.

How a system is expressed as process and its component interactions is given in the picture. A banking system consists of many accounts which interact with each other to move money. A representative example is shown in the picture with 3 accounts Joe, Ram and Chen. Each of these accounts have connections to deposit and to credit money respectively.

Moving Money as interactions
  1. Interaction on Deposit Connection of Joe begins the money transfer process from joe.
    1. The deposit connection has a reference to Credit connection. The Credit Connection tells which account the money gets transferred to. Specifying Credit Connection on Deposit Connection says to the Connection Machine to ensure credit connection binding (in this case Rams credit connection was chosen).
    2. The Connection Machine ensures that the interaction of Deposit connection in Joes account, will make it disappear.
    3. As Credit Connection of Ram binds On Joes Deposit Connection interaction, the connection machine will ensure Credit Connection on Ram to become invisible to prevent other interactions on Ram's Credit Connection.
  2. Reduces the balance in Joe (because deposit connection is atomic this balance will always have integrity).
  3. Sends the deposit amount thru the Credit connection to Ram, increasing the balance in Ram.
  4. Credit Connection in Ram appears again
  5. Deposit connection in Joe appears again.

Which agents are active (accounts in this case), which connections (Deposit and Credit) are active and what happens after a connection interaction happens is defined by the Connection Machine Programming Language. Making sure connection interaction is atomic, exposing open connections as hypertext, ensuring interacted connections disappear from view and ensuring the right connections become active as per the sequence in CMPL is the responsibility of the Connection Machine.

Connection machine manipulates connections to create Complex systems


How can I read state

All current systems are algorithmic and stores data in data bases. Specific data manipulation languages need to be learned to process this data. Unlike this, MasterKube Connection machine, stores data as Hypertext. There is no specific language that needs to be learned. Using a browser or any standard web application like javascript can be used to browse this hypertext data. A sample of request reply to get Connection Machine is given below:

To read all known PayGrade agents the following request is sent.

http://localhost:8080/MasterKube-Application/MasterKube/general/masterkube/PayGrade 

Connection Machine responds with all the PayGrade Agents/nodes available.

 
  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <Pids>
    <Pid>
        <Name>Leader</Name>
        <Uri>http://localhost:8080/MasterKube-Application/MasterKube/general/masterkube/PayGrade/PayGrade-1</Uri>
    </Pid>
    <Pid>
        <Name>KPI+KPF+CORE+LEADER</Name>
        <Uri>http://localhost:8080/MasterKube-Application/MasterKube/general/masterkube/PayGrade/PayGrade-2</Uri>
    </Pid>
   </Pids>
 


To know more about the PayGrade of Leader in this case PayGrade-1 Send this request to Connection Machine

  http://localhost:8080/MasterKube-Application/MasterKube/general/masterkube/PayGrade/PayGrade-1
 

TThe Connection Machine gives back the reply with all active connections to get state of PayGrade-1

 
  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <Actions>
    <Action>
        <Name>ChangePayGrade</Name>
        <Uri>http://localhost:8080/MasterKube-Application/MasterKube/general/masterkube/PayGrade/PayGrade-1/ChangePayGrade</Uri>
    </Action>
    <Action>
        <Name>SharePayGradeInformation</Name>
        <Uri>http://localhost:8080/MasterKube-Application/MasterKube/general/masterkube/PayGrade/PayGrade-1/SharePayGradeInformation</Uri>
    </Action>
   </Actions>
 


To know more about the PayGrade of Leader in this case PayGrade-1.Send this request to get the actual connection  to send to get more information that is available in SharePayGradeInformation   

   http://localhost:8080/MasterKube-Application/MasterKube/general/masterkube/PayGrade/PayGrade-1/SharePayGradeInformation
 
Connection machine will send back with actual signal name at this point in time for SharePayGradeinformation. This will change over time. 

   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <Names>
    <Name>
    <url>http://localhost:8080/MasterKube-Application/MasterKube/general/masterkube/PayGrade/PayGrade-1/SharePayGradeInformation/3/Tell</url>
    </Name>
   </Names>
 
To get specific information on SharePayGradeinformation Send the actual connection that the server send back on the earlier request. 
  
   http://localhost:8080/MasterKube-Application/MasterKube/general/masterkube/PayGrade/PayGrade-1/SharePayGradeInformation/3/Tell
 
 Connection Machine sends the reply with the contents of SharePayGradeInformation connection 

   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <TellSchema>
    <Element>
        <Name>Grade</Name>
        <Type>string</Type>
        <Value>Leader</Value>
    </Element>
    <Element>
        <Name>KPIWeightageInAppraisal</Name>
        <Type>number</Type>
        <Value>0.0000</Value>
    </Element>
    <Element>
        <Name>KPFWeightageInAppraisal</Name>
        <Type>number</Type>
        <Value>0.0000</Value>
    </Element> 
   </TellSchema>
 

Unlike in the current system, were information is navigated using SQL and other Data manipulation languages the whole Connection machine network presents itself as a hyperspace which is human readable and can be navigated with a standard browser or toolsets like java script. The massive difference is that, the whole information space now is directly open on cyberspace with no intermediary.

If the connection machine is hooked up to internet with a domain name then the connections will be participating in the global information space, protected of course by the standard web security protocols.

Motivation for Connection Machine

The Genesis of MasterKube Connection Machine, is the founder's experience in running the IT department (then called Management Information System department) for a billion-dollar corporation in the 90’s. The department was popularly known among the user community under the euphemism Mis-Information systems department. It is this dissatisfaction in the user community, despite the inhuman effort on IT staff part, that lead to the genesis of the big question Why. Why is that user community, so dissatisfied with the information systems being provided?

This search started with a goal to initially identify a language or tool which would make us more productive. The development was staffed with a small team of 4 programmers who were directly responsible for moving code into production. The overall principle was "you break it you fix it". This tool search went through all the different tools like Upper & Lower CASE, code-generation tools (Lansa, synon,Powerbuilder etc), Object-oriented-programming (smalltalk, Eiffel, Objective-C, etc). None of these toolsets had the fundamental needs that would meet the needs of our enterprise. But Y2K forced us move from our systems to a big disaster with the implementation of a very well-known ERP system. This doubled the founders resolve to seek a solution.

This journey of enquiry continued and finally came to a very surprising finding. I.e. Enterprise or for that matter any human endeavor is organized as a network and is a concurrent activity. As only sequential machines were available to implement Enterprise systems (which is a concurrent activity), all systems were built on these sequential machines. A clear case of golden hammer. i.e. Seeing every problem as a nail. This disconnect, of building concurrent problems on sequential machine, is the primary reason for the dissatisfaction. This continues even today. Is there a different way? Is it possible to create a concurrent machine so our enterprises are modelled directly?

It is this line of enquiry that gave birth to "Connection Machine". With the distributed nature of our problems (IOT) and the privacy/security legislations this is more relevant.

Fundamental Design choices of Connection Machine

There are fundamental changes to the Information Technology market place. The biggest of them is the distributed nature of the solutions and the increasing attention to the privacy and security of information. These were not the requirements when information technology was conceived in the 1950s. These broad changes have placed additional design vectors on Information technology.

Security & Privacy

Information technology machine and the languages were designed in the 1950s. These systems were locked up in computer data centers and were not networked. This meant that security besides physical security was not a consideration in designing the languages and the hardware of these systems.

But now, Security and Privacy is crucial part of information technology systems. As the systems and languages are from the earlier era, these two requirements are not part of the core design of hardware and the software. With new compliance needs (GDPR, PDPA_Singapore, etc) it is now mandatory that the core data systems have security and privacy is available by default.

MasterKube Connection Machine is designed for this new privacy and security era.

Machine independence from Programming for better security

Present day systems have two fundamental issues which makes them vulnerable

  • One is that the programs written execute directly on the processor with total control of data in processor and memory
  • The other is that when data comes over the network as bits it cannot be differentiated between code or data.

To avoid this there should be a separation of concern on the computer language and the machine on which it operates. The application programmer should not have security and privacy related concerns. It should be left to the way the security and the sophistication of the deployment. This separation of concern between the programming and execution leads to systems that are very secure and privacy compliant. Also when data comes over the wire, it should be coming only through valid connections at application level.

MasterKube connection Machine is built with these constraints and overcomes this as follows

  • It overcomes these problems by making CMPL and Connection machine have separation of concerns. For example, With Connection Machine Programming Language the programmer can only only turn on a signal. What connection or URL this signal is converted to is defined by the Connection Machine implementation. This separation of concern between the programming and implementation ensures better secure systems.
  • The whole state of the Connection Machine is exposed as Hypertext. The only way data can be accepted by the Connection Machine is only by interacting through these connections. This makes it easier to secure, as data can only thru an open connection.

Distributed Nature of the Applications

Computers were designed in the 1950s to execute standalone applications. These were applications that ran on a processor with data sitting on the same machine. There was no concept in the languages or the machine which specified remote location of data. Explicit programs had to be written which would block the existing program and get the data to continue processing. As far the program was concerned it was as though the data was sitting in memory in the same machine.

Increasingly this is not the case. With the movement to IOT and Internet of Everything, the applications of the future will be across many smaller machines or sensors. In this case, the these applications are called network applications. The current way of thinking will not apply in the Network era applications. It is this change in perspective that is argued in the founders article in ACM.

Interactive nature of present day Applications

When computers were discovered in the last century, most of the initial applications were to compute. But as we progressed and with the advent of internet, most of our applications do not compute, rather we interact with it (ERP, email, excel, web page, etc). But all our existing languages are computational, MasterKube connection machine address this anomaly.

Better software quality

Quality of software is good when it is delivered on time, its cost do not exceed budget, it works as designed, people use it and it meets the goals that drove the project. Present day software performs quite poorly along these lines. Fundamental challenge is that the world is concurrent and the software that finally runs runs on a sequential machine.

This mismatch from the problem and the solution implementation is some of the biggest challenges that is the reason for the poor quality of software projects.

Demand for better software productivity

MasterKube Connection Machine was designed to meet these design vectors.

How it is different from VonNuemann machine

dfdfdd

Mathematics of Connection machine

dfdfdd