HotForestGreen is a very technical solution. You can build anything with it and do a lot of stuff, but if you are not one of the 100 programmers already familiar with the topics involved, it can be (and is) very abstract techno babble.
So in this page I will attempt to make it more understandable for those 7.000.000.000 people who are not in the know.
Why am I building HotForestGreen?
I believe that in the next five years, the “Internet of Things” will be big. I want to be part of that new thing and I want to build stuff with it now.
The problem is: there is currently no solution that does what I need to build the stuff I want to build.
What do I want to achieve?
One of the goals is to allow people to make their own Smart Spaces with the HotForestGreen software.
What are Smart Spaces?
Smart Spaces are environments, like buildings, which can interact with the people inside and which can respond to changes in the surroundings: like changes of temperature and light.
What is the problem?
These Smart Spaces will house a lot of different small computers with very specific tasks. Like: registering changes in the state of things; including doors opening and doors closing and people swiping their ID card past a reader. Each of these small computers might have to communicate to specific others to make things happen the way you want it to.
What does it solve?
HotForestGreen solves a lot of basic issues when you want to build these Smart Spaces, including:
- The communication between all the different objects in such a Smart Space
- Security and protection from breaking and entering in the communication lines.
- Security and protection from people who want to take over specific devices. For instance to open the door when you are away.
Basis: a Messaging System for objects
HotforestGreen is in the basis a messaging system for Objects. Compare it to e-mail or Twitter or an ICQ or Skype chat between small computer programs running on individual computers.
SandBoxes: Chat rooms for specific objects and topics
To keep things simple, each object can register to a specific SandBox, which is basically a chat room for specific topics.
This is why such Chat rooms are handy.
Lets say we have three objects called “John”. But “John 1” lives in the kitchen, “John 2” lives in the living room and “John 3” lives in the hallway.
Each “John” has a friend “Joe” to which he communicates all the things he experienced that day.
“Joe 1” only knows “John 1”. The moment “John 2” starts talking with “Joe 1”, “Joe 1” starts to be very confused.
We solve this problem of confusion by giving each “John/Joe” pair their own specific Chat room: “Kitchen”, “Living room” and “Hallway”. This way “John 1” will not confuse “Joe 3” and the reply of “Joe 2” will not confuse “John 1” and “John 3”.
Remote Objects: virtual representations of the real thing
“Joe” and “John” might not be able to see each other. Instead, they might use chat to communicate to each other.
Instead of talking to “Joe”, “John” uses a virtual “Joe”, called “Virtual Joe”. Everything “John” says to “Virtual Joe” is transmitted immediately to the real “Joe”.
On the other side, “Joe” also has a “Virtual John” that works the exact same way.
“Virtual John” and “Virtual Joe” are Remote Objects which represent the real thing. So taking this further:
When “Joe” lifts the arm of “Virtual John”, the arm of the real “John” will lift as well.
When the real “John” lowers his arm, “Virtual John” will lower his arm as well.
What is so handy about this?
A virtual object is easier to understand than a set of instructions. “Joe” does not have to think how to make “John” raise his arm. He simply has to do it on “Virtual John” and the real “John” will do so as well. All the messages needed to make the real “John” raise his arm are created by “Virtual John”.
Trusted Relationships and Trusted connections
When we apply no security at all, anyone can join “John” and “Joe”, create Virtual versions of them and start toying with them. As “John” and “Joe” are simple machines, this might lead to secrets spilling out of the house, or “John” and “Joe” doing things that will harm the owner of the house.
Like opening the front door to anyone who makes “John” open the door via “Virtual John”.
To keep things simple, we add a basic layer of security that operates on trust.
Here is how the Trusted Relationship works:
- “John” and “Joe” known each other since birth. They are part of the same group and have been told they can Trust each other.
- When “Mike” enters, “John” and “Joe” will basically refuse to even acknowledge “Mike” as they do not know him and do not trust him.
So whatever “Mike” is trying to tell “John” and “Joe” will be ignored by them.
If – however – “Mike” is a welcome guest, we might want to offer “Mike” some basic access to the house. Like using the bathroom and getting things from the table.
What we do not want is “Mike” to open the fridge, make “Joe” and “Mike” break anything and we do not want “Mike” to enter the bedroom.
The man in the middle to help people from outside
For this, we have a “man in the middle” who acts as a host. Lets call him “James”.
“James” understands the needs of a basic guest like “Mike” and also understands what this guest is- and is not allowed to do in the house.
“James” is trusted by all “Johns” and “Joes”, will never abuse them and can via the help of “Joe” and “John” cater specific needs of “Mike”.
“James” will also refuse to do all the things that might harm the house or break the rules of that house.
“Mike” is free to roam around the house, can do anything he is allowed to and can not do any harm. Unless he really wants to.
Why is the man in the middle useful?
In the real world you will be able to access services and facilities of smart spaces via mobile phones or your laptop.
If there is no security at all, malicious people can wreck up the place. If the security is too tight, the place will only be useful for people who are Trusted.
In the case of public spaces, you want to offer both free access to limited services to anyone who wants to and a protective solid wall between the outside world and the “helpers” that make things work for you.
The man in the middle negotiates between the open space and the secured helpers that make things work.
The man in the middle, “James” is software. Like “Joe” and “John”.