Wanted: New architectures for IoT and Augmented Reality

Software technology changes rapidly. Many new tools and techniques arrive in the software engineering realm to take on old and new problems. There are still big architecture and implementation holes yet to be addressed. For example, as a few billion more smart phones, tablets and internet connected sensing devices come online across the world, how are they all going to discover and utilize all the available resources collaboratively?

One of the current problems with most existing architectures is data gets routed through central servers in a data center somewhere.  Typically software systems are still built using client/server architectures. Even if an application is using multiple remote sources for data, it’s still really just a slight variation. Service and data lookups are done using a statically defined address rather than through discovery. Even remote sensing and home automation devices barely collaborate locally and require a local router to communicate with a remote server in a data center.

In the past month, I have been to both the Internet of Things World and Augmented World Expo (AWE). At both of these excellent conferences, there was at least some discussion about the need for a better infrastructure

  • to connect devices in a way to make them more useful through collaboration of resources and
  • to connect devices to provide capabilities to share experiences in real time.

But it was just talk about the need. No one yet is demonstrating any functional capabilities in this manner.

On a side note: I saw only one person, out of 3000 or so, at the AWE conference wearing a device for augmentation. It was Steve Mann who is considered the father of wearables. I dare say that most proponents of the technology are not ready to exhibit it nor is the infrastructure around to support its use effectively. There is great work progressing though.

Peer-to-peer architectures used in file sharing and the architecture Skype uses start providing directional guidance for what is to come in truly distributed architectures. Enhancing these architectures to include dynamic discovery of software and hardware resources and orchestrating dynamic resource utilization is still needed.

There are a few efforts in development beginning to address some of the internet-wide distributed computing platforms needed for data sharing, augmented reality and machine learning. Those of you thinking of batch jobs or wiring up business services as distributed computing, this is not what I’m talking about. I am talking about a small footprint software stack able to execute on many different hardware devices with the ability for those devices to communicate directly with each other.

If you know about development efforts in this vain, I would like to hear about them.


Assimilator Introduction

Just a quick introduction to the Assimilator project that I have been working on. I will discuss it to some extent here as the project develops. Assimilator is and open source project hosted at SourceForge. It represents the next step in evolutionary development of distributed computing. It provides a platform for distributed application development which includes key capabilities required to execute distributed applications. Application development using this platform does not require development of handling the difficult aspects of distributed computing. The platform enables applications to be built as a collection of services that can be executed on a network where resources are available and may dynamically change. Service lookup and discovery, distributed events and transactions, service provisioning and deployment, and service management are all provided by the platform.

The open source environment allows free usage of the platform and encourages feedback from users on how to enhance features, extend capabilities and eradicate defects. Open source allows greater distribution of the platform hopefully leading to wider adoption of its use. Custom applications built with the platform will demonstrate platform capabilities and provide a means for individuals and organizations to generate revenue.

The primary goals of the project include:

  • Develop a distributed computing platform capable of dynamically managing and monitoring services in a network.
  • Develop the platform in and for the open source community to drive adoption of its use.
  • Develop the platform with the intent that it can be used for easy development of distributed applications.

Network includes running across the internet and on any device connected to it. The current version executes in WANs and work is underway to get it working across the internet. At which point it becomes feasible to start building social network applications and gaming environments that utilize available resources across peered devices.

A Different Social Networking Paradigm

Wouldn’t it be nice if you had control of all your social networking information in one location? Forget about keeping track of how many social network sites you have signed up with. Stop trying to remember which friends are using which networking site. Ignore having to cross link and make duplicate uploads. Wouldn’t it be nice to just consolidate all the information you want to share into topics and groupings the way you want to present it and only have to maintain it in one place?

It could be a location on your own personal laptop or one location hosted by your favorite ISP. It would be your collection of information, relevant to you, organized according to your preferences. Everyone already does this with their belongings. Why should I have to place my things someplace outside of my control just to share them, when I can define a link to the definitive resource?

Having your belongings scattered about across many websites is cumbersome and difficult to maintain. It’s much easier to have it generally located in the same place. I have all my stuff where I want it, you have yours where you want it.

Now I can share some of my stuff. I share only what I want to. The rest is private. Essentially each individual defines links to the information they want to share with others. Each individual presents a point of view of who they are. Nothing new here, we all do this in real life already. But remember I’m talking about information on my laptop.

Next, friends share information with each other about where their stuff is accessible. It would be a portal to their information. Now friends can see the presentation of other friends. They can see each others point of view or perspective. Each persons collection of information is still controlled locally but accessible between each other.

There will likely be common interests between friends. They could start a topic of interest. A set of information of similar interest. Essentially it is a collection of links back to the original information. Friends discover there is information about others being shared. Those friends can establish a group. They share similar interests, similar topics of interest.

So now individuals share their point of view, create topics of interest which others can contribute to and they can create, join or leave groups. Others may discover topics of interest and subsequently join groups base on similar interest. This starts to sound more like a real social network which individuals create from their perspective all from there own location, not across many different web sites. There are no accounts, no sign-up, no limitation on how information should be place, categorized or presented.

The concept of groupings can then be extended collections of groups. These would be communities. Groups would join and leave communities. Individuals would come and go as desired from the groups. It is very dynamic. The thing that always remains is the presentation of an individuals point of view and all the corresponding information that belongs to it.

All the information comes from individuals just as all the information on the internet today is posted audio, video, photos, text, etc. It is shared and discovered across peers rather than on web sites much like P2P sharing, but sharing links rather than files. Information will be tagged in multiple ways depending on its context and meaning. Hierarchical referencing should make it possible to access information of interest from multiple different points of view rather than from one perspective. Redundancy of information with multiple links of access discoverable across a distributed network approaches the mechanism required for universal memory. There are multiple entry points and multiple pathways to get to any bit of information.