Friday, January 21, 2011
Thursday, January 13, 2011
Contact management and chat
Thanks to the central pill.cat server it is possible to search for users since all their profiles are available there because it is a part of the registration process.
It is possible to search for contacts by name, e-mail address and agent e-mail address. This is not really advanced, but works great for now.
As the user is located using the directory service a contact request can be sent which can be accepted or ignored.
In the case when a contact request is confirmed, communication become possible. Also status updates can be seen only after the confirmation is done. In other words the user can not see who is online unless his request was not confirmed.
Chat
At the moment it looks like as any other simple chat system. If you click on a user who is online a new window pops up and you can start to type while on the other side a new window appears with your first message etc.
The trick
Until this point everything is implemented as written, but here comes the new stuff.
The trick here is that we want to use chat not just for Human to Human H2H communication but Human to Agent H2A and for Agent 2 Agent A2A communication at the same time.
H2H:
Ordinary chat between users.
H2A:
My agent need to take a decision, so ask me (the user) what to do. For example
-A: I have received a question about rocket science, but I have not found anything according to it, what should I do? ignore, ask someone else and mediate, or you can give me the answer right now....
A2A:
My agent ask my friend's agent according to a question and it answers automatically since this is the policy set by my friend. Than my Agent opens a chat window and shows me the answer which is H2A way.
The question how to distinguish these 3 types in a level of the user and in terms of message format.
H2H:
Nothing special, messages sent as plain text.
A2A:
If 2 agents communicates, the agents must know that these messages are intend for agent use therefore not to show to the user. Furthermore a couple of other parameters must be inside the message like deadline, priority, type of the message (Question, Answer...). To do this we should use some special marks in the messages.
H2A:
This is more like user interface issue than message format. If an agent asks something from the user like what should I do it is clear that the user answering to the agent. In fact it has nothing to do with the chat protocol, because not even use the chat system only the GUI is the same. The issue here is to develop a set of commands to be able to tell to the agent what to do.
To start a chat with your agent will be easy (in order to set special commands) because the agent will be among the contacts.
For example: I would like to ask my agent to do social search according to a question. I click on my agent icon and type my question...
On the other hand I may want to add commands to my agent during a chat with someone according to that particular chat session. In this case another tab should be provided for the chat window which would receive commands for my agent according to that chat.
It is possible to search for contacts by name, e-mail address and agent e-mail address. This is not really advanced, but works great for now.
As the user is located using the directory service a contact request can be sent which can be accepted or ignored.
In the case when a contact request is confirmed, communication become possible. Also status updates can be seen only after the confirmation is done. In other words the user can not see who is online unless his request was not confirmed.
Chat
At the moment it looks like as any other simple chat system. If you click on a user who is online a new window pops up and you can start to type while on the other side a new window appears with your first message etc.
The trick
Until this point everything is implemented as written, but here comes the new stuff.
The trick here is that we want to use chat not just for Human to Human H2H communication but Human to Agent H2A and for Agent 2 Agent A2A communication at the same time.
H2H:
Ordinary chat between users.
H2A:
My agent need to take a decision, so ask me (the user) what to do. For example
-A: I have received a question about rocket science, but I have not found anything according to it, what should I do? ignore, ask someone else and mediate, or you can give me the answer right now....
A2A:
My agent ask my friend's agent according to a question and it answers automatically since this is the policy set by my friend. Than my Agent opens a chat window and shows me the answer which is H2A way.
The question how to distinguish these 3 types in a level of the user and in terms of message format.
H2H:
Nothing special, messages sent as plain text.
A2A:
If 2 agents communicates, the agents must know that these messages are intend for agent use therefore not to show to the user. Furthermore a couple of other parameters must be inside the message like deadline, priority, type of the message (Question, Answer...). To do this we should use some special marks in the messages.
H2A:
This is more like user interface issue than message format. If an agent asks something from the user like what should I do it is clear that the user answering to the agent. In fact it has nothing to do with the chat protocol, because not even use the chat system only the GUI is the same. The issue here is to develop a set of commands to be able to tell to the agent what to do.
To start a chat with your agent will be easy (in order to set special commands) because the agent will be among the contacts.
For example: I would like to ask my agent to do social search according to a question. I click on my agent icon and type my question...
On the other hand I may want to add commands to my agent during a chat with someone according to that particular chat session. In this case another tab should be provided for the chat window which would receive commands for my agent according to that chat.
Registration/ Login
- User needs a Google account to start with. It is recommended to register a new one because the agent may use chat to communicate on behalf of you.
- After starting pill.cat the user is asked to provide this account information
- Check if the account is valid (Google)
- Check is there a profile in the local DB according to this account
- If there is, user can start to use the system
- If no, pillcat looks for online account on the central server
- If there are an account it takes and stores locally and start the system
- If there are no account online the user is asked to fill a simple form to register
- After registration the server stores the profile as well
This way, your personal settings are not lost even if you were forced to reinstall your machine plus you can search for friends based on their names and other parameters using the server.
pill.cat registration/ login process
pill.cat communication 2.0
In the next version we will be using XMPP messaging protocol instead of e-mails. But in fact e-mail will remain as backup and a lot of features will keep using it such as the "pill it" web button, because it is asynchronous.
But it will be enough to check the mailbox way less frequently (every 10 minutes for example) which will decrease both network and client load.
The following diagram depicts the overview of the new architecture. I know it looks quite similar than the previous one, but it looks nicer due the better tool I used to draw it and of course it is very different. I explain the differences right after the image.
But it will be enough to check the mailbox way less frequently (every 10 minutes for example) which will decrease both network and client load.
The following diagram depicts the overview of the new architecture. I know it looks quite similar than the previous one, but it looks nicer due the better tool I used to draw it and of course it is very different. I explain the differences right after the image.
pill.cat network architecture overview
As you can see there are a pill.cat server on the image with a huge database sign. This also means that we are having a centralized approach here. This is because we need to have a registry of all users including their addresses and in the future their reputation values according to skills and topics. If you want to know more about the reasons please read the previous post.
The communication between the clients (pill.cat agents and human users using desktop applications) is done via Google's services. The reason why is that it is reliable (so far), scaled up enough, well documented, free and of course we don't need to maintain. The drawback though is that we are relying on 3rd party. But here is the answer, as we can not stand it any-more we can switch to own servers using open source XMPP solutions in no time. Than you can substitute the name of Google with pill.cat infrastructure.
Of course from that time all scaling and maintaining is ours, so it might be a good idea to have some p2p solution at that time, although we always will need central entities in order to keep yellow pages and other cool stuff up.
But how does it look like in practice? This is what the following posts will explain in detail.
Wednesday, January 12, 2011
pill.cat communication theoretical discussion.
For the social search service pill.cat is implementing the AskNext protocol top of the well known e-mail system. It means that if a user ask a question, the agent of the user will first look for answers in the local knowledge base, than it asks the contacts of the user/agent. If a contact is not able to answer, it can ask a contact of his. This way a question can be asked from the contact of a contact of a contact ….etc.
The evaluation of who should be asked is not done yet, but it is intended to use a trust model which is aware of domains. It means that a user can be trusted in one topic while disregarded in another.
In reality the agents asks each contacts without any decision making, but this is the very first approach only.
Originally AskNext is a peer 2 peer protocol, but in practice we use a central server in order to provide a yellow pages service to find contacts.
Since we need to have a central registry of all users the question emerges: Why do we need to get connected with others via a series of contacts when we already have a registry containing everyone?
The very first answer is because you trust your contacts more and this way it is a more social and human like way to get information.
It sounds reasonable, but think it over a little bit. Let’s suppose you want to get your washing machine fixed.
If you adopt this idea and apply it on QA systems with agents you realize that it is actually a good idea.
Conclusion
The original AskNext protocol is a wonderful idea with all it’s bottlenecks and advantages. But since in the real implementation we do need to know at least the address of others and therefore we need a central yellow pages service we should take advantage of this architecture.
In other words, besides we could ask our friends and the can ask friends of their friends etc, we can find and get contacted with agents and users in a direct fashion based on yellow pages with profiles and global reputation. After all these temporally connections could become permanent aka the newly contacted users could add each others to their contact lists.
In the next post, I will give a detailed description how do I envision this new idea. How to realize it quickly with existing tools and services and how can the new chat system make the e-mail solution more complete and more intuitive to use.
The evaluation of who should be asked is not done yet, but it is intended to use a trust model which is aware of domains. It means that a user can be trusted in one topic while disregarded in another.
In reality the agents asks each contacts without any decision making, but this is the very first approach only.
Originally AskNext is a peer 2 peer protocol, but in practice we use a central server in order to provide a yellow pages service to find contacts.
Since we need to have a central registry of all users the question emerges: Why do we need to get connected with others via a series of contacts when we already have a registry containing everyone?
The very first answer is because you trust your contacts more and this way it is a more social and human like way to get information.
It sounds reasonable, but think it over a little bit. Let’s suppose you want to get your washing machine fixed.
- First if you had a contact of professional handy-man who fixes these things and you trust him, you will make your call.
- At the second place you may ask your friends to offer someone and than you will make a direct call, maybe you will refer to your friend. Also if your friends’ friends’ know someone who could help you is always great especially if it is not in 2 weeks delay.
- Finally you will get a yellow pages or google and find a service.
If you adopt this idea and apply it on QA systems with agents you realize that it is actually a good idea.
Conclusion
The original AskNext protocol is a wonderful idea with all it’s bottlenecks and advantages. But since in the real implementation we do need to know at least the address of others and therefore we need a central yellow pages service we should take advantage of this architecture.
In other words, besides we could ask our friends and the can ask friends of their friends etc, we can find and get contacted with agents and users in a direct fashion based on yellow pages with profiles and global reputation. After all these temporally connections could become permanent aka the newly contacted users could add each others to their contact lists.
In the next post, I will give a detailed description how do I envision this new idea. How to realize it quickly with existing tools and services and how can the new chat system make the e-mail solution more complete and more intuitive to use.
Tuesday, January 11, 2011
automatic comments
Apart from being able to publish posts with the pill.cat personal agent application on your blogs,now you are able to write comments as well.
Current (initial version)
Current (initial version)
- User is able to write comments automatically on any of his blogs simultaneously.
- The process is scheduled and repeated using an interval timer. (Although first execution is instant.)
- It is possible to stop the automated process any time.
- User has implicit control over which posts should be commented by defining rules like post must be newer than, or the last comment must be not mine...
- User has no explicit control over which posts should be commented. So user can not say, that blog X post number Y.
- The comments are results of automatic searches on the local knowledge base where the query is generated from the original post. If there are no results found, pill.cat generates stitched content using web mining based on a seed which comes from the original post and/or the latest comment.
The screen-shot has 3 main sections to explain usage:
- First user needs to click on the publisher tab, in order to get the interface.
- Than it is needed to select the blogs we want to publish comments. (If the list is empty, user must go back to the social tab (little blue bird icon) and add a few sites).
- Set the parameters for the process:
- Posts must be newer than
- Choose posts randomly
- Comment on posts where the last comment is not the user's. (In other words the comment will be an answer/reaction to the last comment)
- Use local knowledge. It means that pill.cat tries to search on local data first and in case of failure generates new content. Otherwise it goes with content generation immediately.
- Interval in minutes between 2 publishing event.
Future version:
- We need to fix spelling problems on the interface
- More options to select appropriate posts
- Advanced ways to create search queries and seeds for content generation in order to be able to write comments which has more sense in the given context.
- Connecting social search, although SS is an asynchronous process and may return with results only after a long period of time if there are any results at all. But we will investigate, how could we connect SS with automatic publishing.
- Explicit control on which posts should be commented.
- Possibility to review comments manually before publishing.
We are looking forward your opinion, so feel free to write comments.
Monday, January 10, 2011
pill.cat gets live chat
So far agents could communicate via e-mails with each other.
It was nice to start with, but it was slow and quite unreliable since we were rely on mail servers of others.
Now we have XMPP instant messaging, which is lot faster, full with cool features like live presence status feedback, possibility of voice, video transfer cetera. Not to mention that apart from agents, users can immediately contact with each other directly.
In this early stage we are using the gtalk infrastructure, so we still rely on google, but I have successfully installed a very impressive open-source XMPP server called Openfire which could be solve our dependency problem.
We are using a nice Java library Spark to unleash the possibilities of this technology in our client side.
What we have so far up and running:
It was nice to start with, but it was slow and quite unreliable since we were rely on mail servers of others.
Now we have XMPP instant messaging, which is lot faster, full with cool features like live presence status feedback, possibility of voice, video transfer cetera. Not to mention that apart from agents, users can immediately contact with each other directly.
In this early stage we are using the gtalk infrastructure, so we still rely on google, but I have successfully installed a very impressive open-source XMPP server called Openfire which could be solve our dependency problem.
We are using a nice Java library Spark to unleash the possibilities of this technology in our client side.
What we have so far up and running:
- Connection to gtalk service
- live presence status feedback (who is online)
- contact requests
- chat with multiple users
- new message notifications
Further plans:
- Integrate chat with the agent-communication platform (substitute e-mail system)
- Integrate gtalk buddy lists with the current contact management system
- Develop an elegant method for agent 2 human communication
What is pill.cat?
In nutshell:
pill.cat is a tool so called personal agent which helps you find information, get your questions answered by your close friends and help you self-promote on the Internet.
In a more technical point:
pill.cat is a complex software system which consist of a bunch of servers providing web services and client applications which are running on the users' machines.
Basically the clients indexes any information the user provides and gives access to. This processed information will form the personal knowledge base.
Agents:
This knowledge is maintained by the user on one hand and on the other hand the client application is a kind of intelligent agent, which is able to help the user to use this knowledge.
In other words each user has a client which is an agent in fact and these agents are able to represent their owners in many situations like answering e-mails automatically.
Social search:
The agents of different users can be connected thus forming a social network where users and agents can communicate with each others. Simply a user can add his friends to his agent's contact list and from that time live chat and agent 2 agent communication can be established.
But what is it good for? First of all it allows users to communicate as they do in other communication systems such as ICQ or messenger, but in addition if a user has a question he can use his agent to find a relevant answer automatically by asking his friends agents which is eventually a new way of search in a more social way. This is what we call agent guided social search. It can be automated, because under certain circumstances the agents may have access to the users personal knowledge base according to pre-defined security settings and they are able to evaluate on a level that an answer is relevant or not. To do so pill.cat is using advanced Natural Language processing technologies.
Self promotion:
Apart from social search, personal knowledge base and agents pill.cat has another aspect which is worth to mention (self promotion).
With pill.cat a user can connect to all his social networks using a single application. So you can connect your blogs, your Facebook or your twitter accounts. You can post simultaneously by using your agent.
This is not that new itself indeed. But if you add the facts to the picture that you can generate any kind of content out of a single sentence automatically using your local knowledge and web mining techniques and post the resulting content after review or even automatically. Than you will get a new unique tool which could potentially help you out of the burden of every day social expectations.
It sounds crazy we know, but we will clarify this part more in details in further posts.
pill.cat is a tool so called personal agent which helps you find information, get your questions answered by your close friends and help you self-promote on the Internet.
In a more technical point:
pill.cat is a complex software system which consist of a bunch of servers providing web services and client applications which are running on the users' machines.
Basically the clients indexes any information the user provides and gives access to. This processed information will form the personal knowledge base.
Agents:
This knowledge is maintained by the user on one hand and on the other hand the client application is a kind of intelligent agent, which is able to help the user to use this knowledge.
In other words each user has a client which is an agent in fact and these agents are able to represent their owners in many situations like answering e-mails automatically.
Social search:
The agents of different users can be connected thus forming a social network where users and agents can communicate with each others. Simply a user can add his friends to his agent's contact list and from that time live chat and agent 2 agent communication can be established.
But what is it good for? First of all it allows users to communicate as they do in other communication systems such as ICQ or messenger, but in addition if a user has a question he can use his agent to find a relevant answer automatically by asking his friends agents which is eventually a new way of search in a more social way. This is what we call agent guided social search. It can be automated, because under certain circumstances the agents may have access to the users personal knowledge base according to pre-defined security settings and they are able to evaluate on a level that an answer is relevant or not. To do so pill.cat is using advanced Natural Language processing technologies.
Self promotion:
Apart from social search, personal knowledge base and agents pill.cat has another aspect which is worth to mention (self promotion).
With pill.cat a user can connect to all his social networks using a single application. So you can connect your blogs, your Facebook or your twitter accounts. You can post simultaneously by using your agent.
This is not that new itself indeed. But if you add the facts to the picture that you can generate any kind of content out of a single sentence automatically using your local knowledge and web mining techniques and post the resulting content after review or even automatically. Than you will get a new unique tool which could potentially help you out of the burden of every day social expectations.
It sounds crazy we know, but we will clarify this part more in details in further posts.
Subscribe to:
Posts (Atom)